From buildbot at python.org Sat Sep 1 04:04:15 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 01 Sep 2007 02:04:15 +0000 Subject: [Python-checkins] buildbot warnings in sparc Ubuntu dapper 3.0 Message-ID: <20070901020532.191E81E4015@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu dapper 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20dapper%203.0/builds/1 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: barry.warsaw,collin.winter,eric.smith,georg.brandl,guido.van.rossum,kurt.kaiser,martin.v.loewis,neal.norwitz,thomas.heller,thomas.wouters,walter.doerwald Build had warnings: warnings test Excerpt from the test logfile: 5 tests failed: test_codecmaps_jp test_codecmaps_kr test_email test_ioctl test_normalization Traceback (most recent call last): File "./Lib/test/regrtest.py", line 594, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_codecmaps_jp.py", line 64, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 534, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 622, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 531, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 523, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 269, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 272, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 259, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 369, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 877, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 914, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 872, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 743, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 702, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 686, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/socket.py", line 367, in create_connection raise error(msg) IOError: [Errno socket error] (60, 'Connection timed out') Traceback (most recent call last): File "./Lib/test/regrtest.py", line 594, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_codecmaps_kr.py", line 41, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 534, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 622, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 531, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 523, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 269, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 272, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 259, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 369, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 877, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 914, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 872, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 743, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 702, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 686, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/socket.py", line 367, in create_connection raise error(msg) IOError: [Errno socket error] (60, 'Connection timed out') ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) ====================================================================== ERROR: test_ioctl (test.test_ioctl.IoctlTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_ioctl.py", line 23, in test_ioctl r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ") IOError: [Errno 14] Bad address ====================================================================== ERROR: test_ioctl_mutate (test.test_ioctl.IoctlTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_ioctl.py", line 32, in test_ioctl_mutate r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) IOError: [Errno 14] Bad address Traceback (most recent call last): File "./Lib/test/regrtest.py", line 594, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_normalization.py", line 92, in test_main open_urlresource(TESTDATAURL) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 259, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 369, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 877, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 914, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 872, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 743, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 702, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 686, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/socket.py", line 367, in create_connection raise error(msg) IOError: [Errno socket error] (60, 'Connection timed out') make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Sep 1 08:36:11 2007 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 1 Sep 2007 08:36:11 +0200 (CEST) Subject: [Python-checkins] r57859 - in python/trunk: Misc/NEWS Tools/msi/msi.py Message-ID: <20070901063611.41AE31E400C@bag.python.org> Author: martin.v.loewis Date: Sat Sep 1 08:36:03 2007 New Revision: 57859 Modified: python/trunk/Misc/NEWS python/trunk/Tools/msi/msi.py Log: Bug #1737210: Change Manufacturer of Windows installer to PSF. Will backport to 2.5. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Sep 1 08:36:03 2007 @@ -951,6 +951,8 @@ Build ----- +- Bug #1737210: Change Manufacturer of Windows installer to PSF. + - Bug #1746880: Correctly install DLLs into system32 folder on Win64. - Define _BSD_SOURCE, to get access to POSIX extensions on OpenBSD 4.1+. Modified: python/trunk/Tools/msi/msi.py ============================================================================== --- python/trunk/Tools/msi/msi.py (original) +++ python/trunk/Tools/msi/msi.py Sat Sep 1 08:36:03 2007 @@ -194,7 +194,7 @@ schema, ProductName="Python "+full_current_version, ProductCode=product_code, ProductVersion=current_version, - Manufacturer=u"Martin v. L\xf6wis") + Manufacturer=u"Python Software Foundation") # The default sequencing of the RemoveExistingProducts action causes # removal of files that got just installed. Place it after # InstallInitialize, so we first uninstall everything, but still roll From python-checkins at python.org Sat Sep 1 08:36:49 2007 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 1 Sep 2007 08:36:49 +0200 (CEST) Subject: [Python-checkins] r57860 - in python/branches/release25-maint: Misc/NEWS Tools/msi/msi.py Message-ID: <20070901063649.F05AA1E400B@bag.python.org> Author: martin.v.loewis Date: Sat Sep 1 08:36:38 2007 New Revision: 57860 Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Tools/msi/msi.py Log: Bug #1737210: Change Manufacturer of Windows installer to PSF. Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sat Sep 1 08:36:38 2007 @@ -115,6 +115,8 @@ Build ----- +- Bug #1737210: Change Manufacturer of Windows installer to PSF. + - Bug #1746880: Correctly install DLLs into system32 folder on Win64. - Define _BSD_SOURCE, to get access to POSIX extensions on OpenBSD 4.1+. Modified: python/branches/release25-maint/Tools/msi/msi.py ============================================================================== --- python/branches/release25-maint/Tools/msi/msi.py (original) +++ python/branches/release25-maint/Tools/msi/msi.py Sat Sep 1 08:36:38 2007 @@ -193,7 +193,7 @@ schema, ProductName="Python "+full_current_version, ProductCode=product_code, ProductVersion=current_version, - Manufacturer=u"Martin v. L\xf6wis") + Manufacturer=u"Python Software Foundation") # The default sequencing of the RemoveExistingProducts action causes # removal of files that got just installed. Place it after # InstallInitialize, so we first uninstall everything, but still roll From python-checkins at python.org Sat Sep 1 09:37:29 2007 From: python-checkins at python.org (georg.brandl) Date: Sat, 1 Sep 2007 09:37:29 +0200 (CEST) Subject: [Python-checkins] r57864 - doctools/trunk/sphinx/style/default.css Message-ID: <20070901073729.7BF9D1E4006@bag.python.org> Author: georg.brandl Date: Sat Sep 1 09:37:04 2007 New Revision: 57864 Modified: doctools/trunk/sphinx/style/default.css Log: Don't use absolute font sizes. Fixes #1072. Modified: doctools/trunk/sphinx/style/default.css ============================================================================== --- doctools/trunk/sphinx/style/default.css (original) +++ doctools/trunk/sphinx/style/default.css Sat Sep 1 09:37:04 2007 @@ -4,7 +4,7 @@ body { font-family: sans-serif; - font-size: 13px; + font-size: 100%; background-color: #11303d; color: #000; margin: 0; @@ -92,7 +92,7 @@ div.sidebar h3 { font-family: 'Trebuchet MS', sans-serif; color: white; - font-size: 24px; + font-size: 1.5em; font-weight: normal; margin: 0; padding: 0; @@ -101,7 +101,7 @@ div.sidebar h4 { font-family: 'Trebuchet MS', sans-serif; color: white; - font-size: 16px; + font-size: 1.2em; font-weight: normal; margin: 5px 0 0 0; padding: 0; @@ -236,7 +236,7 @@ height: 25px; text-align: center; padding-top: 3px; - font-size: 12px; + font-size: 0.9em; line-height: 14px; font-weight: bold; color: black; @@ -348,7 +348,7 @@ color: white; border: none; padding: 5px; - font-size: 22px; + font-size: 1.5em; cursor: pointer; } @@ -396,7 +396,7 @@ margin: 0 0 -5px -20px; padding: 4px 0 0 4px; color: white; - font-size: 18px; + font-size: 1.3em; } div.commentwindow div.preview div.comment { @@ -406,7 +406,7 @@ div.commentwindow div.preview div.comment h4 { margin: 10px 0 0 0!important; padding: 1px 4px 1px 4px!important; - font-size: 16px; + font-size: 1.2em; } /* :::: SUGGEST CHANGES :::: */ @@ -518,12 +518,12 @@ padding: 3px 0 3px 10px; } -div.body h1 { margin-top: 0; font-size: 30px; } -div.body h2 { font-size: 25px; } -div.body h3 { font-size: 21px; } -div.body h4 { font-size: 18px; } -div.body h5 { font-size: 14px; } -div.body h6 { font-size: 12px; } +div.body h1 { margin-top: 0; font-size: 250%; } +div.body h2 { font-size: 200%; } +div.body h3 { font-size: 160%; } +div.body h4 { font-size: 140%; } +div.body h5 { font-size: 120%; } +div.body h6 { font-size: 100%; } a.headerlink, a.headerlink, @@ -763,7 +763,7 @@ border: 1px solid #ccc; padding: 2px; font-family: sans-serif; - font-size: 13px; + font-size: 100%; } form.comment input[type="text"] { From python-checkins at python.org Sat Sep 1 09:51:25 2007 From: python-checkins at python.org (georg.brandl) Date: Sat, 1 Sep 2007 09:51:25 +0200 (CEST) Subject: [Python-checkins] r57865 - python/trunk/Doc/library/aepack.rst Message-ID: <20070901075125.328081E4006@bag.python.org> Author: georg.brandl Date: Sat Sep 1 09:51:24 2007 New Revision: 57865 Modified: python/trunk/Doc/library/aepack.rst Log: Fix RST link (backport from Py3k). Modified: python/trunk/Doc/library/aepack.rst ============================================================================== --- python/trunk/Doc/library/aepack.rst (original) +++ python/trunk/Doc/library/aepack.rst Sat Sep 1 09:51:24 2007 @@ -87,6 +87,6 @@ Module :mod:`aetypes` Python definitions of codes for Apple Event descriptor types. - ` Inside Macintosh: Interapplication Communication `_ + `Inside Macintosh: Interapplication Communication `_ Information about inter-process communications on the Macintosh. From buildbot at python.org Sat Sep 1 09:55:36 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 01 Sep 2007 07:55:36 +0000 Subject: [Python-checkins] buildbot warnings in alpha Tru64 5.1 2.5 Message-ID: <20070901075536.A42ED1E4013@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/306 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: 2 tests failed: test_signal test_socket sincerely, -The Buildbot From buildbot at python.org Sat Sep 1 13:49:43 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 01 Sep 2007 11:49:43 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP 3.0 Message-ID: <20070901114956.92E2F1E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%203.0/builds/86 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: eric.smith,georg.brandl Build had warnings: warnings test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_uuid ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ipconfig_getnode (test.test_uuid.TestUUID) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_uuid.py", line 323, in test_ipconfig_getnode node = uuid._ipconfig_getnode() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\uuid.py", line 376, in _ipconfig_getnode for line in pipe: TypeError: '_wrap_close' object is not iterable sincerely, -The Buildbot From python-checkins at python.org Sat Sep 1 17:40:07 2007 From: python-checkins at python.org (georg.brandl) Date: Sat, 1 Sep 2007 17:40:07 +0200 (CEST) Subject: [Python-checkins] r57874 - doctools/trunk/sphinx/style/default.css Message-ID: <20070901154007.8E35D1E4006@bag.python.org> Author: georg.brandl Date: Sat Sep 1 17:39:59 2007 New Revision: 57874 Modified: doctools/trunk/sphinx/style/default.css Log: Fix the relative font sizes a bit. Modified: doctools/trunk/sphinx/style/default.css ============================================================================== --- doctools/trunk/sphinx/style/default.css (original) +++ doctools/trunk/sphinx/style/default.css Sat Sep 1 17:39:59 2007 @@ -39,6 +39,7 @@ float: left; width: 230px; margin-left: -100%; + font-size: 90%; } div.clearer { @@ -50,6 +51,7 @@ width: 100%; padding: 9px 0 9px 0; text-align: center; + font-size: 75%; } div.footer a { @@ -63,6 +65,7 @@ width: 100%; height: 30px; line-height: 30px; + font-size: 90%; } div.related h3 { @@ -92,7 +95,7 @@ div.sidebar h3 { font-family: 'Trebuchet MS', sans-serif; color: white; - font-size: 1.5em; + font-size: 1.4em; font-weight: normal; margin: 0; padding: 0; @@ -101,7 +104,7 @@ div.sidebar h4 { font-family: 'Trebuchet MS', sans-serif; color: white; - font-size: 1.2em; + font-size: 1.3em; font-weight: normal; margin: 5px 0 0 0; padding: 0; @@ -441,12 +444,13 @@ } a.biglink { - font-size: 1.5em; + font-size: 1.3em; } span.linkdescr { font-style: italic; padding-top: 5px; + font-size: 90%; } /* :::: INDEX STYLES :::: */ @@ -518,11 +522,11 @@ padding: 3px 0 3px 10px; } -div.body h1 { margin-top: 0; font-size: 250%; } -div.body h2 { font-size: 200%; } -div.body h3 { font-size: 160%; } -div.body h4 { font-size: 140%; } -div.body h5 { font-size: 120%; } +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } div.body h6 { font-size: 100%; } a.headerlink, From python-checkins at python.org Sat Sep 1 17:50:15 2007 From: python-checkins at python.org (georg.brandl) Date: Sat, 1 Sep 2007 17:50:15 +0200 (CEST) Subject: [Python-checkins] r57876 - python/trunk/Doc/library/stdtypes.rst Message-ID: <20070901155015.2C53B1E400F@bag.python.org> Author: georg.brandl Date: Sat Sep 1 17:49:49 2007 New Revision: 57876 Modified: python/trunk/Doc/library/stdtypes.rst Log: Document sets' ">" and "<" operations (backport from py3k). Modified: python/trunk/Doc/library/stdtypes.rst ============================================================================== --- python/trunk/Doc/library/stdtypes.rst (original) +++ python/trunk/Doc/library/stdtypes.rst Sat Sep 1 17:49:49 2007 @@ -1461,11 +1461,21 @@ Test whether every element in the set is in *other*. +.. method:: set < other + + Test whether the set is a true subset of *other*, that is, + ``set <= other and set != other``. + .. method:: set.issuperset(other) set >= other Test whether every element in *other* is in the set. +.. method:: set > other + + Test whether the set is a true superset of *other*, that is, + ``set >= other and set != other``. + .. method:: set.union(other) set | other From python-checkins at python.org Sat Sep 1 19:40:30 2007 From: python-checkins at python.org (skip.montanaro) Date: Sat, 1 Sep 2007 19:40:30 +0200 (CEST) Subject: [Python-checkins] r57878 - python/trunk/Doc/library/re.rst Message-ID: <20070901174030.9D4321E4006@bag.python.org> Author: skip.montanaro Date: Sat Sep 1 19:40:03 2007 New Revision: 57878 Modified: python/trunk/Doc/library/re.rst Log: Added a note and examples to explain that re.split does not split on an empty pattern match. (issue 852532). Modified: python/trunk/Doc/library/re.rst ============================================================================== --- python/trunk/Doc/library/re.rst (original) +++ python/trunk/Doc/library/re.rst Sat Sep 1 19:40:03 2007 @@ -544,6 +544,13 @@ >>> re.split('\W+', 'Words, words, words.', 1) ['Words', 'words, words.'] + Note that *split* will never split a string on an empty pattern match. + For example :: + + >>> re.split('x*', 'foo') + ['foo'] + >>> re.split("(?m)^$", "foo\n\nbar\n") + ['foo\n\nbar\n'] .. function:: findall(pattern, string[, flags]) From python-checkins at python.org Sat Sep 1 20:18:28 2007 From: python-checkins at python.org (walter.doerwald) Date: Sat, 1 Sep 2007 20:18:28 +0200 (CEST) Subject: [Python-checkins] r57879 - python/trunk/Doc/library/codecs.rst Message-ID: <20070901181828.833871E4006@bag.python.org> Author: walter.doerwald Date: Sat Sep 1 20:18:09 2007 New Revision: 57879 Modified: python/trunk/Doc/library/codecs.rst Log: Fix wrong function names. Modified: python/trunk/Doc/library/codecs.rst ============================================================================== --- python/trunk/Doc/library/codecs.rst (original) +++ python/trunk/Doc/library/codecs.rst Sat Sep 1 20:18:09 2007 @@ -190,12 +190,12 @@ Implements the ``ignore`` error handling. -.. function:: xmlcharrefreplace_errors_errors(exception) +.. function:: xmlcharrefreplace_errors(exception) Implements the ``xmlcharrefreplace`` error handling. -.. function:: backslashreplace_errors_errors(exception) +.. function:: backslashreplace_errors(exception) Implements the ``backslashreplace`` error handling. From python-checkins at python.org Sat Sep 1 20:34:27 2007 From: python-checkins at python.org (walter.doerwald) Date: Sat, 1 Sep 2007 20:34:27 +0200 (CEST) Subject: [Python-checkins] r57880 - python/trunk/Doc/library/codecs.rst Message-ID: <20070901183427.583401E400B@bag.python.org> Author: walter.doerwald Date: Sat Sep 1 20:34:05 2007 New Revision: 57880 Modified: python/trunk/Doc/library/codecs.rst Log: Fix typo. Modified: python/trunk/Doc/library/codecs.rst ============================================================================== --- python/trunk/Doc/library/codecs.rst (original) +++ python/trunk/Doc/library/codecs.rst Sat Sep 1 20:34:05 2007 @@ -816,7 +816,7 @@ encoding was used for encoding a Unicode string. Each charmap encoding can decode any random byte sequence. However that's not possible with UTF-8, as UTF-8 byte sequences have a structure that doesn't allow arbitrary byte -sequence. To increase the reliability with which a UTF-8 encoding can be +sequences. To increase the reliability with which a UTF-8 encoding can be detected, Microsoft invented a variant of UTF-8 (that Python 2.5 calls ``"utf-8-sig"``) for its Notepad program: Before any of the Unicode characters is written to the file, a UTF-8 encoded BOM (which looks like this as a byte From python-checkins at python.org Sat Sep 1 22:18:29 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 1 Sep 2007 22:18:29 +0200 (CEST) Subject: [Python-checkins] r57883 - in sandbox/trunk/2to3: fixes/fix_print.py tests/test_fixers.py Message-ID: <20070901201829.48B121E4006@bag.python.org> Author: collin.winter Date: Sat Sep 1 22:18:19 2007 New Revision: 57883 Modified: sandbox/trunk/2to3/ (props changed) sandbox/trunk/2to3/fixes/fix_print.py sandbox/trunk/2to3/tests/test_fixers.py Log: Fix a long-standing idempotency problem in fix_print. Modified: sandbox/trunk/2to3/fixes/fix_print.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_print.py (original) +++ sandbox/trunk/2to3/fixes/fix_print.py Sat Sep 1 22:18:19 2007 @@ -11,12 +11,16 @@ """ # Local imports +import patcomp import pytree from pgen2 import token from fixes import basefix from fixes.util import Name, Call, Comma, String, is_tuple +paren_call = patcomp.compile_pattern("""atom< '(' any ')' >""") + + class FixPrint(basefix.BaseFix): PATTERN = """ @@ -35,7 +39,7 @@ assert node.children[0] == Name("print") args = node.children[1:] sep = end = file = None - if is_tuple(args[0]): + if len(args) == 1 and (is_tuple(args[0]) or paren_call.match(args[0])): # We don't want to keep sticking parens around an # already-parenthesised expression. return Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sat Sep 1 22:18:19 2007 @@ -361,6 +361,9 @@ s = """print()""" self.unchanged(s) + s = """print('')""" + self.unchanged(s) + def test_idempotency_print_as_function(self): print_stmt = pygram.python_grammar.keywords.pop("print") try: @@ -369,6 +372,9 @@ s = """print()""" self.unchanged(s) + + s = """print('')""" + self.unchanged(s) finally: pygram.python_grammar.keywords["print"] = print_stmt From python-checkins at python.org Sat Sep 1 22:19:37 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 1 Sep 2007 22:19:37 +0200 (CEST) Subject: [Python-checkins] r57884 - in sandbox/trunk/2to3: fixes/fix_map.py tests/test_fixers.py Message-ID: <20070901201937.2FDA61E4006@bag.python.org> Author: collin.winter Date: Sat Sep 1 22:19:36 2007 New Revision: 57884 Modified: sandbox/trunk/2to3/ (props changed) sandbox/trunk/2to3/fixes/fix_map.py sandbox/trunk/2to3/tests/test_fixers.py Log: Actually fix maps in void context rather than just warning about them. Modified: sandbox/trunk/2to3/fixes/fix_map.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_map.py (original) +++ sandbox/trunk/2to3/fixes/fix_map.py Sat Sep 1 22:19:36 2007 @@ -55,7 +55,9 @@ def transform(self, node, results): if node.parent.type == syms.simple_stmt: self.warning(node, "You should use a for loop here") - return + new = node.clone() + new.set_prefix("") + new = Call(Name("list"), [new]) elif "map_lambda" in results: new = ListComp(results.get("xp").clone(), results.get("fp").clone(), Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sat Sep 1 22:19:36 2007 @@ -2270,6 +2270,18 @@ a = """x = [x+1 for x in range(4)]""" self.check(b, a) + b = """ + foo() + # foo + map(f, x) + """ + a = """ + foo() + # foo + list(map(f, x)) + """ + self.warns(b, a, "You should use a for loop here") + # XXX This (rare) case is not supported ## b = """x = map(f, 'abc')[0]""" ## a = """x = list(map(f, 'abc'))[0]""" @@ -2307,13 +2319,6 @@ a = """(x for x in map(f, 'abc'))""" self.unchanged(a) - def test_warn(self): - a = """ - foo() - map(f, x) - """ - self.warns_unchanged(a, "You should use a for loop here") - class Test_standarderror(FixerTestCase): fixer = "standarderror" From python-checkins at python.org Sat Sep 1 22:20:31 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 1 Sep 2007 22:20:31 +0200 (CEST) Subject: [Python-checkins] r57885 - in sandbox/trunk/2to3: fixes/basefix.py fixes/fix_idioms.py refactor.py Message-ID: <20070901202031.2D8F31E4006@bag.python.org> Author: collin.winter Date: Sat Sep 1 22:20:30 2007 New Revision: 57885 Modified: sandbox/trunk/2to3/ (props changed) sandbox/trunk/2to3/fixes/basefix.py sandbox/trunk/2to3/fixes/fix_idioms.py sandbox/trunk/2to3/refactor.py Log: Add a notion of explicit v implicit fixers. This is to deal with the fact that fix_idioms can cause undesirable semantics changes in certain situations and so shouldn't automatically be run. Modified: sandbox/trunk/2to3/fixes/basefix.py ============================================================================== --- sandbox/trunk/2to3/fixes/basefix.py (original) +++ sandbox/trunk/2to3/fixes/basefix.py Sat Sep 1 22:20:30 2007 @@ -35,6 +35,7 @@ numbers = itertools.count(1) # For new_name() used_names = set() # A set of all used NAMEs order = "post" # Does the fixer prefer pre- or post-order traversal + explicit = False # Is this ignored by refactor.py -f all? # Shortcut for access to Python grammar symbols syms = pygram.python_symbols Modified: sandbox/trunk/2to3/fixes/fix_idioms.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_idioms.py (original) +++ sandbox/trunk/2to3/fixes/fix_idioms.py Sat Sep 1 22:20:30 2007 @@ -19,6 +19,8 @@ class FixIdioms(basefix.BaseFix): + explicit = True # The user must ask for this fixer + PATTERN = """ isinstance=comparison< %s %s T=any > | isinstance=comparison< T=any %s %s > | Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Sat Sep 1 22:20:30 2007 @@ -125,7 +125,8 @@ pre_order_fixers = [] post_order_fixers = [] fix_names = self.options.fix - if not fix_names or "all" in fix_names: + get_all_fixers = not fix_names or "all" in fix_names + if get_all_fixers: fix_names = get_all_fix_names() for fix_name in fix_names: try: @@ -147,9 +148,12 @@ self.log_error("Can't instantiate fixes.fix_%s.%s()", fix_name, class_name, exc_info=True) continue + if fixer.explicit and get_all_fixers: + self.log_message("Skipping implicit fixer: %s", fix_name) + continue + if self.options.verbose: self.log_message("Adding transformation: %s", fix_name) - if fixer.order == "pre": pre_order_fixers.append(fixer) elif fixer.order == "post": From python-checkins at python.org Sat Sep 1 22:32:04 2007 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 1 Sep 2007 22:32:04 +0200 (CEST) Subject: [Python-checkins] r57889 - python/trunk/Doc/library/smtplib.rst Message-ID: <20070901203204.CE5A11E4006@bag.python.org> Author: andrew.kuchling Date: Sat Sep 1 22:31:59 2007 New Revision: 57889 Modified: python/trunk/Doc/library/smtplib.rst Log: Markup fix Modified: python/trunk/Doc/library/smtplib.rst ============================================================================== --- python/trunk/Doc/library/smtplib.rst (original) +++ python/trunk/Doc/library/smtplib.rst Sat Sep 1 22:31:59 2007 @@ -53,7 +53,7 @@ .. class:: LMTP([host[, port[, local_hostname]]]) The LMTP protocol, which is very similar to ESMTP, is heavily based on the - standard SMTP client. It's common to use Unix sockets for LMTP, so our connect() + standard SMTP client. It's common to use Unix sockets for LMTP, so our :meth:`connect` method must support that as well as a regular host:port server. To specify a Unix socket, you must use an absolute path for *host*, starting with a '/'. From python-checkins at python.org Sat Sep 1 22:43:36 2007 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 1 Sep 2007 22:43:36 +0200 (CEST) Subject: [Python-checkins] r57892 - python/trunk/Doc/whatsnew/2.6.rst Message-ID: <20070901204336.6ED461E4006@bag.python.org> Author: andrew.kuchling Date: Sat Sep 1 22:43:36 2007 New Revision: 57892 Modified: python/trunk/Doc/whatsnew/2.6.rst Log: Add various items Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Sat Sep 1 22:43:36 2007 @@ -73,6 +73,13 @@ Here are all of the changes that Python 2.6 makes to the core Python language. +* The :func:`complex` constructor now accepts strings containing + parenthesized complex numbers, letting ``complex(repr(cmplx))`` + will now round-trip values. For example, ``complex('(3+4j)')`` + now returns the value (3+4j). + + .. % Patch 1491866 + * An obscure change: when you use the the :func:`locals` function inside a :keyword:`class` statement, the resulting dictionary no longer returns free variables. (Free variables, in this case, are variables referred to in the @@ -157,6 +164,14 @@ .. % Patch #1490190 +* In the :mod:`os.path` module, the :func:`splitext` function + has been changed to not split on leading period characters. + This produces better results when operating on Unix's dot-files. + For example, ``os.path.splitext('.ipython')`` + now returns ``('.ipython', '')`` instead of ``('', '.ipython')``. + + .. % Bug #115886 + * New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags` are wrappers for the corresponding system calls (where they're available). Constants for the flag values are defined in the :mod:`stat` module; some @@ -166,14 +181,31 @@ * The :mod:`rgbimg` module has been removed. -* The :mod:`smtplib` module now supports SMTP over SSL thanks to the addition - of the :class:`SMTP_SSL` class. This class supports an interface identical to - the existing :class:`SMTP` class. (Contributed by Monty Taylor.) +* The :mod:`smtplib` module now supports SMTP over SSL thanks to the + addition of the :class:`SMTP_SSL` class. This class supports an + interface identical to the existing :class:`SMTP` class. An + implementation of the LMTP protocol (:rfc:`2033`) was also added to + the module. LMTP is used in place of SMTP when transferring e-mail + between agents that don't manage a mail queue. + (SMTP over SSL contributed by Monty Taylor; LMTP implemented by Leif + Hedstrom.) + + .. % Patch #957003 * The :mod:`test.test_support` module now contains a :func:`EnvironmentVarGuard` context manager that supports temporarily changing environment variables and automatically restores them to their old values. (Contributed by Brett Cannon.) +* The :mod:`timeit` module now accepts callables as well as strings + for the statement being timed and for the setup code. + Two convenience functions were added for creating + :class:`Timer` instances: + ``repeat(stmt, setup, time, repeat, number)`` and + ``timeit(stmt, setup, time, number)`` create an instance and call + the corresponding method. (Contributed by Erik Demaine.) + + .. % Patch #1533909 + .. % ====================================================================== .. % whole new modules get described in \subsections here From python-checkins at python.org Sat Sep 1 23:03:35 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 1 Sep 2007 23:03:35 +0200 (CEST) Subject: [Python-checkins] r57893 - in sandbox/trunk/2to3: fixes/fix_filter.py fixes/fix_map.py tests/test_fixers.py Message-ID: <20070901210335.ED5EF1E4006@bag.python.org> Author: collin.winter Date: Sat Sep 1 23:03:35 2007 New Revision: 57893 Modified: sandbox/trunk/2to3/ (props changed) sandbox/trunk/2to3/fixes/fix_filter.py sandbox/trunk/2to3/fixes/fix_map.py sandbox/trunk/2to3/tests/test_fixers.py Log: Add any() and all() to the list of special contexts for fix_map and fix_filter. Modified: sandbox/trunk/2to3/fixes/fix_filter.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_filter.py (original) +++ sandbox/trunk/2to3/fixes/fix_filter.py Sat Sep 1 23:03:35 2007 @@ -65,7 +65,7 @@ P1 = """ power< ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'enumerate' | - (any* trailer< '.' 'join' >) ) + 'any' | 'all' | (any* trailer< '.' 'join' >) ) trailer< '(' node=any ')' > any* > Modified: sandbox/trunk/2to3/fixes/fix_map.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_map.py (original) +++ sandbox/trunk/2to3/fixes/fix_map.py Sat Sep 1 23:03:35 2007 @@ -82,7 +82,7 @@ P1 = """ power< ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'enumerate' | - (any* trailer< '.' 'join' >) ) + 'any' | 'all' | (any* trailer< '.' 'join' >) ) trailer< '(' node=any ')' > any* > Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sat Sep 1 23:03:35 2007 @@ -2223,6 +2223,10 @@ self.unchanged(a) a = """enumerate(filter(f, 'abc'))""" self.unchanged(a) + a = """any(filter(f, 'abc'))""" + self.unchanged(a) + a = """all(filter(f, 'abc'))""" + self.unchanged(a) a = """sorted(filter(f, 'abc'))""" self.unchanged(a) a = """sorted(filter(f, 'abc'), key=blah)""" @@ -2306,6 +2310,10 @@ self.unchanged(a) a = """enumerate(map(f, 'abc'))""" self.unchanged(a) + a = """any(map(f, 'abc'))""" + self.unchanged(a) + a = """all(map(f, 'abc'))""" + self.unchanged(a) a = """sorted(map(f, 'abc'))""" self.unchanged(a) a = """sorted(map(f, 'abc'), key=blah)""" From python-checkins at python.org Sat Sep 1 23:12:17 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 1 Sep 2007 23:12:17 +0200 (CEST) Subject: [Python-checkins] r57894 - sandbox/trunk/2to3/pgen2/grammar.py Message-ID: <20070901211217.472DA1E4006@bag.python.org> Author: collin.winter Date: Sat Sep 1 23:12:02 2007 New Revision: 57894 Modified: sandbox/trunk/2to3/pgen2/grammar.py Log: Have pgen2.grammar use pickle instead of cPickle, which doesn't exist in Python 3. Modified: sandbox/trunk/2to3/pgen2/grammar.py ============================================================================== --- sandbox/trunk/2to3/pgen2/grammar.py (original) +++ sandbox/trunk/2to3/pgen2/grammar.py Sat Sep 1 23:12:02 2007 @@ -13,7 +13,7 @@ """ # Python imports -import cPickle as pickle +import pickle # Local imports from pgen2 import token, tokenize From python-checkins at python.org Sat Sep 1 23:18:08 2007 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 1 Sep 2007 23:18:08 +0200 (CEST) Subject: [Python-checkins] r57895 - python/trunk/Doc/library/socket.rst Message-ID: <20070901211808.9A2C41E4006@bag.python.org> Author: andrew.kuchling Date: Sat Sep 1 23:17:58 2007 New Revision: 57895 Modified: python/trunk/Doc/library/socket.rst Log: Wording change Modified: python/trunk/Doc/library/socket.rst ============================================================================== --- python/trunk/Doc/library/socket.rst (original) +++ python/trunk/Doc/library/socket.rst Sat Sep 1 23:17:58 2007 @@ -170,7 +170,7 @@ .. function:: create_connection(address[, timeout]) Connects to the *address* received (as usual, a ``(host, port)`` pair), with an - optional timeout for the connection. Specially useful for higher-level + optional timeout for the connection. Especially useful for higher-level protocols, it is not normally used directly from application-level code. Passing the optional *timeout* parameter will set the timeout on the socket instance (if it is not given or ``None``, the global default timeout setting is From python-checkins at python.org Sat Sep 1 23:18:40 2007 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 1 Sep 2007 23:18:40 +0200 (CEST) Subject: [Python-checkins] r57896 - python/trunk/Doc/whatsnew/2.6.rst Message-ID: <20070901211840.2A7F81E4006@bag.python.org> Author: andrew.kuchling Date: Sat Sep 1 23:18:31 2007 New Revision: 57896 Modified: python/trunk/Doc/whatsnew/2.6.rst Log: Add more items Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Sat Sep 1 23:18:31 2007 @@ -80,6 +80,13 @@ .. % Patch 1491866 +* The string :meth:`translate` method now accepts ``None`` as the + translation table parameter, which is treated as the identity + transformation. This makes it easier to carry out operations + that only delete characters. (Contributed by Bengt Richter.) + + .. % Patch 1193128 + * An obscure change: when you use the the :func:`locals` function inside a :keyword:`class` statement, the resulting dictionary no longer returns free variables. (Free variables, in this case, are variables referred to in the @@ -131,6 +138,11 @@ (Contributed by Fabian Kreutz.) +* An optional ``timeout`` parameter was added to the + :class:`ftplib.FTP` class constructor as well as the :meth:`connect` + method, specifying a timeout measured in seconds. (Added by Facundo + Batista.) + * The :func:`glob.glob` function can now return Unicode filenames if a Unicode path was used and Unicode filenames are matched within the directory. @@ -172,6 +184,13 @@ .. % Bug #115886 + A new function, :func:`relpath(path, start)` returns a relative path + from the ``start`` path, if it's supplied, or from the current + working directory to the destination ``path``. (Contributed by + Richard Barran.) + + .. % Patch 1339796 + * New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags` are wrappers for the corresponding system calls (where they're available). Constants for the flag values are defined in the :mod:`stat` module; some @@ -183,15 +202,25 @@ * The :mod:`smtplib` module now supports SMTP over SSL thanks to the addition of the :class:`SMTP_SSL` class. This class supports an - interface identical to the existing :class:`SMTP` class. An - implementation of the LMTP protocol (:rfc:`2033`) was also added to + interface identical to the existing :class:`SMTP` class. Both + class constructors also have an optional ``timeout`` parameter + that specifies a timeout for the initial connection attempt, measured in + seconds. + + An implementation of the LMTP protocol (:rfc:`2033`) was also added to the module. LMTP is used in place of SMTP when transferring e-mail between agents that don't manage a mail queue. - (SMTP over SSL contributed by Monty Taylor; LMTP implemented by Leif + + (SMTP over SSL contributed by Monty Taylor; timeout parameter + added by Facundo Batista; LMTP implemented by Leif Hedstrom.) .. % Patch #957003 +* An optional ``timeout`` parameter was added to the + :class:`telnetlib.Telnet` class constructor, specifying a timeout + measured in seconds. (Added by Facundo Batista.) + * The :mod:`test.test_support` module now contains a :func:`EnvironmentVarGuard` context manager that supports temporarily changing environment variables and automatically restores them to their old values. (Contributed by Brett Cannon.) From python-checkins at python.org Sat Sep 1 23:22:56 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 1 Sep 2007 23:22:56 +0200 (CEST) Subject: [Python-checkins] r57897 - in sandbox/trunk/2to3: pgen2/tokenize.py tests/test_all_fixers.py tests/test_fixers.py tests/test_parser.py tests/test_pytree.py tests/test_util.py Message-ID: <20070901212256.746D81E4006@bag.python.org> Author: collin.winter Date: Sat Sep 1 23:22:41 2007 New Revision: 57897 Modified: sandbox/trunk/2to3/pgen2/tokenize.py sandbox/trunk/2to3/tests/test_all_fixers.py sandbox/trunk/2to3/tests/test_fixers.py sandbox/trunk/2to3/tests/test_parser.py sandbox/trunk/2to3/tests/test_pytree.py sandbox/trunk/2to3/tests/test_util.py Log: Misc tweaks to allow 2to3 to run under Python 3. Modified: sandbox/trunk/2to3/pgen2/tokenize.py ============================================================================== --- sandbox/trunk/2to3/pgen2/tokenize.py (original) +++ sandbox/trunk/2to3/pgen2/tokenize.py Sat Sep 1 23:22:41 2007 @@ -35,7 +35,7 @@ from pgen2 import token __all__ = [x for x in dir(token) if x[0] != '_'] + ["tokenize", "generate_tokens", "untokenize"] -del x, token +del token def group(*choices): return '(' + '|'.join(choices) + ')' def any(*choices): return group(*choices) + '*' Modified: sandbox/trunk/2to3/tests/test_all_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_all_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_all_fixers.py Sat Sep 1 23:22:41 2007 @@ -7,7 +7,7 @@ # Author: Collin Winter # Testing imports -import support +from tests import support # Python imports from StringIO import StringIO Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sat Sep 1 23:22:41 2007 @@ -3,7 +3,7 @@ # Author: Collin Winter # Testing imports -import support +from tests import support # Python imports from StringIO import StringIO Modified: sandbox/trunk/2to3/tests/test_parser.py ============================================================================== --- sandbox/trunk/2to3/tests/test_parser.py (original) +++ sandbox/trunk/2to3/tests/test_parser.py Sat Sep 1 23:22:41 2007 @@ -9,8 +9,8 @@ # Author: Collin Winter # Testing imports -import support -from support import driver, test_dir +from tests import support +from tests.support import driver, test_dir # Python imports import os Modified: sandbox/trunk/2to3/tests/test_pytree.py ============================================================================== --- sandbox/trunk/2to3/tests/test_pytree.py (original) +++ sandbox/trunk/2to3/tests/test_pytree.py Sat Sep 1 23:22:41 2007 @@ -11,7 +11,7 @@ """ # Testing imports -import support +from tests import support # Local imports (XXX should become a package) import pytree Modified: sandbox/trunk/2to3/tests/test_util.py ============================================================================== --- sandbox/trunk/2to3/tests/test_util.py (original) +++ sandbox/trunk/2to3/tests/test_util.py Sat Sep 1 23:22:41 2007 @@ -3,7 +3,7 @@ # Author: Collin Winter # Testing imports -import support +from tests import support # Python imports import os.path From python-checkins at python.org Sat Sep 1 23:48:59 2007 From: python-checkins at python.org (georg.brandl) Date: Sat, 1 Sep 2007 23:48:59 +0200 (CEST) Subject: [Python-checkins] r57898 - doctools/trunk/sphinx/style/default.css Message-ID: <20070901214859.4B4571E4006@bag.python.org> Author: georg.brandl Date: Sat Sep 1 23:48:59 2007 New Revision: 57898 Modified: doctools/trunk/sphinx/style/default.css Log: Patch by Robin Stocker: fix unnecessary slowing styles. Modified: doctools/trunk/sphinx/style/default.css ============================================================================== --- doctools/trunk/sphinx/style/default.css (original) +++ doctools/trunk/sphinx/style/default.css Sat Sep 1 23:48:59 2007 @@ -529,11 +529,6 @@ div.body h5 { font-size: 110%; } div.body h6 { font-size: 100%; } -a.headerlink, -a.headerlink, -a.headerlink, -a.headerlink, -a.headerlink, a.headerlink { color: #c60f0f; font-size: 0.8em; @@ -542,20 +537,16 @@ visibility: hidden; } -*:hover > a.headerlink, -*:hover > a.headerlink, -*:hover > a.headerlink, -*:hover > a.headerlink, -*:hover > a.headerlink, -*:hover > a.headerlink { +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { visibility: visible; } -a.headerlink:hover, -a.headerlink:hover, -a.headerlink:hover, -a.headerlink:hover, -a.headerlink:hover, a.headerlink:hover { background-color: #c60f0f; color: white; From python-checkins at python.org Sun Sep 2 00:07:30 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 00:07:30 +0200 (CEST) Subject: [Python-checkins] r57899 - sandbox/trunk/2to3/README Message-ID: <20070901220730.530CF1E400E@bag.python.org> Author: collin.winter Date: Sun Sep 2 00:07:27 2007 New Revision: 57899 Modified: sandbox/trunk/2to3/README Log: Add a note that fix_idioms must be explicitly requested. Modified: sandbox/trunk/2to3/README ============================================================================== --- sandbox/trunk/2to3/README (original) +++ sandbox/trunk/2to3/README Sun Sep 2 00:07:27 2007 @@ -64,7 +64,7 @@ * **fix_has_key** - "d.has_key(x)" -> "x in d". * **fix_idioms** - convert type(x) == T to isinstance(x, T), "while 1:" to - "while True:", etc. + "while True:", etc. This fixer must be explicitly requested with "-f idioms". * **fix_imports** - Fix incompatible imports. From python-checkins at python.org Sun Sep 2 00:10:42 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 00:10:42 +0200 (CEST) Subject: [Python-checkins] r57900 - in sandbox/trunk/2to3: README fixes/fix_sort.py tests/test_fixers.py Message-ID: <20070901221042.CA8A81E4012@bag.python.org> Author: collin.winter Date: Sun Sep 2 00:10:42 2007 New Revision: 57900 Added: sandbox/trunk/2to3/fixes/fix_sort.py Modified: sandbox/trunk/2to3/README sandbox/trunk/2to3/tests/test_fixers.py Log: Add a fixer for the two-line list()/sort() combo. Modified: sandbox/trunk/2to3/README ============================================================================== --- sandbox/trunk/2to3/README (original) +++ sandbox/trunk/2to3/README Sun Sep 2 00:10:42 2007 @@ -92,6 +92,9 @@ * **fix_repr** - swap backticks for repr() calls. +* **fix_sort** - converts the two-line "v = list(x)" "v.sort()" idiom into + the single-line "v = sorted(x)" equivalent. + * **fix_standarderror** - StandardError -> Exception. * **fix_throw** - fix generator.throw() calls to be 3.0-compliant (PEP 3109). Added: sandbox/trunk/2to3/fixes/fix_sort.py ============================================================================== --- (empty file) +++ sandbox/trunk/2to3/fixes/fix_sort.py Sun Sep 2 00:10:42 2007 @@ -0,0 +1,59 @@ +"""Change the two-line list/sort idiom into the modern sorted() call. + +That is, + + v = list(t) + v.sorted + foo(v) + +becomes + + v = sorted(t) + foo(v) +""" +# Author: Collin Winter + +# Local imports +from fixes import basefix +from fixes.util import Name + + +class FixSort(basefix.BaseFix): + + PATTERN = r""" + any< + any* + simple_stmt< + expr_stmt< id1=any '=' + power< list='list' trailer< '(' (not arglist) any ')' > > + > + '\n' + > + sort= + simple_stmt< + power< id2=any + trailer< '.' 'sort' > trailer< '(' ')' > + > + '\n' + > + next=any* + > + """ + + def match(self, node): + r = super(FixSort, self).match(node) + if r: + if r["id1"] == r["id2"]: + return r + return None + return r + + def transform(self, node, results): + sort_stmt = results["sort"] + list_call = results["list"] + next_stmt = results["next"] + + list_call.replace(Name("sorted", prefix=list_call.get_prefix())) + sort_stmt.remove() + if next_stmt: + next_stmt[0].set_prefix(sort_stmt.get_prefix()) Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sun Sep 2 00:10:42 2007 @@ -3,7 +3,10 @@ # Author: Collin Winter # Testing imports -from tests import support +try: + from tests import support +except ImportError: + import support # Python imports from StringIO import StringIO @@ -2367,6 +2370,92 @@ a = """int""" self.check(b, a) +class Test_sort(FixerTestCase): + fixer = "sort" + + def test(self): + b = """ + v = list(t) + v.sort() + foo(v) + """ + a = """ + v = sorted(t) + foo(v) + """ + self.check(b, a) + + b = """ + v = list(foo(b) + d) + v.sort() + foo(v) + """ + a = """ + v = sorted(foo(b) + d) + foo(v) + """ + self.check(b, a) + + b = """ + while x: + v = list(t) + v.sort() + foo(v) + """ + a = """ + while x: + v = sorted(t) + foo(v) + """ + self.check(b, a) + + b = """ + v = list(t) + # foo + v.sort() + foo(v) + """ + a = """ + v = sorted(t) + # foo + foo(v) + """ + self.check(b, a) + + b = r""" + v = list( t) + v.sort() + foo(v) + """ + a = r""" + v = sorted( t) + foo(v) + """ + self.check(b, a) + + def test_unchanged(self): + s = """ + v = list(t) + w.sort() + foo(w) + """ + self.unchanged(s) + + s = """ + v = list(t, u) + v.sort() + foo(v) + """ + self.unchanged(s) + + s = """ + v = list(t) + v.sort(u) + foo(v) + """ + self.unchanged(s) + + class Test_idioms(FixerTestCase): fixer = "idioms" From python-checkins at python.org Sun Sep 2 00:54:35 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 00:54:35 +0200 (CEST) Subject: [Python-checkins] r57901 - in sandbox/trunk/2to3: fixes/fix_dict.py fixes/fix_filter.py fixes/fix_map.py tests/test_fixers.py Message-ID: <20070901225435.3E84A1E4006@bag.python.org> Author: collin.winter Date: Sun Sep 2 00:54:34 2007 New Revision: 57901 Modified: sandbox/trunk/2to3/fixes/fix_dict.py sandbox/trunk/2to3/fixes/fix_filter.py sandbox/trunk/2to3/fixes/fix_map.py sandbox/trunk/2to3/tests/test_fixers.py Log: Bring fix_dict's list of special contexts into line with that for fix_map and fix_filter; drop enumerate() from all these lists (it's lazy, doh). Modified: sandbox/trunk/2to3/fixes/fix_dict.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_dict.py (original) +++ sandbox/trunk/2to3/fixes/fix_dict.py Sun Sep 2 00:54:34 2007 @@ -14,7 +14,8 @@ Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() -or for...in!). +or for...in!). Special contexts that apply to both: list(), sorted(), tuple() +set(), any(), all(). Note: iter(d.keys()) could be written as iter(d) but since the original d.iterkeys() was also redundant we don't fix this. And there @@ -27,7 +28,11 @@ import patcomp from pgen2 import token from fixes import basefix -from fixes.util import Name, Call, LParen, RParen, ArgList, Dot +from fixes.util import Name, Call, LParen, RParen, ArgList, Dot, set + + +exempt = set(["sorted", "enumerate", "list", "set", "any", "all", "tuple"]) + class FixDict(basefix.BaseFix): PATTERN = """ @@ -83,10 +88,10 @@ results["node"] is node): if isiter: # iter(d.iterkeys()) -> iter(d.keys()), etc. - return results["func"].value in ("iter", "list", "sorted") + return results["func"].value in exempt | set(["iter"]) else: # list(d.keys()) -> list(d.keys()), etc. - return results["func"].value in ("list", "sorted") + return results["func"].value in exempt if not isiter: return False # for ... in d.iterkeys() -> for ... in d.keys(), etc. Modified: sandbox/trunk/2to3/fixes/fix_filter.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_filter.py (original) +++ sandbox/trunk/2to3/fixes/fix_filter.py Sun Sep 2 00:54:34 2007 @@ -64,7 +64,7 @@ P1 = """ power< - ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'enumerate' | + ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'any' | 'all' | (any* trailer< '.' 'join' >) ) trailer< '(' node=any ')' > any* Modified: sandbox/trunk/2to3/fixes/fix_map.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_map.py (original) +++ sandbox/trunk/2to3/fixes/fix_map.py Sun Sep 2 00:54:34 2007 @@ -81,7 +81,7 @@ P1 = """ power< - ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'enumerate' | + ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'any' | 'all' | (any* trailer< '.' 'join' >) ) trailer< '(' node=any ')' > any* Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sun Sep 2 00:54:34 2007 @@ -1024,6 +1024,18 @@ ]""" self.check(b, a) + def test_unchanged(self): + wrappers = ["set", "sorted", "any", "all", "tuple"] + for wrapper in wrappers: + s = "s = %s(d.keys())" % wrapper + self.unchanged(s) + + s = "s = %s(d.values())" % wrapper + self.unchanged(s) + + s = "s = %s(d.items())" % wrapper + self.unchanged(s) + def test_01(self): b = "d.keys()" a = "list(d.keys())" @@ -2224,8 +2236,6 @@ self.unchanged(a) a = """tuple(filter(f, 'abc'))""" self.unchanged(a) - a = """enumerate(filter(f, 'abc'))""" - self.unchanged(a) a = """any(filter(f, 'abc'))""" self.unchanged(a) a = """all(filter(f, 'abc'))""" @@ -2311,8 +2321,6 @@ self.unchanged(a) a = """tuple(map(f, 'abc'))""" self.unchanged(a) - a = """enumerate(map(f, 'abc'))""" - self.unchanged(a) a = """any(map(f, 'abc'))""" self.unchanged(a) a = """all(map(f, 'abc'))""" From guido at python.org Sun Sep 2 01:17:54 2007 From: guido at python.org (Guido van Rossum) Date: Sat, 1 Sep 2007 16:17:54 -0700 Subject: [Python-checkins] r57901 - in sandbox/trunk/2to3: fixes/fix_dict.py fixes/fix_filter.py fixes/fix_map.py tests/test_fixers.py In-Reply-To: <20070901225435.3E84A1E4006@bag.python.org> References: <20070901225435.3E84A1E4006@bag.python.org> Message-ID: On 9/1/07, collin.winter wrote: > Author: collin.winter > Date: Sun Sep 2 00:54:34 2007 > New Revision: 57901 > > Modified: > sandbox/trunk/2to3/fixes/fix_dict.py > sandbox/trunk/2to3/fixes/fix_filter.py > sandbox/trunk/2to3/fixes/fix_map.py > sandbox/trunk/2to3/tests/test_fixers.py > Log: > Bring fix_dict's list of special contexts into line with that for fix_map and fix_filter; drop enumerate() from all these lists (it's lazy, doh). > > Modified: sandbox/trunk/2to3/fixes/fix_dict.py > ============================================================================== > --- sandbox/trunk/2to3/fixes/fix_dict.py (original) > +++ sandbox/trunk/2to3/fixes/fix_dict.py Sun Sep 2 00:54:34 2007 > @@ -14,7 +14,8 @@ > Except in certain very specific contexts: the iter() can be dropped > when the context is list(), sorted(), iter() or for...in; the list() > can be dropped when the context is list() or sorted() (but not iter() > -or for...in!). > +or for...in!). Special contexts that apply to both: list(), sorted(), tuple() > +set(), any(), all(). > > Note: iter(d.keys()) could be written as iter(d) but since the > original d.iterkeys() was also redundant we don't fix this. And there > @@ -27,7 +28,11 @@ > import patcomp > from pgen2 import token > from fixes import basefix > -from fixes.util import Name, Call, LParen, RParen, ArgList, Dot > +from fixes.util import Name, Call, LParen, RParen, ArgList, Dot, set > + > + > +exempt = set(["sorted", "enumerate", "list", "set", "any", "all", "tuple"]) Shouldn't enumerate be removed from this list too (like your comment said)? enumerate(d.keys()) *does* change meaning -- in 2.x it captures the keys, while in 3.0 it doesn't, so it would be subject to the "dict modified while iterating" annoyance. > + > > class FixDict(basefix.BaseFix): > PATTERN = """ > @@ -83,10 +88,10 @@ > results["node"] is node): > if isiter: > # iter(d.iterkeys()) -> iter(d.keys()), etc. > - return results["func"].value in ("iter", "list", "sorted") > + return results["func"].value in exempt | set(["iter"]) > else: > # list(d.keys()) -> list(d.keys()), etc. > - return results["func"].value in ("list", "sorted") > + return results["func"].value in exempt > if not isiter: > return False > # for ... in d.iterkeys() -> for ... in d.keys(), etc. > > Modified: sandbox/trunk/2to3/fixes/fix_filter.py > ============================================================================== > --- sandbox/trunk/2to3/fixes/fix_filter.py (original) > +++ sandbox/trunk/2to3/fixes/fix_filter.py Sun Sep 2 00:54:34 2007 > @@ -64,7 +64,7 @@ > > P1 = """ > power< > - ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'enumerate' | > + ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | > 'any' | 'all' | (any* trailer< '.' 'join' >) ) > trailer< '(' node=any ')' > > any* > > Modified: sandbox/trunk/2to3/fixes/fix_map.py > ============================================================================== > --- sandbox/trunk/2to3/fixes/fix_map.py (original) > +++ sandbox/trunk/2to3/fixes/fix_map.py Sun Sep 2 00:54:34 2007 > @@ -81,7 +81,7 @@ > > P1 = """ > power< > - ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'enumerate' | > + ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | > 'any' | 'all' | (any* trailer< '.' 'join' >) ) > trailer< '(' node=any ')' > > any* > > Modified: sandbox/trunk/2to3/tests/test_fixers.py > ============================================================================== > --- sandbox/trunk/2to3/tests/test_fixers.py (original) > +++ sandbox/trunk/2to3/tests/test_fixers.py Sun Sep 2 00:54:34 2007 > @@ -1024,6 +1024,18 @@ > ]""" > self.check(b, a) > > + def test_unchanged(self): > + wrappers = ["set", "sorted", "any", "all", "tuple"] > + for wrapper in wrappers: > + s = "s = %s(d.keys())" % wrapper > + self.unchanged(s) > + > + s = "s = %s(d.values())" % wrapper > + self.unchanged(s) > + > + s = "s = %s(d.items())" % wrapper > + self.unchanged(s) > + > def test_01(self): > b = "d.keys()" > a = "list(d.keys())" > @@ -2224,8 +2236,6 @@ > self.unchanged(a) > a = """tuple(filter(f, 'abc'))""" > self.unchanged(a) > - a = """enumerate(filter(f, 'abc'))""" > - self.unchanged(a) > a = """any(filter(f, 'abc'))""" > self.unchanged(a) > a = """all(filter(f, 'abc'))""" > @@ -2311,8 +2321,6 @@ > self.unchanged(a) > a = """tuple(map(f, 'abc'))""" > self.unchanged(a) > - a = """enumerate(map(f, 'abc'))""" > - self.unchanged(a) > a = """any(map(f, 'abc'))""" > self.unchanged(a) > a = """all(map(f, 'abc'))""" > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > -- --Guido van Rossum (home page: http://www.python.org/~guido/) From python-checkins at python.org Sun Sep 2 01:26:52 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 01:26:52 +0200 (CEST) Subject: [Python-checkins] r57902 - sandbox/trunk/2to3/fixes/fix_dict.py Message-ID: <20070901232652.2B3461E4006@bag.python.org> Author: collin.winter Date: Sun Sep 2 01:26:51 2007 New Revision: 57902 Modified: sandbox/trunk/2to3/fixes/fix_dict.py Log: Actually drop enumerate() from fix_dict's set of special contexts. Modified: sandbox/trunk/2to3/fixes/fix_dict.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_dict.py (original) +++ sandbox/trunk/2to3/fixes/fix_dict.py Sun Sep 2 01:26:51 2007 @@ -31,7 +31,7 @@ from fixes.util import Name, Call, LParen, RParen, ArgList, Dot, set -exempt = set(["sorted", "enumerate", "list", "set", "any", "all", "tuple"]) +exempt = set(["sorted", "list", "set", "any", "all", "tuple"]) class FixDict(basefix.BaseFix): From collinw at gmail.com Sun Sep 2 01:27:15 2007 From: collinw at gmail.com (Collin Winter) Date: Sat, 1 Sep 2007 16:27:15 -0700 Subject: [Python-checkins] r57901 - in sandbox/trunk/2to3: fixes/fix_dict.py fixes/fix_filter.py fixes/fix_map.py tests/test_fixers.py In-Reply-To: References: <20070901225435.3E84A1E4006@bag.python.org> Message-ID: <43aa6ff70709011627y52b54ad5ib52ce6f8473fcd9e@mail.gmail.com> On 9/1/07, Guido van Rossum wrote: > Shouldn't enumerate be removed from this list too (like your comment > said)? enumerate(d.keys()) *does* change meaning -- in 2.x it captures > the keys, while in 3.0 it doesn't, so it would be subject to the "dict > modified while iterating" annoyance. Yep, fixed in r57902. From buildbot at python.org Sun Sep 2 10:24:41 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 02 Sep 2007 08:24:41 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 3.0 Message-ID: <20070902082441.37DBF1E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: The web-page 'force build' button was pressed by 'Martin von Loewis': Test the installation Build Source Stamp: [branch py3k] HEAD Blamelist: BUILD FAILED: failed svn sincerely, -The Buildbot From python-checkins at python.org Sun Sep 2 11:46:08 2007 From: python-checkins at python.org (ronald.oussoren) Date: Sun, 2 Sep 2007 11:46:08 +0200 (CEST) Subject: [Python-checkins] r57904 - python/trunk/configure python/trunk/configure.in Message-ID: <20070902094608.3692A1E4006@bag.python.org> Author: ronald.oussoren Date: Sun Sep 2 11:46:07 2007 New Revision: 57904 Modified: python/trunk/configure python/trunk/configure.in Log: Macosx: this patch ensures that the value of MACOSX_DEPLOYMENT_TARGET used by the Makefile is also used at configure-time. Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Sun Sep 2 11:46:07 2007 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 57279 . +# From configure.in Revision: 57762 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.6. # @@ -12033,6 +12033,14 @@ cur_target=10.3 fi CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + + # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the + # environment with a value that is the same as what we'll use + # in the Makefile to ensure that we'll get the same compiler + # environment during configure and build time. + MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" + export MACOSX_DEPLOYMENT_TARGET + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 then Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Sun Sep 2 11:46:07 2007 @@ -1509,6 +1509,14 @@ cur_target=10.3 fi CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + + # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the + # environment with a value that is the same as what we'll use + # in the Makefile to ensure that we'll get the same compiler + # environment during configure and build time. + MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" + export MACOSX_DEPLOYMENT_TARGET + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 then From python-checkins at python.org Sun Sep 2 11:48:23 2007 From: python-checkins at python.org (ronald.oussoren) Date: Sun, 2 Sep 2007 11:48:23 +0200 (CEST) Subject: [Python-checkins] r57905 - python/branches/release25-maint/configure python/branches/release25-maint/configure.in Message-ID: <20070902094823.81F681E4006@bag.python.org> Author: ronald.oussoren Date: Sun Sep 2 11:48:20 2007 New Revision: 57905 Modified: python/branches/release25-maint/configure python/branches/release25-maint/configure.in Log: Backport of rev. 57904 Modified: python/branches/release25-maint/configure ============================================================================== --- python/branches/release25-maint/configure (original) +++ python/branches/release25-maint/configure Sun Sep 2 11:48:20 2007 @@ -1,28 +1,57 @@ #! /bin/sh -# From configure.in Revision: 54284 . +# From configure.in Revision: 56635 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for python 2.5. +# Generated by GNU Autoconf 2.61 for python 2.5. # # Report bugs to . # -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -32,8 +61,43 @@ fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -47,18 +111,19 @@ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -66,157 +131,388 @@ # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no fi + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf at gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || + chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -225,7 +521,28 @@ as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -234,39 +551,27 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME='python' PACKAGE_TARNAME='python' @@ -278,42 +583,166 @@ # Factoring default headers for most tests. ac_includes_default="\ #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include # include #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include -#else -# if HAVE_STDINT_H -# include -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS VERSION SOVERSION CONFIG_ARGS UNIVERSALSDK PYTHONFRAMEWORK PYTHONFRAMEWORKDIR PYTHONFRAMEWORKPREFIX PYTHONFRAMEWORKINSTALLDIR FRAMEWORKINSTALLFIRST FRAMEWORKINSTALLLAST FRAMEWORKALTINSTALLFIRST FRAMEWORKALTINSTALLLAST FRAMEWORKUNIXTOOLSPREFIX MACHDEP SGI_ABI EXTRAPLATDIR EXTRAMACHDEPPATH CONFIGURE_MACOSX_DEPLOYMENT_TARGET EXPORT_MACOSX_DEPLOYMENT_TARGET CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX MAINCC CPP EGREP BUILDEXEEXT LIBRARY LDLIBRARY DLLLIBRARY BLDLIBRARY LDLIBRARYDIR INSTSONAME RUNSHARED LINKCC RANLIB ac_ct_RANLIB AR SVNVERSION INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN OPT BASECFLAGS OTHER_LIBTOOL_OPT LIBTOOL_CRUFT SO LDSHARED BLDSHARED CCSHARED LINKFORSHARED CFLAGSFORSHARED SHLIBS USE_SIGNAL_MODULE SIGNAL_OBJS USE_THREAD_MODULE LDLAST THREADOBJ DLINCLDIR DYNLOADFILE MACHDEP_OBJS TRUE LIBOBJS HAVE_GETHOSTBYNAME_R_6_ARG HAVE_GETHOSTBYNAME_R_5_ARG HAVE_GETHOSTBYNAME_R_3_ARG HAVE_GETHOSTBYNAME_R HAVE_GETHOSTBYNAME LIBM LIBC UNICODE_OBJS THREADHEADERS SRCDIRS LTLIBOBJS' +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +VERSION +SOVERSION +CONFIG_ARGS +UNIVERSALSDK +PYTHONFRAMEWORK +PYTHONFRAMEWORKDIR +PYTHONFRAMEWORKPREFIX +PYTHONFRAMEWORKINSTALLDIR +FRAMEWORKINSTALLFIRST +FRAMEWORKINSTALLLAST +FRAMEWORKALTINSTALLFIRST +FRAMEWORKALTINSTALLLAST +FRAMEWORKUNIXTOOLSPREFIX +MACHDEP +SGI_ABI +EXTRAPLATDIR +EXTRAMACHDEPPATH +CONFIGURE_MACOSX_DEPLOYMENT_TARGET +EXPORT_MACOSX_DEPLOYMENT_TARGET +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +CXX +MAINCC +CPP +GREP +EGREP +BUILDEXEEXT +LIBRARY +LDLIBRARY +DLLLIBRARY +BLDLIBRARY +LDLIBRARYDIR +INSTSONAME +RUNSHARED +LINKCC +RANLIB +AR +SVNVERSION +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +LN +OPT +BASECFLAGS +OTHER_LIBTOOL_OPT +LIBTOOL_CRUFT +SO +LDSHARED +BLDSHARED +CCSHARED +LINKFORSHARED +CFLAGSFORSHARED +SHLIBS +USE_SIGNAL_MODULE +SIGNAL_OBJS +USE_THREAD_MODULE +LDLAST +THREADOBJ +DLINCLDIR +DYNLOADFILE +MACHDEP_OBJS +TRUE +LIBOBJS +HAVE_GETHOSTBYNAME_R_6_ARG +HAVE_GETHOSTBYNAME_R_5_ARG +HAVE_GETHOSTBYNAME_R_3_ARG +HAVE_GETHOSTBYNAME_R +HAVE_GETHOSTBYNAME +LIBM +LIBC +UNICODE_OBJS +THREADHEADERS +SRCDIRS +LTLIBOBJS' ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + # Initialize some variables set by options. ac_init_help= @@ -340,34 +769,48 @@ # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -389,33 +832,45 @@ --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -442,6 +897,12 @@ -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -466,13 +927,16 @@ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -537,6 +1001,16 @@ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -589,24 +1063,20 @@ -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. @@ -637,8 +1107,7 @@ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) @@ -658,27 +1127,19 @@ { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -705,74 +1166,76 @@ test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done # # Report the --help message. @@ -801,9 +1264,6 @@ -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -821,15 +1281,22 @@ --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/python] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -888,8 +1355,9 @@ CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help @@ -897,120 +1365,86 @@ Report bugs to . _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || continue ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF python configure 2.5 -generated by GNU Autoconf 2.59 +generated by GNU Autoconf 2.61 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by python $as_me 2.5, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -1029,7 +1463,7 @@ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -1043,6 +1477,7 @@ test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -1064,7 +1499,6 @@ ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1075,7 +1509,7 @@ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1097,9 +1531,7 @@ -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1110,8 +1542,8 @@ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1124,20 +1556,34 @@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1148,22 +1594,28 @@ echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1175,26 +1627,24 @@ ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1225,14 +1675,17 @@ # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" fi -for ac_site_file in $CONFIG_SITE; do +shift +for ac_site_file +do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1248,8 +1701,8 @@ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else @@ -1261,12 +1714,11 @@ # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1291,8 +1743,7 @@ # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1309,12 +1760,6 @@ { (exit 1); exit 1; }; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - @@ -1339,10 +1784,15 @@ +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - ac_config_headers="$ac_config_headers pyconfig.h" +ac_config_headers="$ac_config_headers pyconfig.h" @@ -1410,10 +1860,9 @@ CONFIG_ARGS="$ac_configure_args" -# Check whether --enable-universalsdk or --disable-universalsdk was given. +# Check whether --enable-universalsdk was given. if test "${enable_universalsdk+set}" = set; then - enableval="$enable_universalsdk" - + enableval=$enable_universalsdk; case $enableval in yes) enableval=/Developer/SDKs/MacOSX10.4u.sdk @@ -1434,13 +1883,13 @@ UNIVERSALSDK= enable_universalsdk= -fi; +fi + -# Check whether --enable-framework or --disable-framework was given. +# Check whether --enable-framework was given. if test "${enable_framework+set}" = set; then - enableval="$enable_framework" - + enableval=$enable_framework; case $enableval in yes) enableval=/Library/Frameworks @@ -1480,11 +1929,11 @@ # Add makefiles for Mac specific code to the list of output # files: - ac_config_files="$ac_config_files Mac/Makefile" + ac_config_files="$ac_config_files Mac/Makefile" - ac_config_files="$ac_config_files Mac/PythonLauncher/Makefile" + ac_config_files="$ac_config_files Mac/PythonLauncher/Makefile" - ac_config_files="$ac_config_files Mac/IDLE/Makefile" + ac_config_files="$ac_config_files Mac/IDLE/Makefile" esac @@ -1505,7 +1954,8 @@ fi enable_framework= -fi; +fi + @@ -1522,8 +1972,8 @@ ## # Set name for machine-dependent library files -echo "$as_me:$LINENO: checking MACHDEP" >&5 -echo $ECHO_N "checking MACHDEP... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking MACHDEP" >&5 +echo $ECHO_N "checking MACHDEP... $ECHO_C" >&6; } if test -z "$MACHDEP" then ac_sys_system=`uname -s` @@ -1672,14 +2122,14 @@ LDFLAGS="$SGI_ABI $LDFLAGS" MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'` fi -echo "$as_me:$LINENO: result: $MACHDEP" >&5 -echo "${ECHO_T}$MACHDEP" >&6 +{ echo "$as_me:$LINENO: result: $MACHDEP" >&5 +echo "${ECHO_T}$MACHDEP" >&6; } # And add extra plat-mac for darwin -echo "$as_me:$LINENO: checking EXTRAPLATDIR" >&5 -echo $ECHO_N "checking EXTRAPLATDIR... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking EXTRAPLATDIR" >&5 +echo $ECHO_N "checking EXTRAPLATDIR... $ECHO_C" >&6; } if test -z "$EXTRAPLATDIR" then case $MACHDEP in @@ -1693,8 +2143,8 @@ ;; esac fi -echo "$as_me:$LINENO: result: $EXTRAPLATDIR" >&5 -echo "${ECHO_T}$EXTRAPLATDIR" >&6 +{ echo "$as_me:$LINENO: result: $EXTRAPLATDIR" >&5 +echo "${ECHO_T}$EXTRAPLATDIR" >&6; } # Record the configure-time value of MACOSX_DEPLOYMENT_TARGET, # it may influence the way we can build extensions, so distutils @@ -1714,13 +2164,12 @@ # XXX shouldn't some/most/all of this code be merged with the stuff later # on that fiddles with OPT and BASECFLAGS? -echo "$as_me:$LINENO: checking for --without-gcc" >&5 -echo $ECHO_N "checking for --without-gcc... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --without-gcc" >&5 +echo $ECHO_N "checking for --without-gcc... $ECHO_C" >&6; } -# Check whether --with-gcc or --without-gcc was given. +# Check whether --with-gcc was given. if test "${with_gcc+set}" = set; then - withval="$with_gcc" - + withval=$with_gcc; case $withval in no) CC=cc without_gcc=yes;; @@ -1762,9 +2211,10 @@ without_gcc=;; *) without_gcc=no;; esac -fi; -echo "$as_me:$LINENO: result: $without_gcc" >&5 -echo "${ECHO_T}$without_gcc" >&6 +fi + +{ echo "$as_me:$LINENO: result: $without_gcc" >&5 +echo "${ECHO_T}$without_gcc" >&6; } # If the user switches compilers, we can't believe the cache if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC" @@ -1784,8 +2234,8 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1798,32 +2248,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1836,36 +2288,51 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1878,74 +2345,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi + fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1959,7 +2386,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -1970,6 +2397,7 @@ fi done done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -1987,22 +2415,23 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2015,36 +2444,38 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2057,29 +2488,45 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi @@ -2092,21 +2539,35 @@ { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 +echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -2131,47 +2592,77 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -2183,19 +2674,21 @@ fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2214,22 +2707,27 @@ fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -2240,9 +2738,8 @@ for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac @@ -2256,14 +2753,14 @@ fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2283,14 +2780,20 @@ } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -2308,12 +2811,12 @@ rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2336,50 +2839,49 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2395,38 +2897,118 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -2442,12 +3024,12 @@ CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2481,12 +3063,17 @@ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get + as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ + that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2501,205 +3088,57 @@ return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2709,13 +3148,12 @@ -echo "$as_me:$LINENO: checking for --with-cxx-main=" >&5 -echo $ECHO_N "checking for --with-cxx-main=... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-cxx-main=" >&5 +echo $ECHO_N "checking for --with-cxx-main=... $ECHO_C" >&6; } -# Check whether --with-cxx_main or --without-cxx_main was given. +# Check whether --with-cxx_main was given. if test "${with_cxx_main+set}" = set; then - withval="$with_cxx_main" - + withval=$with_cxx_main; case $withval in no) with_cxx_main=no @@ -2734,9 +3172,10 @@ with_cxx_main=no MAINCC='$(CC)' -fi; -echo "$as_me:$LINENO: result: $with_cxx_main" >&5 -echo "${ECHO_T}$with_cxx_main" >&6 +fi + +{ echo "$as_me:$LINENO: result: $with_cxx_main" >&5 +echo "${ECHO_T}$with_cxx_main" >&6; } preset_cxx="$CXX" if test -z "$CXX" @@ -2744,8 +3183,8 @@ case "$CC" in gcc) # Extract the first word of "g++", so it can be a program name with args. set dummy g++; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2760,32 +3199,33 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS test -z "$ac_cv_path_CXX" && ac_cv_path_CXX="g++" ;; esac fi CXX=$ac_cv_path_CXX - if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + ;; cc) # Extract the first word of "c++", so it can be a program name with args. set dummy c++; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2800,27 +3240,28 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS test -z "$ac_cv_path_CXX" && ac_cv_path_CXX="c++" ;; esac fi CXX=$ac_cv_path_CXX - if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + ;; esac if test "$CXX" = "notfound" @@ -2834,8 +3275,8 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2848,25 +3289,27 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$CXX" && break done test -n "$CXX" || CXX="notfound" @@ -2898,8 +3341,8 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2933,24 +3376,22 @@ #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -2959,9 +3400,10 @@ # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2971,24 +3413,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -2999,6 +3439,7 @@ ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -3016,8 +3457,8 @@ else ac_cv_prog_CPP=$CPP fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -3040,24 +3481,22 @@ #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -3066,9 +3505,10 @@ # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3078,24 +3518,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -3106,6 +3544,7 @@ ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -3128,24 +3567,171 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" -echo "$as_me:$LINENO: checking for AIX" >&5 -echo $ECHO_N "checking for AIX... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for AIX" >&5 +echo $ECHO_N "checking for AIX... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3159,15 +3745,15 @@ _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<\_ACEOF #define _ALL_SOURCE 1 _ACEOF else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi rm -f conftest* @@ -3182,39 +3768,39 @@ esac -echo "$as_me:$LINENO: checking for --with-suffix" >&5 -echo $ECHO_N "checking for --with-suffix... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-suffix" >&5 +echo $ECHO_N "checking for --with-suffix... $ECHO_C" >&6; } -# Check whether --with-suffix or --without-suffix was given. +# Check whether --with-suffix was given. if test "${with_suffix+set}" = set; then - withval="$with_suffix" - + withval=$with_suffix; case $withval in no) EXEEXT=;; yes) EXEEXT=.exe;; *) EXEEXT=$withval;; esac -fi; -echo "$as_me:$LINENO: result: $EXEEXT" >&5 -echo "${ECHO_T}$EXEEXT" >&6 +fi + +{ echo "$as_me:$LINENO: result: $EXEEXT" >&5 +echo "${ECHO_T}$EXEEXT" >&6; } # Test whether we're running on a non-case-sensitive system, in which # case we give a warning if no ext is given -echo "$as_me:$LINENO: checking for case-insensitive build directory" >&5 -echo $ECHO_N "checking for case-insensitive build directory... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for case-insensitive build directory" >&5 +echo $ECHO_N "checking for case-insensitive build directory... $ECHO_C" >&6; } if test ! -d CaseSensitiveTestDir; then mkdir CaseSensitiveTestDir fi if test -d casesensitivetestdir then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } BUILDEXEEXT=.exe else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } BUILDEXEEXT=$EXEEXT fi rmdir CaseSensitiveTestDir @@ -3247,14 +3833,14 @@ -echo "$as_me:$LINENO: checking LIBRARY" >&5 -echo $ECHO_N "checking LIBRARY... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking LIBRARY" >&5 +echo $ECHO_N "checking LIBRARY... $ECHO_C" >&6; } if test -z "$LIBRARY" then LIBRARY='libpython$(VERSION).a' fi -echo "$as_me:$LINENO: result: $LIBRARY" >&5 -echo "${ECHO_T}$LIBRARY" >&6 +{ echo "$as_me:$LINENO: result: $LIBRARY" >&5 +echo "${ECHO_T}$LIBRARY" >&6; } # LDLIBRARY is the name of the library to link against (as opposed to the # name of the library into which to insert object files). BLDLIBRARY is also @@ -3289,8 +3875,8 @@ # This is altered for AIX in order to build the export list before # linking. -echo "$as_me:$LINENO: checking LINKCC" >&5 -echo $ECHO_N "checking LINKCC... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking LINKCC" >&5 +echo $ECHO_N "checking LINKCC... $ECHO_C" >&6; } if test -z "$LINKCC" then LINKCC='$(PURIFY) $(MAINCC)' @@ -3306,16 +3892,16 @@ LINKCC="$LINKCC -L/usr/lib/ia64l64";; esac fi -echo "$as_me:$LINENO: result: $LINKCC" >&5 -echo "${ECHO_T}$LINKCC" >&6 +{ echo "$as_me:$LINENO: result: $LINKCC" >&5 +echo "${ECHO_T}$LINKCC" >&6; } -echo "$as_me:$LINENO: checking for --enable-shared" >&5 -echo $ECHO_N "checking for --enable-shared... $ECHO_C" >&6 -# Check whether --enable-shared or --disable-shared was given. +{ echo "$as_me:$LINENO: checking for --enable-shared" >&5 +echo $ECHO_N "checking for --enable-shared... $ECHO_C" >&6; } +# Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then - enableval="$enable_shared" + enableval=$enable_shared; +fi -fi; if test -z "$enable_shared" then @@ -3326,15 +3912,14 @@ enable_shared="no";; esac fi -echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6 +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } -echo "$as_me:$LINENO: checking for --enable-profiling" >&5 -echo $ECHO_N "checking for --enable-profiling... $ECHO_C" >&6 -# Check whether --enable-profiling or --disable-profiling was given. +{ echo "$as_me:$LINENO: checking for --enable-profiling" >&5 +echo $ECHO_N "checking for --enable-profiling... $ECHO_C" >&6; } +# Check whether --enable-profiling was given. if test "${enable_profiling+set}" = set; then - enableval="$enable_profiling" - ac_save_cc="$CC" + enableval=$enable_profiling; ac_save_cc="$CC" CC="$CC -pg" if test "$cross_compiling" = yes; then ac_enable_profiling="no" @@ -3348,13 +3933,22 @@ int main() { return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3367,12 +3961,15 @@ ( exit $ac_status ) ac_enable_profiling="no" fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + CC="$ac_save_cc" -fi; -echo "$as_me:$LINENO: result: $ac_enable_profiling" >&5 -echo "${ECHO_T}$ac_enable_profiling" >&6 +fi + +{ echo "$as_me:$LINENO: result: $ac_enable_profiling" >&5 +echo "${ECHO_T}$ac_enable_profiling" >&6; } case "$ac_enable_profiling" in "yes") @@ -3381,8 +3978,8 @@ ;; esac -echo "$as_me:$LINENO: checking LDLIBRARY" >&5 -echo $ECHO_N "checking LDLIBRARY... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking LDLIBRARY" >&5 +echo $ECHO_N "checking LDLIBRARY... $ECHO_C" >&6; } # MacOSX framework builds need more magic. LDLIBRARY is the dynamic # library that we build, but we do not want to link against it (we @@ -3463,14 +4060,14 @@ esac fi -echo "$as_me:$LINENO: result: $LDLIBRARY" >&5 -echo "${ECHO_T}$LDLIBRARY" >&6 +{ echo "$as_me:$LINENO: result: $LDLIBRARY" >&5 +echo "${ECHO_T}$LDLIBRARY" >&6; } if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3483,32 +4080,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3521,27 +4120,41 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - RANLIB=$ac_ct_RANLIB + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi else RANLIB="$ac_cv_prog_RANLIB" fi @@ -3551,8 +4164,8 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3565,25 +4178,27 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 + { echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$AR" && break done test -n "$AR" || AR="ar" @@ -3592,8 +4207,8 @@ # Extract the first word of "svnversion", so it can be a program name with args. set dummy svnversion; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_SVNVERSION+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3606,26 +4221,28 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_SVNVERSION="found" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS test -z "$ac_cv_prog_SVNVERSION" && ac_cv_prog_SVNVERSION="not-found" fi fi SVNVERSION=$ac_cv_prog_SVNVERSION if test -n "$SVNVERSION"; then - echo "$as_me:$LINENO: result: $SVNVERSION" >&5 -echo "${ECHO_T}$SVNVERSION" >&6 + { echo "$as_me:$LINENO: result: $SVNVERSION" >&5 +echo "${ECHO_T}$SVNVERSION" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + if test $SVNVERSION = found then SVNVERSION="svnversion \$(srcdir)" @@ -3642,29 +4259,35 @@ fi esac ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f $ac_dir/install.sh; then + elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f $ac_dir/shtool; then + elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -3679,8 +4302,8 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3702,7 +4325,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -3721,21 +4344,22 @@ ;; esac done +IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the path is relative. + # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -3758,13 +4382,12 @@ fi # Check for --with-pydebug -echo "$as_me:$LINENO: checking for --with-pydebug" >&5 -echo $ECHO_N "checking for --with-pydebug... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-pydebug" >&5 +echo $ECHO_N "checking for --with-pydebug... $ECHO_C" >&6; } -# Check whether --with-pydebug or --without-pydebug was given. +# Check whether --with-pydebug was given. if test "${with_pydebug+set}" = set; then - withval="$with_pydebug" - + withval=$with_pydebug; if test "$withval" != no then @@ -3772,16 +4395,17 @@ #define Py_DEBUG 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; }; Py_DEBUG='true' -else echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; Py_DEBUG='false' +else { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; }; Py_DEBUG='false' fi else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi; + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + # XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be # merged with this chunk of code? @@ -3848,8 +4472,8 @@ # Python violates C99 rules, by casting between incompatible # pointer types. GCC may generate bad code as a result of that, # so use -fno-strict-aliasing if supported. - echo "$as_me:$LINENO: checking whether $CC accepts -fno-strict-aliasing" >&5 -echo $ECHO_N "checking whether $CC accepts -fno-strict-aliasing... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether $CC accepts -fno-strict-aliasing" >&5 +echo $ECHO_N "checking whether $CC accepts -fno-strict-aliasing... $ECHO_C" >&6; } ac_save_cc="$CC" CC="$CC -fno-strict-aliasing" if test "$cross_compiling" = yes; then @@ -3864,13 +4488,22 @@ int main() { return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3883,11 +4516,13 @@ ( exit $ac_status ) ac_cv_no_strict_aliasing_ok=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + CC="$ac_save_cc" - echo "$as_me:$LINENO: result: $ac_cv_no_strict_aliasing_ok" >&5 -echo "${ECHO_T}$ac_cv_no_strict_aliasing_ok" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_no_strict_aliasing_ok" >&5 +echo "${ECHO_T}$ac_cv_no_strict_aliasing_ok" >&6; } if test $ac_cv_no_strict_aliasing_ok = yes then BASECFLAGS="$BASECFLAGS -fno-strict-aliasing" @@ -3942,8 +4577,8 @@ ac_cv_opt_olimit_ok=no fi -echo "$as_me:$LINENO: checking whether $CC accepts -OPT:Olimit=0" >&5 -echo $ECHO_N "checking whether $CC accepts -OPT:Olimit=0... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -OPT:Olimit=0" >&5 +echo $ECHO_N "checking whether $CC accepts -OPT:Olimit=0... $ECHO_C" >&6; } if test "${ac_cv_opt_olimit_ok+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3961,13 +4596,22 @@ int main() { return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3980,13 +4624,15 @@ ( exit $ac_status ) ac_cv_opt_olimit_ok=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + CC="$ac_save_cc" fi -echo "$as_me:$LINENO: result: $ac_cv_opt_olimit_ok" >&5 -echo "${ECHO_T}$ac_cv_opt_olimit_ok" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_opt_olimit_ok" >&5 +echo "${ECHO_T}$ac_cv_opt_olimit_ok" >&6; } if test $ac_cv_opt_olimit_ok = yes; then case $ac_sys_system in # XXX is this branch needed? On MacOSX 10.2.2 the result of the @@ -3999,8 +4645,8 @@ ;; esac else - echo "$as_me:$LINENO: checking whether $CC accepts -Olimit 1500" >&5 -echo $ECHO_N "checking whether $CC accepts -Olimit 1500... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether $CC accepts -Olimit 1500" >&5 +echo $ECHO_N "checking whether $CC accepts -Olimit 1500... $ECHO_C" >&6; } if test "${ac_cv_olimit_ok+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4018,13 +4664,22 @@ int main() { return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4037,13 +4692,15 @@ ( exit $ac_status ) ac_cv_olimit_ok=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + CC="$ac_save_cc" fi - echo "$as_me:$LINENO: result: $ac_cv_olimit_ok" >&5 -echo "${ECHO_T}$ac_cv_olimit_ok" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_olimit_ok" >&5 +echo "${ECHO_T}$ac_cv_olimit_ok" >&6; } if test $ac_cv_olimit_ok = yes; then BASECFLAGS="$BASECFLAGS -Olimit 1500" fi @@ -4054,8 +4711,8 @@ # complain if unaccepted options are passed (e.g. gcc on Mac OS X). # So we have to see first whether pthreads are available without # options before we can check whether -Kpthread improves anything. -echo "$as_me:$LINENO: checking whether pthreads are available without options" >&5 -echo $ECHO_N "checking whether pthreads are available without options... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether pthreads are available without options" >&5 +echo $ECHO_N "checking whether pthreads are available without options... $ECHO_C" >&6; } if test "${ac_cv_pthread_is_default+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4083,13 +4740,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4106,13 +4772,15 @@ ( exit $ac_status ) ac_cv_pthread_is_default=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_pthread_is_default" >&5 -echo "${ECHO_T}$ac_cv_pthread_is_default" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_pthread_is_default" >&5 +echo "${ECHO_T}$ac_cv_pthread_is_default" >&6; } if test $ac_cv_pthread_is_default = yes @@ -4124,8 +4792,8 @@ # Some compilers won't report that they do not support -Kpthread, # so we need to run a program to see whether it really made the # function available. -echo "$as_me:$LINENO: checking whether $CC accepts -Kpthread" >&5 -echo $ECHO_N "checking whether $CC accepts -Kpthread... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -Kpthread" >&5 +echo $ECHO_N "checking whether $CC accepts -Kpthread... $ECHO_C" >&6; } if test "${ac_cv_kpthread+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4155,13 +4823,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4174,13 +4851,15 @@ ( exit $ac_status ) ac_cv_kpthread=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + CC="$ac_save_cc" fi -echo "$as_me:$LINENO: result: $ac_cv_kpthread" >&5 -echo "${ECHO_T}$ac_cv_kpthread" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_kpthread" >&5 +echo "${ECHO_T}$ac_cv_kpthread" >&6; } fi if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no @@ -4190,8 +4869,8 @@ # Some compilers won't report that they do not support -Kthread, # so we need to run a program to see whether it really made the # function available. -echo "$as_me:$LINENO: checking whether $CC accepts -Kthread" >&5 -echo $ECHO_N "checking whether $CC accepts -Kthread... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -Kthread" >&5 +echo $ECHO_N "checking whether $CC accepts -Kthread... $ECHO_C" >&6; } if test "${ac_cv_kthread+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4221,13 +4900,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4240,13 +4928,15 @@ ( exit $ac_status ) ac_cv_kthread=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + CC="$ac_save_cc" fi -echo "$as_me:$LINENO: result: $ac_cv_kthread" >&5 -echo "${ECHO_T}$ac_cv_kthread" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_kthread" >&5 +echo "${ECHO_T}$ac_cv_kthread" >&6; } fi if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no @@ -4256,8 +4946,8 @@ # Some compilers won't report that they do not support -pthread, # so we need to run a program to see whether it really made the # function available. -echo "$as_me:$LINENO: checking whether $CC accepts -pthread" >&5 -echo $ECHO_N "checking whether $CC accepts -pthread... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -pthread" >&5 +echo $ECHO_N "checking whether $CC accepts -pthread... $ECHO_C" >&6; } if test "${ac_cv_thread+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4287,13 +4977,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4306,13 +5005,15 @@ ( exit $ac_status ) ac_cv_pthread=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + CC="$ac_save_cc" fi -echo "$as_me:$LINENO: result: $ac_cv_pthread" >&5 -echo "${ECHO_T}$ac_cv_pthread" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_pthread" >&5 +echo "${ECHO_T}$ac_cv_pthread" >&6; } fi # If we have set a CC compiler flag for thread support then @@ -4320,8 +5021,8 @@ ac_cv_cxx_thread=no if test ! -z "$CXX" then -echo "$as_me:$LINENO: checking whether $CXX also accepts flags for thread support" >&5 -echo $ECHO_N "checking whether $CXX also accepts flags for thread support... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CXX also accepts flags for thread support" >&5 +echo $ECHO_N "checking whether $CXX also accepts flags for thread support... $ECHO_C" >&6; } ac_save_cxx="$CXX" if test "$ac_cv_kpthread" = "yes" @@ -4351,15 +5052,15 @@ fi rm -fr conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_thread" >&5 -echo "${ECHO_T}$ac_cv_cxx_thread" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_thread" >&5 +echo "${ECHO_T}$ac_cv_cxx_thread" >&6; } fi CXX="$ac_save_cxx" # checks for header files -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4383,35 +5084,31 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -4467,6 +5164,7 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -4486,18 +5184,27 @@ for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4510,12 +5217,14 @@ ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -4538,9 +5247,9 @@ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4554,38 +5263,35 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -4659,18 +5365,19 @@ bluetooth/bluetooth.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4681,41 +5388,37 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4724,24 +5427,22 @@ /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -4749,9 +5450,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -4775,25 +5477,24 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to http://www.python.org/python-bugs ## ## ------------------------------------------------ ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -4813,9 +5514,9 @@ ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4837,38 +5538,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 @@ -4880,13 +5578,12 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4894,126 +5591,83 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char opendir (); int main () { -opendir (); +return opendir (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in dir; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no fi +rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" +{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5021,122 +5675,80 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char opendir (); int main () { -opendir (); +return opendir (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in x; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +fi +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no fi +rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" +{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi -echo "$as_me:$LINENO: checking whether sys/types.h defines makedev" >&5 -echo $ECHO_N "checking whether sys/types.h defines makedev... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether sys/types.h defines makedev" >&5 +echo $ECHO_N "checking whether sys/types.h defines makedev... $ECHO_C" >&6; } if test "${ac_cv_header_sys_types_h_makedev+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5156,54 +5768,51 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_header_sys_types_h_makedev=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_sys_types_h_makedev=no + ac_cv_header_sys_types_h_makedev=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_types_h_makedev" >&5 -echo "${ECHO_T}$ac_cv_header_sys_types_h_makedev" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_types_h_makedev" >&5 +echo "${ECHO_T}$ac_cv_header_sys_types_h_makedev" >&6; } if test $ac_cv_header_sys_types_h_makedev = no; then if test "${ac_cv_header_sys_mkdev_h+set}" = set; then - echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5 -echo $ECHO_N "checking for sys/mkdev.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5 +echo $ECHO_N "checking for sys/mkdev.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_mkdev_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_mkdev_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_mkdev_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking sys/mkdev.h usability" >&5 -echo $ECHO_N "checking sys/mkdev.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/mkdev.h usability" >&5 +echo $ECHO_N "checking sys/mkdev.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5214,41 +5823,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking sys/mkdev.h presence" >&5 -echo $ECHO_N "checking sys/mkdev.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/mkdev.h presence" >&5 +echo $ECHO_N "checking sys/mkdev.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5257,24 +5862,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -5282,9 +5885,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -5308,25 +5912,23 @@ echo "$as_me: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: sys/mkdev.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to http://www.python.org/python-bugs ## ## ------------------------------------------------ ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5 -echo $ECHO_N "checking for sys/mkdev.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5 +echo $ECHO_N "checking for sys/mkdev.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_mkdev_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_sys_mkdev_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_mkdev_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_mkdev_h" >&6; } fi if test $ac_cv_header_sys_mkdev_h = yes; then @@ -5341,17 +5943,17 @@ if test $ac_cv_header_sys_mkdev_h = no; then if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then - echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5 -echo $ECHO_N "checking for sys/sysmacros.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5 +echo $ECHO_N "checking for sys/sysmacros.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_sysmacros_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_sysmacros_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking sys/sysmacros.h usability" >&5 -echo $ECHO_N "checking sys/sysmacros.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/sysmacros.h usability" >&5 +echo $ECHO_N "checking sys/sysmacros.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5362,41 +5964,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking sys/sysmacros.h presence" >&5 -echo $ECHO_N "checking sys/sysmacros.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/sysmacros.h presence" >&5 +echo $ECHO_N "checking sys/sysmacros.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5405,24 +6003,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -5430,9 +6026,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -5456,25 +6053,23 @@ echo "$as_me: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: sys/sysmacros.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to http://www.python.org/python-bugs ## ## ------------------------------------------------ ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5 -echo $ECHO_N "checking for sys/sysmacros.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5 +echo $ECHO_N "checking for sys/sysmacros.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_sys_sysmacros_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_sysmacros_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_sysmacros_h" >&6; } fi if test $ac_cv_header_sys_sysmacros_h = yes; then @@ -5495,9 +6090,9 @@ for ac_header in term.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -5515,38 +6110,35 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -5562,9 +6154,9 @@ for ac_header in linux/netlink.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -5585,38 +6177,35 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -5629,8 +6218,8 @@ # checks for typedefs was_it_defined=no -echo "$as_me:$LINENO: checking for clock_t in time.h" >&5 -echo $ECHO_N "checking for clock_t in time.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for clock_t in time.h" >&5 +echo $ECHO_N "checking for clock_t in time.h... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5654,12 +6243,12 @@ fi rm -f conftest* -echo "$as_me:$LINENO: result: $was_it_defined" >&5 -echo "${ECHO_T}$was_it_defined" >&6 +{ echo "$as_me:$LINENO: result: $was_it_defined" >&5 +echo "${ECHO_T}$was_it_defined" >&6; } # Check whether using makedev requires defining _OSF_SOURCE -echo "$as_me:$LINENO: checking for makedev" >&5 -echo $ECHO_N "checking for makedev... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for makedev" >&5 +echo $ECHO_N "checking for makedev... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5676,35 +6265,32 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_has_makedev=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_has_makedev=no + ac_cv_has_makedev=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_has_makedev" = "no"; then # we didn't link, try if _OSF_SOURCE will allow us to link @@ -5727,35 +6313,32 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_has_makedev=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_has_makedev=no + ac_cv_has_makedev=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_has_makedev" = "yes"; then @@ -5765,8 +6348,8 @@ fi fi -echo "$as_me:$LINENO: result: $ac_cv_has_makedev" >&5 -echo "${ECHO_T}$ac_cv_has_makedev" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_has_makedev" >&5 +echo "${ECHO_T}$ac_cv_has_makedev" >&6; } if test "$ac_cv_has_makedev" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -5783,8 +6366,8 @@ # work-around, disable LFS on such configurations use_lfs=yes -echo "$as_me:$LINENO: checking Solaris LFS bug" >&5 -echo $ECHO_N "checking Solaris LFS bug... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking Solaris LFS bug" >&5 +echo $ECHO_N "checking Solaris LFS bug... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5805,37 +6388,33 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then sol_lfs_bug=no else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -sol_lfs_bug=yes + sol_lfs_bug=yes fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $sol_lfs_bug" >&5 -echo "${ECHO_T}$sol_lfs_bug" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $sol_lfs_bug" >&5 +echo "${ECHO_T}$sol_lfs_bug" >&6; } if test "$sol_lfs_bug" = "yes"; then use_lfs=no fi @@ -5863,8 +6442,8 @@ EOF # Type availability checks -echo "$as_me:$LINENO: checking for mode_t" >&5 -echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6; } if test "${ac_cv_type_mode_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5875,50 +6454,47 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef mode_t ac__type_new_; int main () { -if ((mode_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (mode_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_mode_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_mode_t=no + ac_cv_type_mode_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 -echo "${ECHO_T}$ac_cv_type_mode_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6; } if test $ac_cv_type_mode_t = yes; then : else @@ -5929,8 +6505,8 @@ fi -echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5941,62 +6517,59 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef off_t ac__type_new_; int main () { -if ((off_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (off_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_off_t=no + ac_cv_type_off_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6; } if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define off_t long +#define off_t long int _ACEOF fi -echo "$as_me:$LINENO: checking for pid_t" >&5 -echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6007,50 +6580,47 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef pid_t ac__type_new_; int main () { -if ((pid_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (pid_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_pid_t=no + ac_cv_type_pid_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } if test $ac_cv_type_pid_t = yes; then : else @@ -6061,8 +6631,8 @@ fi -echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6074,64 +6644,52 @@ /* end confdefs.h. */ #include #include -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif int main () { -int i; +return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_signal=int else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_signal=int + ac_cv_type_signal=void fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF -echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6142,62 +6700,59 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef size_t ac__type_new_; int main () { -if ((size_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (size_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_size_t=no + ac_cv_type_size_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6; } if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define size_t unsigned +#define size_t unsigned int _ACEOF fi -echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6; } if test "${ac_cv_type_uid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6219,8 +6774,8 @@ rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -echo "${ECHO_T}$ac_cv_type_uid_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then cat >>confdefs.h <<\_ACEOF @@ -6234,8 +6789,8 @@ fi -echo "$as_me:$LINENO: checking for ssize_t" >&5 -echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } if test "${ac_cv_type_ssize_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6246,50 +6801,47 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef ssize_t ac__type_new_; int main () { -if ((ssize_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (ssize_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_ssize_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_ssize_t=no + ac_cv_type_ssize_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; } if test $ac_cv_type_ssize_t = yes; then cat >>confdefs.h <<\_ACEOF @@ -6301,8 +6853,8 @@ # Sizes of various common basic types # ANSI C requires sizeof(char) == 1, so no need to check it -echo "$as_me:$LINENO: checking for int" >&5 -echo $ECHO_N "checking for int... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6; } if test "${ac_cv_type_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6313,61 +6865,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef int ac__type_new_; int main () { -if ((int *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (int)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_int=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_int=no + ac_cv_type_int=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -echo "${ECHO_T}$ac_cv_type_int" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6; } -echo "$as_me:$LINENO: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6; } if test "${ac_cv_sizeof_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_int" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -6377,10 +6925,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -6388,27 +6937,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -6418,10 +6962,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -6429,56 +6974,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -6486,27 +7028,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -6516,10 +7053,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -6527,50 +7065,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -6581,10 +7117,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -6592,52 +7129,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +'') if test "$ac_cv_type_int" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 77 +echo "$as_me: error: cannot compute sizeof (int) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_int=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6645,8 +7175,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (int)); } -unsigned long ulongval () { return (long) (sizeof (int)); } + typedef int ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -6655,35 +7186,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (int))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (int)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (int)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6694,29 +7234,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +if test "$ac_cv_type_int" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 77 +echo "$as_me: error: cannot compute sizeof (int) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_int=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_int=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF -echo "$as_me:$LINENO: checking for long" >&5 -echo $ECHO_N "checking for long... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6; } if test "${ac_cv_type_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6727,61 +7270,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef long ac__type_new_; int main () { -if ((long *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (long)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_long=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_long=no + ac_cv_type_long=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -echo "${ECHO_T}$ac_cv_type_long" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6; } -echo "$as_me:$LINENO: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6; } if test "${ac_cv_sizeof_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_long" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -6791,10 +7330,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -6802,27 +7342,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -6832,10 +7367,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -6843,56 +7379,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -6900,27 +7433,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -6930,10 +7458,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -6941,50 +7470,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -6995,10 +7522,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -7006,52 +7534,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +'') if test "$ac_cv_type_long" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 77 +echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7059,8 +7580,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (long)); } -unsigned long ulongval () { return (long) (sizeof (long)); } + typedef long ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -7069,35 +7591,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (long))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (long)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7108,29 +7639,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +if test "$ac_cv_type_long" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 77 +echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_long=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF -echo "$as_me:$LINENO: checking for void *" >&5 -echo $ECHO_N "checking for void *... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for void *" >&5 +echo $ECHO_N "checking for void *... $ECHO_C" >&6; } if test "${ac_cv_type_void_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7141,61 +7675,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef void * ac__type_new_; int main () { -if ((void * *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (void *)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_void_p=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_void_p=no + ac_cv_type_void_p=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_void_p" >&5 -echo "${ECHO_T}$ac_cv_type_void_p" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_void_p" >&5 +echo "${ECHO_T}$ac_cv_type_void_p" >&6; } -echo "$as_me:$LINENO: checking size of void *" >&5 -echo $ECHO_N "checking size of void *... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of void *" >&5 +echo $ECHO_N "checking size of void *... $ECHO_C" >&6; } if test "${ac_cv_sizeof_void_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_void_p" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -7205,10 +7735,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef void * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (void *))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -7216,27 +7747,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -7246,10 +7772,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef void * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (void *))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -7257,56 +7784,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef void * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (void *))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -7314,27 +7838,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -7344,10 +7863,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef void * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (void *))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -7355,50 +7875,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -7409,10 +7927,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef void * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (void *))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -7420,52 +7939,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_void_p=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77 +'') if test "$ac_cv_type_void_p" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (void *) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (void *), 77 +echo "$as_me: error: cannot compute sizeof (void *) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_void_p=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7473,8 +7985,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (void *)); } -unsigned long ulongval () { return (long) (sizeof (void *)); } + typedef void * ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -7483,35 +7996,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (void *))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (void *)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (void *)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7522,29 +8044,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77 +if test "$ac_cv_type_void_p" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (void *) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (void *), 77 +echo "$as_me: error: cannot compute sizeof (void *) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_void_p=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_void_p=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5 -echo "${ECHO_T}$ac_cv_sizeof_void_p" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5 +echo "${ECHO_T}$ac_cv_sizeof_void_p" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_VOID_P $ac_cv_sizeof_void_p _ACEOF -echo "$as_me:$LINENO: checking for short" >&5 -echo $ECHO_N "checking for short... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6; } if test "${ac_cv_type_short+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7555,61 +8080,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef short ac__type_new_; int main () { -if ((short *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (short)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_short=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_short=no + ac_cv_type_short=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 -echo "${ECHO_T}$ac_cv_type_short" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6; } -echo "$as_me:$LINENO: checking size of short" >&5 -echo $ECHO_N "checking size of short... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6; } if test "${ac_cv_sizeof_short+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_short" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -7619,10 +8140,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -7630,27 +8152,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -7660,10 +8177,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -7671,56 +8189,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -7728,27 +8243,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -7758,10 +8268,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -7769,50 +8280,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -7823,10 +8332,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -7834,52 +8344,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_short=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +'') if test "$ac_cv_type_short" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (short) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short), 77 +echo "$as_me: error: cannot compute sizeof (short) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_short=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7887,8 +8390,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (short)); } -unsigned long ulongval () { return (long) (sizeof (short)); } + typedef short ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -7897,35 +8401,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (short))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (short)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (short)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7936,29 +8449,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +if test "$ac_cv_type_short" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (short) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short), 77 +echo "$as_me: error: cannot compute sizeof (short) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_short=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_short=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -echo "${ECHO_T}$ac_cv_sizeof_short" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF -echo "$as_me:$LINENO: checking for float" >&5 -echo $ECHO_N "checking for float... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for float" >&5 +echo $ECHO_N "checking for float... $ECHO_C" >&6; } if test "${ac_cv_type_float+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7969,61 +8485,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef float ac__type_new_; int main () { -if ((float *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (float)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_float=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_float=no + ac_cv_type_float=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_float" >&5 -echo "${ECHO_T}$ac_cv_type_float" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_float" >&5 +echo "${ECHO_T}$ac_cv_type_float" >&6; } -echo "$as_me:$LINENO: checking size of float" >&5 -echo $ECHO_N "checking size of float... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of float" >&5 +echo $ECHO_N "checking size of float... $ECHO_C" >&6; } if test "${ac_cv_sizeof_float+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_float" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -8033,10 +8545,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef float ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (float))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -8044,27 +8557,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -8074,10 +8582,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef float ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -8085,56 +8594,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef float ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (float))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -8142,27 +8648,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -8172,10 +8673,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef float ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (float))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -8183,50 +8685,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -8237,10 +8737,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef float ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -8248,52 +8749,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_float=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77 +'') if test "$ac_cv_type_float" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (float) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (float), 77 +echo "$as_me: error: cannot compute sizeof (float) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_float=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -8301,8 +8795,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (float)); } -unsigned long ulongval () { return (long) (sizeof (float)); } + typedef float ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -8311,35 +8806,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (float))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (float)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (float)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8350,29 +8854,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77 +if test "$ac_cv_type_float" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (float) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (float), 77 +echo "$as_me: error: cannot compute sizeof (float) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_float=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_float=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5 -echo "${ECHO_T}$ac_cv_sizeof_float" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5 +echo "${ECHO_T}$ac_cv_sizeof_float" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_FLOAT $ac_cv_sizeof_float _ACEOF -echo "$as_me:$LINENO: checking for double" >&5 -echo $ECHO_N "checking for double... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6; } if test "${ac_cv_type_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8383,61 +8890,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef double ac__type_new_; int main () { -if ((double *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (double)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_double=no + ac_cv_type_double=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 -echo "${ECHO_T}$ac_cv_type_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6; } -echo "$as_me:$LINENO: checking size of double" >&5 -echo $ECHO_N "checking size of double... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6; } if test "${ac_cv_sizeof_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_double" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -8447,10 +8950,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -8458,27 +8962,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -8488,10 +8987,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -8499,56 +8999,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -8556,27 +9053,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -8586,10 +9078,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -8597,50 +9090,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -8651,10 +9142,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -8662,52 +9154,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +'') if test "$ac_cv_type_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 77 +echo "$as_me: error: cannot compute sizeof (double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_double=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -8715,8 +9200,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (double)); } -unsigned long ulongval () { return (long) (sizeof (double)); } + typedef double ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -8725,35 +9211,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (double))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (double)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (double)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8764,29 +9259,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +if test "$ac_cv_type_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 77 +echo "$as_me: error: cannot compute sizeof (double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_double=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_double=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF -echo "$as_me:$LINENO: checking for fpos_t" >&5 -echo $ECHO_N "checking for fpos_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for fpos_t" >&5 +echo $ECHO_N "checking for fpos_t... $ECHO_C" >&6; } if test "${ac_cv_type_fpos_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8797,61 +9295,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef fpos_t ac__type_new_; int main () { -if ((fpos_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (fpos_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_fpos_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_fpos_t=no + ac_cv_type_fpos_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_fpos_t" >&5 -echo "${ECHO_T}$ac_cv_type_fpos_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_fpos_t" >&5 +echo "${ECHO_T}$ac_cv_type_fpos_t" >&6; } -echo "$as_me:$LINENO: checking size of fpos_t" >&5 -echo $ECHO_N "checking size of fpos_t... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of fpos_t" >&5 +echo $ECHO_N "checking size of fpos_t... $ECHO_C" >&6; } if test "${ac_cv_sizeof_fpos_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_fpos_t" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -8861,10 +9355,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef fpos_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (fpos_t))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -8872,27 +9367,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -8902,10 +9392,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef fpos_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (fpos_t))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -8913,56 +9404,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef fpos_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (fpos_t))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -8970,27 +9458,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -9000,10 +9483,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef fpos_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (fpos_t))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -9011,50 +9495,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -9065,10 +9547,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef fpos_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (fpos_t))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -9076,52 +9559,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_fpos_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (fpos_t), 77 +'') if test "$ac_cv_type_fpos_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (fpos_t) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (fpos_t), 77 +echo "$as_me: error: cannot compute sizeof (fpos_t) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_fpos_t=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9129,8 +9605,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (fpos_t)); } -unsigned long ulongval () { return (long) (sizeof (fpos_t)); } + typedef fpos_t ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -9139,35 +9616,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (fpos_t))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (fpos_t)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (fpos_t)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9178,29 +9664,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (fpos_t), 77 +if test "$ac_cv_type_fpos_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (fpos_t) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (fpos_t), 77 +echo "$as_me: error: cannot compute sizeof (fpos_t) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_fpos_t=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_fpos_t=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_fpos_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_fpos_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_fpos_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_fpos_t" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_FPOS_T $ac_cv_sizeof_fpos_t _ACEOF -echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -9211,61 +9700,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef size_t ac__type_new_; int main () { -if ((size_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (size_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_size_t=no + ac_cv_type_size_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6; } -echo "$as_me:$LINENO: checking size of size_t" >&5 -echo $ECHO_N "checking size of size_t... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of size_t" >&5 +echo $ECHO_N "checking size of size_t... $ECHO_C" >&6; } if test "${ac_cv_sizeof_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_size_t" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -9275,10 +9760,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef size_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (size_t))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -9286,27 +9772,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -9316,10 +9797,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef size_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (size_t))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -9327,56 +9809,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef size_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (size_t))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -9384,27 +9863,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -9414,10 +9888,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef size_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (size_t))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -9425,50 +9900,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -9479,10 +9952,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef size_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (size_t))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -9490,52 +9964,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_size_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77 +'') if test "$ac_cv_type_size_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (size_t), 77 +echo "$as_me: error: cannot compute sizeof (size_t) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_size_t=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9543,8 +10010,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (size_t)); } -unsigned long ulongval () { return (long) (sizeof (size_t)); } + typedef size_t ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -9553,35 +10021,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (size_t))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (size_t)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (size_t)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9592,30 +10069,33 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77 +if test "$ac_cv_type_size_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (size_t), 77 +echo "$as_me: error: cannot compute sizeof (size_t) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_size_t=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_size_t=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_size_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_size_t" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_SIZE_T $ac_cv_sizeof_size_t _ACEOF -echo "$as_me:$LINENO: checking for long long support" >&5 -echo $ECHO_N "checking for long long support... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for long long support" >&5 +echo $ECHO_N "checking for long long support... $ECHO_C" >&6; } have_long_long=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -9633,27 +10113,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF @@ -9666,13 +10141,15 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $have_long_long" >&5 -echo "${ECHO_T}$have_long_long" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $have_long_long" >&5 +echo "${ECHO_T}$have_long_long" >&6; } if test "$have_long_long" = yes ; then -echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6; } if test "${ac_cv_type_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -9683,61 +10160,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef long long ac__type_new_; int main () { -if ((long long *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (long long)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_long_long=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_long_long=no + ac_cv_type_long_long=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6; } -echo "$as_me:$LINENO: checking size of long long" >&5 -echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6; } if test "${ac_cv_sizeof_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_long_long" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -9747,10 +10220,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -9758,27 +10232,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -9788,10 +10257,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -9799,56 +10269,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -9856,27 +10323,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -9886,10 +10348,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -9897,50 +10360,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -9951,10 +10412,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -9962,52 +10424,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +'') if test "$ac_cv_type_long_long" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long), 77 +echo "$as_me: error: cannot compute sizeof (long long) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long_long=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -10015,8 +10470,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (long long)); } -unsigned long ulongval () { return (long) (sizeof (long long)); } + typedef long long ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -10025,35 +10481,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (long long))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (long long)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long long)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10064,22 +10529,25 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +if test "$ac_cv_type_long_long" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long), 77 +echo "$as_me: error: cannot compute sizeof (long long) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long_long=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_long_long=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF @@ -10087,8 +10555,8 @@ fi -echo "$as_me:$LINENO: checking for uintptr_t" >&5 -echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for uintptr_t" >&5 +echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6; } if test "${ac_cv_type_uintptr_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10102,58 +10570,55 @@ #include #endif +typedef uintptr_t ac__type_new_; int main () { -if ((uintptr_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (uintptr_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_uintptr_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_uintptr_t=no + ac_cv_type_uintptr_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 -echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 +echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6; } if test $ac_cv_type_uintptr_t = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_UINTPTR_T 1 _ACEOF -echo "$as_me:$LINENO: checking for uintptr_t" >&5 -echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for uintptr_t" >&5 +echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6; } if test "${ac_cv_type_uintptr_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10164,61 +10629,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef uintptr_t ac__type_new_; int main () { -if ((uintptr_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (uintptr_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_uintptr_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_uintptr_t=no + ac_cv_type_uintptr_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 -echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 +echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6; } -echo "$as_me:$LINENO: checking size of uintptr_t" >&5 -echo $ECHO_N "checking size of uintptr_t... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of uintptr_t" >&5 +echo $ECHO_N "checking size of uintptr_t... $ECHO_C" >&6; } if test "${ac_cv_sizeof_uintptr_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_uintptr_t" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -10228,10 +10689,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef uintptr_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (uintptr_t))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -10239,27 +10701,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -10269,10 +10726,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef uintptr_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (uintptr_t))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -10280,56 +10738,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef uintptr_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (uintptr_t))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -10337,27 +10792,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -10367,10 +10817,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef uintptr_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (uintptr_t))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -10378,50 +10829,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -10432,10 +10881,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef uintptr_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (uintptr_t))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -10443,52 +10893,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_uintptr_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (uintptr_t), 77 +'') if test "$ac_cv_type_uintptr_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (uintptr_t) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (uintptr_t), 77 +echo "$as_me: error: cannot compute sizeof (uintptr_t) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_uintptr_t=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -10496,8 +10939,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (uintptr_t)); } -unsigned long ulongval () { return (long) (sizeof (uintptr_t)); } + typedef uintptr_t ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -10506,35 +10950,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (uintptr_t))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (uintptr_t)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (uintptr_t)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10545,22 +10998,25 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (uintptr_t), 77 +if test "$ac_cv_type_uintptr_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (uintptr_t) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (uintptr_t), 77 +echo "$as_me: error: cannot compute sizeof (uintptr_t) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_uintptr_t=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_uintptr_t=0 -fi fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_uintptr_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_uintptr_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_uintptr_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_uintptr_t" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_UINTPTR_T $ac_cv_sizeof_uintptr_t _ACEOF @@ -10571,8 +11027,8 @@ # Hmph. AC_CHECK_SIZEOF() doesn't include . -echo "$as_me:$LINENO: checking size of off_t" >&5 -echo $ECHO_N "checking size of off_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking size of off_t" >&5 +echo $ECHO_N "checking size of off_t... $ECHO_C" >&6; } if test "${ac_cv_sizeof_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10596,13 +11052,22 @@ } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10615,21 +11080,23 @@ ( exit $ac_status ) ac_cv_sizeof_off_t=0 fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_OFF_T $ac_cv_sizeof_off_t _ACEOF -echo "$as_me:$LINENO: checking whether to enable large file support" >&5 -echo $ECHO_N "checking whether to enable large file support... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether to enable large file support" >&5 +echo $ECHO_N "checking whether to enable large file support... $ECHO_C" >&6; } if test "$have_long_long" = yes -a \ "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \ "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then @@ -10638,16 +11105,16 @@ #define HAVE_LARGEFILE_SUPPORT 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi # AC_CHECK_SIZEOF() doesn't include . -echo "$as_me:$LINENO: checking size of time_t" >&5 -echo $ECHO_N "checking size of time_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking size of time_t" >&5 +echo $ECHO_N "checking size of time_t... $ECHO_C" >&6; } if test "${ac_cv_sizeof_time_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10671,13 +11138,22 @@ } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10690,13 +11166,15 @@ ( exit $ac_status ) ac_cv_sizeof_time_t=0 fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_time_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_time_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_time_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_time_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_TIME_T $ac_cv_sizeof_time_t @@ -10713,8 +11191,8 @@ elif test "$ac_cv_pthread" = "yes" then CC="$CC -pthread" fi -echo "$as_me:$LINENO: checking for pthread_t" >&5 -echo $ECHO_N "checking for pthread_t... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for pthread_t" >&5 +echo $ECHO_N "checking for pthread_t... $ECHO_C" >&6; } have_pthread_t=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -10732,40 +11210,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then have_pthread_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $have_pthread_t" >&5 -echo "${ECHO_T}$have_pthread_t" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $have_pthread_t" >&5 +echo "${ECHO_T}$have_pthread_t" >&6; } if test "$have_pthread_t" = yes ; then # AC_CHECK_SIZEOF() doesn't include . - echo "$as_me:$LINENO: checking size of pthread_t" >&5 -echo $ECHO_N "checking size of pthread_t... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking size of pthread_t" >&5 +echo $ECHO_N "checking size of pthread_t... $ECHO_C" >&6; } if test "${ac_cv_sizeof_pthread_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10789,13 +11264,22 @@ } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10808,13 +11292,15 @@ ( exit $ac_status ) ac_cv_sizeof_pthread_t=0 fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi - echo "$as_me:$LINENO: result: $ac_cv_sizeof_pthread_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_pthread_t" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_sizeof_pthread_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_pthread_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_PTHREAD_T $ac_cv_sizeof_pthread_t @@ -10823,13 +11309,13 @@ fi CC="$ac_save_cc" -echo "$as_me:$LINENO: checking for --enable-toolbox-glue" >&5 -echo $ECHO_N "checking for --enable-toolbox-glue... $ECHO_C" >&6 -# Check whether --enable-toolbox-glue or --disable-toolbox-glue was given. +{ echo "$as_me:$LINENO: checking for --enable-toolbox-glue" >&5 +echo $ECHO_N "checking for --enable-toolbox-glue... $ECHO_C" >&6; } +# Check whether --enable-toolbox-glue was given. if test "${enable_toolbox_glue+set}" = set; then - enableval="$enable_toolbox_glue" + enableval=$enable_toolbox_glue; +fi -fi; if test -z "$enable_toolbox_glue" then @@ -10855,8 +11341,8 @@ extra_undefs="" ;; esac -echo "$as_me:$LINENO: result: $enable_toolbox_glue" >&5 -echo "${ECHO_T}$enable_toolbox_glue" >&6 +{ echo "$as_me:$LINENO: result: $enable_toolbox_glue" >&5 +echo "${ECHO_T}$enable_toolbox_glue" >&6; } case $ac_sys_system/$ac_sys_release in @@ -10892,8 +11378,8 @@ LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; esac -echo "$as_me:$LINENO: checking for --enable-framework" >&5 -echo $ECHO_N "checking for --enable-framework... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --enable-framework" >&5 +echo $ECHO_N "checking for --enable-framework... $ECHO_C" >&6; } if test "$enable_framework" then BASECFLAGS="$BASECFLAGS -fno-common -dynamic" @@ -10904,15 +11390,15 @@ #define WITH_NEXT_FRAMEWORK 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -echo "$as_me:$LINENO: checking for dyld" >&5 -echo $ECHO_N "checking for dyld... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for dyld" >&5 +echo $ECHO_N "checking for dyld... $ECHO_C" >&6; } case $ac_sys_system/$ac_sys_release in Darwin/*) @@ -10920,12 +11406,12 @@ #define WITH_DYLD 1 _ACEOF - echo "$as_me:$LINENO: result: always on for Darwin" >&5 -echo "${ECHO_T}always on for Darwin" >&6 + { echo "$as_me:$LINENO: result: always on for Darwin" >&5 +echo "${ECHO_T}always on for Darwin" >&6; } ;; *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } ;; esac @@ -10937,8 +11423,8 @@ # SO is the extension of shared libraries `(including the dot!) # -- usually .so, .sl on HP-UX, .dll on Cygwin -echo "$as_me:$LINENO: checking SO" >&5 -echo $ECHO_N "checking SO... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking SO" >&5 +echo $ECHO_N "checking SO... $ECHO_C" >&6; } if test -z "$SO" then case $ac_sys_system in @@ -10963,8 +11449,8 @@ echo '=====================================================================' sleep 10 fi -echo "$as_me:$LINENO: result: $SO" >&5 -echo "${ECHO_T}$SO" >&6 +{ echo "$as_me:$LINENO: result: $SO" >&5 +echo "${ECHO_T}$SO" >&6; } cat >>confdefs.h <<_ACEOF #define SHLIB_EXT "$SO" @@ -10974,8 +11460,8 @@ # -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5 # (Shared libraries in this instance are shared modules to be loaded into # Python, as opposed to building Python itself as a shared library.) -echo "$as_me:$LINENO: checking LDSHARED" >&5 -echo $ECHO_N "checking LDSHARED... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking LDSHARED" >&5 +echo $ECHO_N "checking LDSHARED... $ECHO_C" >&6; } if test -z "$LDSHARED" then case $ac_sys_system/$ac_sys_release in @@ -11025,6 +11511,14 @@ cur_target=10.3 fi CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + + # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the + # environment with a value that is the same as what we'll use + # in the Makefile to ensure that we'll get the same compiler + # environment during configure and build time. + MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" + export MACOSX_DEPLOYMENT_TARGET + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 then @@ -11082,13 +11576,13 @@ *) LDSHARED="ld";; esac fi -echo "$as_me:$LINENO: result: $LDSHARED" >&5 -echo "${ECHO_T}$LDSHARED" >&6 +{ echo "$as_me:$LINENO: result: $LDSHARED" >&5 +echo "${ECHO_T}$LDSHARED" >&6; } BLDSHARED=${BLDSHARED-$LDSHARED} # CCSHARED are the C *flags* used to create objects to go into a shared # library (module) -- this is only needed for a few systems -echo "$as_me:$LINENO: checking CCSHARED" >&5 -echo $ECHO_N "checking CCSHARED... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking CCSHARED" >&5 +echo $ECHO_N "checking CCSHARED... $ECHO_C" >&6; } if test -z "$CCSHARED" then case $ac_sys_system/$ac_sys_release in @@ -11123,12 +11617,12 @@ atheos*) CCSHARED="-fPIC";; esac fi -echo "$as_me:$LINENO: result: $CCSHARED" >&5 -echo "${ECHO_T}$CCSHARED" >&6 +{ echo "$as_me:$LINENO: result: $CCSHARED" >&5 +echo "${ECHO_T}$CCSHARED" >&6; } # LINKFORSHARED are the flags passed to the $(CC) command that links # the python executable -- this is only needed for a few systems -echo "$as_me:$LINENO: checking LINKFORSHARED" >&5 -echo $ECHO_N "checking LINKFORSHARED... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking LINKFORSHARED" >&5 +echo $ECHO_N "checking LINKFORSHARED... $ECHO_C" >&6; } if test -z "$LINKFORSHARED" then case $ac_sys_system/$ac_sys_release in @@ -11176,12 +11670,12 @@ fi;; esac fi -echo "$as_me:$LINENO: result: $LINKFORSHARED" >&5 -echo "${ECHO_T}$LINKFORSHARED" >&6 +{ echo "$as_me:$LINENO: result: $LINKFORSHARED" >&5 +echo "${ECHO_T}$LINKFORSHARED" >&6; } -echo "$as_me:$LINENO: checking CFLAGSFORSHARED" >&5 -echo $ECHO_N "checking CFLAGSFORSHARED... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking CFLAGSFORSHARED" >&5 +echo $ECHO_N "checking CFLAGSFORSHARED... $ECHO_C" >&6; } if test ! "$LIBRARY" = "$LDLIBRARY" then case $ac_sys_system in @@ -11193,8 +11687,8 @@ CFLAGSFORSHARED='$(CCSHARED)' esac fi -echo "$as_me:$LINENO: result: $CFLAGSFORSHARED" >&5 -echo "${ECHO_T}$CFLAGSFORSHARED" >&6 +{ echo "$as_me:$LINENO: result: $CFLAGSFORSHARED" >&5 +echo "${ECHO_T}$CFLAGSFORSHARED" >&6; } # SHLIBS are libraries (except -lc and -lm) to link to the python shared # library (with --enable-shared). @@ -11205,20 +11699,20 @@ # don't need to link LIBS explicitly. The default should be only changed # on systems where this approach causes problems. -echo "$as_me:$LINENO: checking SHLIBS" >&5 -echo $ECHO_N "checking SHLIBS... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking SHLIBS" >&5 +echo $ECHO_N "checking SHLIBS... $ECHO_C" >&6; } case "$ac_sys_system" in *) SHLIBS='$(LIBS)';; esac -echo "$as_me:$LINENO: result: $SHLIBS" >&5 -echo "${ECHO_T}$SHLIBS" >&6 +{ echo "$as_me:$LINENO: result: $SHLIBS" >&5 +echo "${ECHO_T}$SHLIBS" >&6; } # checks for libraries -echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11231,56 +11725,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dlopen (); int main () { -dlopen (); +return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBDL 1 @@ -11291,8 +11782,8 @@ fi # Dynamic linking for SunOS/Solaris and SYSV -echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11305,56 +11796,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char shl_load (); int main () { -shl_load (); +return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dld_shl_load=no + ac_cv_lib_dld_shl_load=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } if test $ac_cv_lib_dld_shl_load = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBDLD 1 @@ -11367,13 +11855,12 @@ # only check for sem_ini if thread support is requested if test "$with_threads" = "yes" -o -z "$with_threads"; then - echo "$as_me:$LINENO: checking for library containing sem_init" >&5 -echo $ECHO_N "checking for library containing sem_init... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for library containing sem_init" >&5 +echo $ECHO_N "checking for library containing sem_init... $ECHO_C" >&6; } if test "${ac_cv_search_sem_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS -ac_cv_search_sem_init=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11381,115 +11868,73 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char sem_init (); int main () { -sem_init (); +return sem_init (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +for ac_lib in '' pthread rt posix4; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_sem_init="none required" + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_sem_init=$ac_res else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_sem_init" = no; then - for ac_lib in pthread rt posix4; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char sem_init (); -int -main () -{ -sem_init (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_sem_init="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +fi +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_sem_init+set}" = set; then + break fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done +done +if test "${ac_cv_search_sem_init+set}" = set; then + : +else + ac_cv_search_sem_init=no fi +rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_search_sem_init" >&5 -echo "${ECHO_T}$ac_cv_search_sem_init" >&6 -if test "$ac_cv_search_sem_init" != no; then - test "$ac_cv_search_sem_init" = "none required" || LIBS="$ac_cv_search_sem_init $LIBS" +{ echo "$as_me:$LINENO: result: $ac_cv_search_sem_init" >&5 +echo "${ECHO_T}$ac_cv_search_sem_init" >&6; } +ac_res=$ac_cv_search_sem_init +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi # 'Real Time' functions on Solaris @@ -11498,8 +11943,8 @@ fi # check if we need libintl for locale functions -echo "$as_me:$LINENO: checking for textdomain in -lintl" >&5 -echo $ECHO_N "checking for textdomain in -lintl... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for textdomain in -lintl" >&5 +echo $ECHO_N "checking for textdomain in -lintl... $ECHO_C" >&6; } if test "${ac_cv_lib_intl_textdomain+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11512,56 +11957,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char textdomain (); int main () { -textdomain (); +return textdomain (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_intl_textdomain=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_intl_textdomain=no + ac_cv_lib_intl_textdomain=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_intl_textdomain" >&5 -echo "${ECHO_T}$ac_cv_lib_intl_textdomain" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_textdomain" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_textdomain" >&6; } if test $ac_cv_lib_intl_textdomain = yes; then cat >>confdefs.h <<\_ACEOF @@ -11573,8 +12015,8 @@ # checks for system dependent C++ extensions support case "$ac_sys_system" in - AIX*) echo "$as_me:$LINENO: checking for genuine AIX C++ extensions support" >&5 -echo $ECHO_N "checking for genuine AIX C++ extensions support... $ECHO_C" >&6 + AIX*) { echo "$as_me:$LINENO: checking for genuine AIX C++ extensions support" >&5 +echo $ECHO_N "checking for genuine AIX C++ extensions support... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11591,50 +12033,47 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then cat >>confdefs.h <<\_ACEOF #define AIX_GENUINE_CPLUSPLUS 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext;; *) ;; esac # Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl. # BeOS' sockets are stashed in libnet. -echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 -echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 +echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6; } if test "${ac_cv_lib_nsl_t_open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11647,62 +12086,59 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char t_open (); int main () { -t_open (); +return t_open (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_nsl_t_open=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_nsl_t_open=no + ac_cv_lib_nsl_t_open=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6; } if test $ac_cv_lib_nsl_t_open = yes; then LIBS="-lnsl $LIBS" fi # SVR4 -echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 -echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 +echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; } if test "${ac_cv_lib_socket_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11715,56 +12151,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char socket (); int main () { -socket (); +return socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_socket_socket=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_socket_socket=no + ac_cv_lib_socket_socket=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; } if test $ac_cv_lib_socket_socket = yes; then LIBS="-lsocket $LIBS" fi @@ -11772,8 +12205,8 @@ case "$ac_sys_system" in BeOS*) -echo "$as_me:$LINENO: checking for socket in -lnet" >&5 -echo $ECHO_N "checking for socket in -lnet... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for socket in -lnet" >&5 +echo $ECHO_N "checking for socket in -lnet... $ECHO_C" >&6; } if test "${ac_cv_lib_net_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11786,56 +12219,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char socket (); int main () { -socket (); +return socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_net_socket=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_net_socket=no + ac_cv_lib_net_socket=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_net_socket" >&5 -echo "${ECHO_T}$ac_cv_lib_net_socket" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_net_socket" >&5 +echo "${ECHO_T}$ac_cv_lib_net_socket" >&6; } if test $ac_cv_lib_net_socket = yes; then LIBS="-lnet $LIBS" fi @@ -11843,55 +12273,55 @@ ;; esac -echo "$as_me:$LINENO: checking for --with-libs" >&5 -echo $ECHO_N "checking for --with-libs... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-libs" >&5 +echo $ECHO_N "checking for --with-libs... $ECHO_C" >&6; } -# Check whether --with-libs or --without-libs was given. +# Check whether --with-libs was given. if test "${with_libs+set}" = set; then - withval="$with_libs" - -echo "$as_me:$LINENO: result: $withval" >&5 -echo "${ECHO_T}$withval" >&6 + withval=$with_libs; +{ echo "$as_me:$LINENO: result: $withval" >&5 +echo "${ECHO_T}$withval" >&6; } LIBS="$withval $LIBS" else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi; + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + # Check for use of the system libffi library -echo "$as_me:$LINENO: checking for --with-system-ffi" >&5 -echo $ECHO_N "checking for --with-system-ffi... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-system-ffi" >&5 +echo $ECHO_N "checking for --with-system-ffi... $ECHO_C" >&6; } -# Check whether --with-system_ffi or --without-system_ffi was given. +# Check whether --with-system_ffi was given. if test "${with_system_ffi+set}" = set; then - withval="$with_system_ffi" + withval=$with_system_ffi; +fi -fi; if test -z "$with_system_ffi" then with_system_ffi="no" fi -echo "$as_me:$LINENO: result: $with_system_ffi" >&5 -echo "${ECHO_T}$with_system_ffi" >&6 +{ echo "$as_me:$LINENO: result: $with_system_ffi" >&5 +echo "${ECHO_T}$with_system_ffi" >&6; } # Determine if signalmodule should be used. -echo "$as_me:$LINENO: checking for --with-signal-module" >&5 -echo $ECHO_N "checking for --with-signal-module... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-signal-module" >&5 +echo $ECHO_N "checking for --with-signal-module... $ECHO_C" >&6; } -# Check whether --with-signal-module or --without-signal-module was given. +# Check whether --with-signal-module was given. if test "${with_signal_module+set}" = set; then - withval="$with_signal_module" + withval=$with_signal_module; +fi -fi; if test -z "$with_signal_module" then with_signal_module="yes" fi -echo "$as_me:$LINENO: result: $with_signal_module" >&5 -echo "${ECHO_T}$with_signal_module" >&6 +{ echo "$as_me:$LINENO: result: $with_signal_module" >&5 +echo "${ECHO_T}$with_signal_module" >&6; } if test "${with_signal_module}" = "yes"; then USE_SIGNAL_MODULE="" @@ -11905,24 +12335,24 @@ USE_THREAD_MODULE="" -echo "$as_me:$LINENO: checking for --with-dec-threads" >&5 -echo $ECHO_N "checking for --with-dec-threads... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-dec-threads" >&5 +echo $ECHO_N "checking for --with-dec-threads... $ECHO_C" >&6; } -# Check whether --with-dec-threads or --without-dec-threads was given. +# Check whether --with-dec-threads was given. if test "${with_dec_threads+set}" = set; then - withval="$with_dec_threads" - -echo "$as_me:$LINENO: result: $withval" >&5 -echo "${ECHO_T}$withval" >&6 + withval=$with_dec_threads; +{ echo "$as_me:$LINENO: result: $withval" >&5 +echo "${ECHO_T}$withval" >&6; } LDLAST=-threads if test "${with_thread+set}" != set; then with_thread="$withval"; fi else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi; + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + # Templates for things AC_DEFINEd more than once. # For a single AC_DEFINE, no template is needed. @@ -11933,28 +12363,28 @@ -echo "$as_me:$LINENO: checking for --with-threads" >&5 -echo $ECHO_N "checking for --with-threads... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-threads" >&5 +echo $ECHO_N "checking for --with-threads... $ECHO_C" >&6; } -# Check whether --with-threads or --without-threads was given. +# Check whether --with-threads was given. if test "${with_threads+set}" = set; then - withval="$with_threads" + withval=$with_threads; +fi -fi; # --with-thread is deprecated, but check for it anyway -# Check whether --with-thread or --without-thread was given. +# Check whether --with-thread was given. if test "${with_thread+set}" = set; then - withval="$with_thread" - with_threads=$with_thread -fi; + withval=$with_thread; with_threads=$with_thread +fi + if test -z "$with_threads" then with_threads="yes" fi -echo "$as_me:$LINENO: result: $with_threads" >&5 -echo "${ECHO_T}$with_threads" >&6 +{ echo "$as_me:$LINENO: result: $with_threads" >&5 +echo "${ECHO_T}$with_threads" >&6; } if test "$with_threads" = "no" @@ -12020,8 +12450,8 @@ # According to the POSIX spec, a pthreads implementation must # define _POSIX_THREADS in unistd.h. Some apparently don't # (e.g. gnu pth with pthread emulation) - echo "$as_me:$LINENO: checking for _POSIX_THREADS in unistd.h" >&5 -echo $ECHO_N "checking for _POSIX_THREADS in unistd.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for _POSIX_THREADS in unistd.h" >&5 +echo $ECHO_N "checking for _POSIX_THREADS in unistd.h... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12043,25 +12473,25 @@ fi rm -f conftest* - echo "$as_me:$LINENO: result: $unistd_defines_pthreads" >&5 -echo "${ECHO_T}$unistd_defines_pthreads" >&6 + { echo "$as_me:$LINENO: result: $unistd_defines_pthreads" >&5 +echo "${ECHO_T}$unistd_defines_pthreads" >&6; } cat >>confdefs.h <<\_ACEOF #define _REENTRANT 1 _ACEOF if test "${ac_cv_header_cthreads_h+set}" = set; then - echo "$as_me:$LINENO: checking for cthreads.h" >&5 -echo $ECHO_N "checking for cthreads.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for cthreads.h" >&5 +echo $ECHO_N "checking for cthreads.h... $ECHO_C" >&6; } if test "${ac_cv_header_cthreads_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_cthreads_h" >&5 -echo "${ECHO_T}$ac_cv_header_cthreads_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_cthreads_h" >&5 +echo "${ECHO_T}$ac_cv_header_cthreads_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking cthreads.h usability" >&5 -echo $ECHO_N "checking cthreads.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking cthreads.h usability" >&5 +echo $ECHO_N "checking cthreads.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12072,41 +12502,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking cthreads.h presence" >&5 -echo $ECHO_N "checking cthreads.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking cthreads.h presence" >&5 +echo $ECHO_N "checking cthreads.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12115,24 +12541,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12140,9 +12564,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12166,25 +12591,23 @@ echo "$as_me: WARNING: cthreads.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: cthreads.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: cthreads.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to http://www.python.org/python-bugs ## ## ------------------------------------------------ ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for cthreads.h" >&5 -echo $ECHO_N "checking for cthreads.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for cthreads.h" >&5 +echo $ECHO_N "checking for cthreads.h... $ECHO_C" >&6; } if test "${ac_cv_header_cthreads_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_cthreads_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_cthreads_h" >&5 -echo "${ECHO_T}$ac_cv_header_cthreads_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_cthreads_h" >&5 +echo "${ECHO_T}$ac_cv_header_cthreads_h" >&6; } fi if test $ac_cv_header_cthreads_h = yes; then @@ -12206,17 +12629,17 @@ else if test "${ac_cv_header_mach_cthreads_h+set}" = set; then - echo "$as_me:$LINENO: checking for mach/cthreads.h" >&5 -echo $ECHO_N "checking for mach/cthreads.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for mach/cthreads.h" >&5 +echo $ECHO_N "checking for mach/cthreads.h... $ECHO_C" >&6; } if test "${ac_cv_header_mach_cthreads_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_mach_cthreads_h" >&5 -echo "${ECHO_T}$ac_cv_header_mach_cthreads_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_mach_cthreads_h" >&5 +echo "${ECHO_T}$ac_cv_header_mach_cthreads_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking mach/cthreads.h usability" >&5 -echo $ECHO_N "checking mach/cthreads.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking mach/cthreads.h usability" >&5 +echo $ECHO_N "checking mach/cthreads.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12227,41 +12650,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking mach/cthreads.h presence" >&5 -echo $ECHO_N "checking mach/cthreads.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking mach/cthreads.h presence" >&5 +echo $ECHO_N "checking mach/cthreads.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12270,24 +12689,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12295,9 +12712,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12321,25 +12739,23 @@ echo "$as_me: WARNING: mach/cthreads.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: mach/cthreads.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: mach/cthreads.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to http://www.python.org/python-bugs ## ## ------------------------------------------------ ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for mach/cthreads.h" >&5 -echo $ECHO_N "checking for mach/cthreads.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for mach/cthreads.h" >&5 +echo $ECHO_N "checking for mach/cthreads.h... $ECHO_C" >&6; } if test "${ac_cv_header_mach_cthreads_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_mach_cthreads_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_mach_cthreads_h" >&5 -echo "${ECHO_T}$ac_cv_header_mach_cthreads_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_mach_cthreads_h" >&5 +echo "${ECHO_T}$ac_cv_header_mach_cthreads_h" >&6; } fi if test $ac_cv_header_mach_cthreads_h = yes; then @@ -12359,14 +12775,13 @@ THREADOBJ="Python/thread.o" else - echo "$as_me:$LINENO: checking for --with-pth" >&5 -echo $ECHO_N "checking for --with-pth... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for --with-pth" >&5 +echo $ECHO_N "checking for --with-pth... $ECHO_C" >&6; } -# Check whether --with-pth or --without-pth was given. +# Check whether --with-pth was given. if test "${with_pth+set}" = set; then - withval="$with_pth" - echo "$as_me:$LINENO: result: $withval" >&5 -echo "${ECHO_T}$withval" >&6 + withval=$with_pth; { echo "$as_me:$LINENO: result: $withval" >&5 +echo "${ECHO_T}$withval" >&6; } cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 _ACEOF @@ -12379,16 +12794,16 @@ LIBS="-lpth $LIBS" THREADOBJ="Python/thread.o" else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } # Just looking for pthread_create in libpthread is not enough: # on HP/UX, pthread.h renames pthread_create to a different symbol name. # So we really have to include pthread.h, and then link. _libs=$LIBS LIBS="$LIBS -lpthread" - echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 -echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12408,30 +12823,26 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 _ACEOF @@ -12444,8 +12855,8 @@ LIBS=$_libs - echo "$as_me:$LINENO: checking for pthread_detach" >&5 -echo $ECHO_N "checking for pthread_detach... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for pthread_detach" >&5 +echo $ECHO_N "checking for pthread_detach... $ECHO_C" >&6; } if test "${ac_cv_func_pthread_detach+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12472,68 +12883,59 @@ #undef pthread_detach -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char pthread_detach (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_pthread_detach) || defined (__stub___pthread_detach) +#if defined __stub_pthread_detach || defined __stub___pthread_detach choke me -#else -char (*f) () = pthread_detach; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != pthread_detach; +return pthread_detach (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_pthread_detach=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_pthread_detach=no + ac_cv_func_pthread_detach=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_pthread_detach" >&5 -echo "${ECHO_T}$ac_cv_func_pthread_detach" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_pthread_detach" >&5 +echo "${ECHO_T}$ac_cv_func_pthread_detach" >&6; } if test $ac_cv_func_pthread_detach = yes; then cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 @@ -12544,17 +12946,17 @@ else if test "${ac_cv_header_atheos_threads_h+set}" = set; then - echo "$as_me:$LINENO: checking for atheos/threads.h" >&5 -echo $ECHO_N "checking for atheos/threads.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for atheos/threads.h" >&5 +echo $ECHO_N "checking for atheos/threads.h... $ECHO_C" >&6; } if test "${ac_cv_header_atheos_threads_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_atheos_threads_h" >&5 -echo "${ECHO_T}$ac_cv_header_atheos_threads_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_atheos_threads_h" >&5 +echo "${ECHO_T}$ac_cv_header_atheos_threads_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking atheos/threads.h usability" >&5 -echo $ECHO_N "checking atheos/threads.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking atheos/threads.h usability" >&5 +echo $ECHO_N "checking atheos/threads.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12565,41 +12967,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking atheos/threads.h presence" >&5 -echo $ECHO_N "checking atheos/threads.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking atheos/threads.h presence" >&5 +echo $ECHO_N "checking atheos/threads.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12608,24 +13006,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12633,9 +13029,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12659,25 +13056,23 @@ echo "$as_me: WARNING: atheos/threads.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: atheos/threads.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: atheos/threads.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to http://www.python.org/python-bugs ## ## ------------------------------------------------ ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for atheos/threads.h" >&5 -echo $ECHO_N "checking for atheos/threads.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for atheos/threads.h" >&5 +echo $ECHO_N "checking for atheos/threads.h... $ECHO_C" >&6; } if test "${ac_cv_header_atheos_threads_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_atheos_threads_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_atheos_threads_h" >&5 -echo "${ECHO_T}$ac_cv_header_atheos_threads_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_atheos_threads_h" >&5 +echo "${ECHO_T}$ac_cv_header_atheos_threads_h" >&6; } fi if test $ac_cv_header_atheos_threads_h = yes; then @@ -12694,17 +13089,17 @@ else if test "${ac_cv_header_kernel_OS_h+set}" = set; then - echo "$as_me:$LINENO: checking for kernel/OS.h" >&5 -echo $ECHO_N "checking for kernel/OS.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for kernel/OS.h" >&5 +echo $ECHO_N "checking for kernel/OS.h... $ECHO_C" >&6; } if test "${ac_cv_header_kernel_OS_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_kernel_OS_h" >&5 -echo "${ECHO_T}$ac_cv_header_kernel_OS_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_kernel_OS_h" >&5 +echo "${ECHO_T}$ac_cv_header_kernel_OS_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking kernel/OS.h usability" >&5 -echo $ECHO_N "checking kernel/OS.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking kernel/OS.h usability" >&5 +echo $ECHO_N "checking kernel/OS.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12715,41 +13110,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking kernel/OS.h presence" >&5 -echo $ECHO_N "checking kernel/OS.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking kernel/OS.h presence" >&5 +echo $ECHO_N "checking kernel/OS.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12758,24 +13149,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12783,9 +13172,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12809,25 +13199,23 @@ echo "$as_me: WARNING: kernel/OS.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: kernel/OS.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: kernel/OS.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to http://www.python.org/python-bugs ## ## ------------------------------------------------ ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for kernel/OS.h" >&5 -echo $ECHO_N "checking for kernel/OS.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for kernel/OS.h" >&5 +echo $ECHO_N "checking for kernel/OS.h... $ECHO_C" >&6; } if test "${ac_cv_header_kernel_OS_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_kernel_OS_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_kernel_OS_h" >&5 -echo "${ECHO_T}$ac_cv_header_kernel_OS_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_kernel_OS_h" >&5 +echo "${ECHO_T}$ac_cv_header_kernel_OS_h" >&6; } fi if test $ac_cv_header_kernel_OS_h = yes; then @@ -12843,8 +13231,8 @@ THREADOBJ="Python/thread.o" else - echo "$as_me:$LINENO: checking for pthread_create in -lpthreads" >&5 -echo $ECHO_N "checking for pthread_create in -lpthreads... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for pthread_create in -lpthreads" >&5 +echo $ECHO_N "checking for pthread_create in -lpthreads... $ECHO_C" >&6; } if test "${ac_cv_lib_pthreads_pthread_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12857,56 +13245,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char pthread_create (); int main () { -pthread_create (); +return pthread_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_pthreads_pthread_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_pthreads_pthread_create=no + ac_cv_lib_pthreads_pthread_create=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pthreads_pthread_create" >&5 -echo "${ECHO_T}$ac_cv_lib_pthreads_pthread_create" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthreads_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthreads_pthread_create" >&6; } if test $ac_cv_lib_pthreads_pthread_create = yes; then cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 @@ -12917,8 +13302,8 @@ THREADOBJ="Python/thread.o" else - echo "$as_me:$LINENO: checking for pthread_create in -lc_r" >&5 -echo $ECHO_N "checking for pthread_create in -lc_r... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for pthread_create in -lc_r" >&5 +echo $ECHO_N "checking for pthread_create in -lc_r... $ECHO_C" >&6; } if test "${ac_cv_lib_c_r_pthread_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12931,56 +13316,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char pthread_create (); int main () { -pthread_create (); +return pthread_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_c_r_pthread_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_c_r_pthread_create=no + ac_cv_lib_c_r_pthread_create=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_create" >&5 -echo "${ECHO_T}$ac_cv_lib_c_r_pthread_create" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_c_r_pthread_create" >&6; } if test $ac_cv_lib_c_r_pthread_create = yes; then cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 @@ -12991,8 +13373,8 @@ THREADOBJ="Python/thread.o" else - echo "$as_me:$LINENO: checking for __pthread_create_system in -lpthread" >&5 -echo $ECHO_N "checking for __pthread_create_system in -lpthread... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for __pthread_create_system in -lpthread" >&5 +echo $ECHO_N "checking for __pthread_create_system in -lpthread... $ECHO_C" >&6; } if test "${ac_cv_lib_pthread___pthread_create_system+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13005,56 +13387,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char __pthread_create_system (); int main () { -__pthread_create_system (); +return __pthread_create_system (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_pthread___pthread_create_system=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_pthread___pthread_create_system=no + ac_cv_lib_pthread___pthread_create_system=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pthread___pthread_create_system" >&5 -echo "${ECHO_T}$ac_cv_lib_pthread___pthread_create_system" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread___pthread_create_system" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread___pthread_create_system" >&6; } if test $ac_cv_lib_pthread___pthread_create_system = yes; then cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 @@ -13065,8 +13444,8 @@ THREADOBJ="Python/thread.o" else - echo "$as_me:$LINENO: checking for pthread_create in -lcma" >&5 -echo $ECHO_N "checking for pthread_create in -lcma... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for pthread_create in -lcma" >&5 +echo $ECHO_N "checking for pthread_create in -lcma... $ECHO_C" >&6; } if test "${ac_cv_lib_cma_pthread_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13079,56 +13458,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char pthread_create (); int main () { -pthread_create (); +return pthread_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_cma_pthread_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_cma_pthread_create=no + ac_cv_lib_cma_pthread_create=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_cma_pthread_create" >&5 -echo "${ECHO_T}$ac_cv_lib_cma_pthread_create" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_cma_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_cma_pthread_create" >&6; } if test $ac_cv_lib_cma_pthread_create = yes; then cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 @@ -13158,9 +13534,11 @@ fi fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext -fi; +fi + fi @@ -13168,8 +13546,8 @@ - echo "$as_me:$LINENO: checking for usconfig in -lmpc" >&5 -echo $ECHO_N "checking for usconfig in -lmpc... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for usconfig in -lmpc" >&5 +echo $ECHO_N "checking for usconfig in -lmpc... $ECHO_C" >&6; } if test "${ac_cv_lib_mpc_usconfig+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13182,56 +13560,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char usconfig (); int main () { -usconfig (); +return usconfig (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_mpc_usconfig=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_mpc_usconfig=no + ac_cv_lib_mpc_usconfig=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_mpc_usconfig" >&5 -echo "${ECHO_T}$ac_cv_lib_mpc_usconfig" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_mpc_usconfig" >&5 +echo "${ECHO_T}$ac_cv_lib_mpc_usconfig" >&6; } if test $ac_cv_lib_mpc_usconfig = yes; then cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 @@ -13244,8 +13619,8 @@ if test "$posix_threads" != "yes"; then - echo "$as_me:$LINENO: checking for thr_create in -lthread" >&5 -echo $ECHO_N "checking for thr_create in -lthread... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for thr_create in -lthread" >&5 +echo $ECHO_N "checking for thr_create in -lthread... $ECHO_C" >&6; } if test "${ac_cv_lib_thread_thr_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13258,56 +13633,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char thr_create (); int main () { -thr_create (); +return thr_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_thread_thr_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_thread_thr_create=no + ac_cv_lib_thread_thr_create=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_thread_thr_create" >&5 -echo "${ECHO_T}$ac_cv_lib_thread_thr_create" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_thread_thr_create" >&5 +echo "${ECHO_T}$ac_cv_lib_thread_thr_create" >&6; } if test $ac_cv_lib_thread_thr_create = yes; then cat >>confdefs.h <<\_ACEOF #define WITH_THREAD 1 @@ -13355,8 +13727,8 @@ ;; esac - echo "$as_me:$LINENO: checking if PTHREAD_SCOPE_SYSTEM is supported" >&5 -echo $ECHO_N "checking if PTHREAD_SCOPE_SYSTEM is supported... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking if PTHREAD_SCOPE_SYSTEM is supported" >&5 +echo $ECHO_N "checking if PTHREAD_SCOPE_SYSTEM is supported... $ECHO_C" >&6; } if test "${ac_cv_pthread_system_supported+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13383,13 +13755,22 @@ } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13402,13 +13783,15 @@ ( exit $ac_status ) ac_cv_pthread_system_supported=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi - echo "$as_me:$LINENO: result: $ac_cv_pthread_system_supported" >&5 -echo "${ECHO_T}$ac_cv_pthread_system_supported" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_pthread_system_supported" >&5 +echo "${ECHO_T}$ac_cv_pthread_system_supported" >&6; } if test "$ac_cv_pthread_system_supported" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -13420,9 +13803,9 @@ for ac_func in pthread_sigmask do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13448,68 +13831,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13532,19 +13907,18 @@ # Check for enable-ipv6 -echo "$as_me:$LINENO: checking if --enable-ipv6 is specified" >&5 -echo $ECHO_N "checking if --enable-ipv6 is specified... $ECHO_C" >&6 -# Check whether --enable-ipv6 or --disable-ipv6 was given. +{ echo "$as_me:$LINENO: checking if --enable-ipv6 is specified" >&5 +echo $ECHO_N "checking if --enable-ipv6 is specified... $ECHO_C" >&6; } +# Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then - enableval="$enable_ipv6" - case "$enableval" in + enableval=$enable_ipv6; case "$enableval" in no) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } ipv6=no ;; - *) echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + *) { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ENABLE_IPV6 1 _ACEOF @@ -13555,8 +13929,8 @@ else if test "$cross_compiling" = yes; then - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } ipv6=no else @@ -13579,18 +13953,27 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } ipv6=yes else echo "$as_me: program exited with status $ac_status" >&5 @@ -13598,16 +13981,18 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 +{ echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } ipv6=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + if test "$ipv6" = "yes"; then - echo "$as_me:$LINENO: checking if RFC2553 API is available" >&5 -echo $ECHO_N "checking if RFC2553 API is available... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking if RFC2553 API is available" >&5 +echo $ECHO_N "checking if RFC2553 API is available... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -13626,39 +14011,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } ipv6=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } ipv6=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test "$ipv6" = "yes"; then @@ -13668,15 +14049,16 @@ fi -fi; +fi + ipv6type=unknown ipv6lib=none ipv6trylibc=no if test "$ipv6" = "yes"; then - echo "$as_me:$LINENO: checking ipv6 stack type" >&5 -echo $ECHO_N "checking ipv6 stack type... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking ipv6 stack type" >&5 +echo $ECHO_N "checking ipv6 stack type... $ECHO_C" >&6; } for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; do case $i in @@ -13832,8 +14214,8 @@ break fi done - echo "$as_me:$LINENO: result: $ipv6type" >&5 -echo "${ECHO_T}$ipv6type" >&6 + { echo "$as_me:$LINENO: result: $ipv6type" >&5 +echo "${ECHO_T}$ipv6type" >&6; } fi if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then @@ -13853,14 +14235,14 @@ fi # Check for --with-doc-strings -echo "$as_me:$LINENO: checking for --with-doc-strings" >&5 -echo $ECHO_N "checking for --with-doc-strings... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-doc-strings" >&5 +echo $ECHO_N "checking for --with-doc-strings... $ECHO_C" >&6; } -# Check whether --with-doc-strings or --without-doc-strings was given. +# Check whether --with-doc-strings was given. if test "${with_doc_strings+set}" = set; then - withval="$with_doc_strings" + withval=$with_doc_strings; +fi -fi; if test -z "$with_doc_strings" then with_doc_strings="yes" @@ -13873,17 +14255,16 @@ _ACEOF fi -echo "$as_me:$LINENO: result: $with_doc_strings" >&5 -echo "${ECHO_T}$with_doc_strings" >&6 +{ echo "$as_me:$LINENO: result: $with_doc_strings" >&5 +echo "${ECHO_T}$with_doc_strings" >&6; } # Check for Python-specific malloc support -echo "$as_me:$LINENO: checking for --with-tsc" >&5 -echo $ECHO_N "checking for --with-tsc... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-tsc" >&5 +echo $ECHO_N "checking for --with-tsc... $ECHO_C" >&6; } -# Check whether --with-tsc or --without-tsc was given. +# Check whether --with-tsc was given. if test "${with_tsc+set}" = set; then - withval="$with_tsc" - + withval=$with_tsc; if test "$withval" != no then @@ -13891,25 +14272,26 @@ #define WITH_TSC 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi; + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + # Check for Python-specific malloc support -echo "$as_me:$LINENO: checking for --with-pymalloc" >&5 -echo $ECHO_N "checking for --with-pymalloc... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-pymalloc" >&5 +echo $ECHO_N "checking for --with-pymalloc... $ECHO_C" >&6; } -# Check whether --with-pymalloc or --without-pymalloc was given. +# Check whether --with-pymalloc was given. if test "${with_pymalloc+set}" = set; then - withval="$with_pymalloc" + withval=$with_pymalloc; +fi -fi; if test -z "$with_pymalloc" then with_pymalloc="yes" @@ -13922,17 +14304,16 @@ _ACEOF fi -echo "$as_me:$LINENO: result: $with_pymalloc" >&5 -echo "${ECHO_T}$with_pymalloc" >&6 +{ echo "$as_me:$LINENO: result: $with_pymalloc" >&5 +echo "${ECHO_T}$with_pymalloc" >&6; } # Check for --with-wctype-functions -echo "$as_me:$LINENO: checking for --with-wctype-functions" >&5 -echo $ECHO_N "checking for --with-wctype-functions... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-wctype-functions" >&5 +echo $ECHO_N "checking for --with-wctype-functions... $ECHO_C" >&6; } -# Check whether --with-wctype-functions or --without-wctype-functions was given. +# Check whether --with-wctype-functions was given. if test "${with_wctype_functions+set}" = set; then - withval="$with_wctype_functions" - + withval=$with_wctype_functions; if test "$withval" != no then @@ -13940,15 +14321,16 @@ #define WANT_WCTYPE_FUNCTIONS 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi; + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + # -I${DLINCLDIR} is added to the compile rule for importdl.o @@ -13960,9 +14342,9 @@ for ac_func in dlopen do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13988,68 +14370,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14062,8 +14436,8 @@ # DYNLOADFILE specifies which dynload_*.o file we will use for dynamic # loading of modules. -echo "$as_me:$LINENO: checking DYNLOADFILE" >&5 -echo $ECHO_N "checking DYNLOADFILE... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking DYNLOADFILE" >&5 +echo $ECHO_N "checking DYNLOADFILE... $ECHO_C" >&6; } if test -z "$DYNLOADFILE" then case $ac_sys_system/$ac_sys_release in @@ -14088,8 +14462,8 @@ ;; esac fi -echo "$as_me:$LINENO: result: $DYNLOADFILE" >&5 -echo "${ECHO_T}$DYNLOADFILE" >&6 +{ echo "$as_me:$LINENO: result: $DYNLOADFILE" >&5 +echo "${ECHO_T}$DYNLOADFILE" >&6; } if test "$DYNLOADFILE" != "dynload_stub.o" then @@ -14102,16 +14476,16 @@ # MACHDEP_OBJS can be set to platform-specific object files needed by Python -echo "$as_me:$LINENO: checking MACHDEP_OBJS" >&5 -echo $ECHO_N "checking MACHDEP_OBJS... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking MACHDEP_OBJS" >&5 +echo $ECHO_N "checking MACHDEP_OBJS... $ECHO_C" >&6; } if test -z "$MACHDEP_OBJS" then MACHDEP_OBJS=$extra_machdep_objs else MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs" fi -echo "$as_me:$LINENO: result: MACHDEP_OBJS" >&5 -echo "${ECHO_T}MACHDEP_OBJS" >&6 +{ echo "$as_me:$LINENO: result: MACHDEP_OBJS" >&5 +echo "${ECHO_T}MACHDEP_OBJS" >&6; } # checks for library functions @@ -14204,9 +14578,9 @@ truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14232,68 +14606,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14305,8 +14671,8 @@ # For some functions, having a definition is not sufficient, since # we want to take their address. -echo "$as_me:$LINENO: checking for chroot" >&5 -echo $ECHO_N "checking for chroot... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for chroot" >&5 +echo $ECHO_N "checking for chroot... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14323,45 +14689,41 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_CHROOT 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for link" >&5 -echo $ECHO_N "checking for link... $ECHO_C" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: checking for link" >&5 +echo $ECHO_N "checking for link... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14378,45 +14740,41 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_LINK 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for symlink" >&5 -echo $ECHO_N "checking for symlink... $ECHO_C" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: checking for symlink" >&5 +echo $ECHO_N "checking for symlink... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14433,45 +14791,41 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYMLINK 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for fchdir" >&5 -echo $ECHO_N "checking for fchdir... $ECHO_C" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: checking for fchdir" >&5 +echo $ECHO_N "checking for fchdir... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14488,45 +14842,41 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_FCHDIR 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for fsync" >&5 -echo $ECHO_N "checking for fsync... $ECHO_C" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: checking for fsync" >&5 +echo $ECHO_N "checking for fsync... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14543,45 +14893,41 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_FSYNC 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for fdatasync" >&5 -echo $ECHO_N "checking for fdatasync... $ECHO_C" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: checking for fdatasync" >&5 +echo $ECHO_N "checking for fdatasync... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14598,43 +14944,39 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_FDATASYNC 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # On some systems (eg. FreeBSD 5), we would find a definition of the # functions ctermid_r, setgroups in the library, but no prototype @@ -14642,8 +14984,8 @@ # address to avoid compiler warnings and potential miscompilations # because of the missing prototypes. -echo "$as_me:$LINENO: checking for ctermid_r" >&5 -echo $ECHO_N "checking for ctermid_r... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ctermid_r" >&5 +echo $ECHO_N "checking for ctermid_r... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14663,46 +15005,42 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_CTERMID_R 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for flock" >&5 -echo $ECHO_N "checking for flock... $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ echo "$as_me:$LINENO: checking for flock" >&5 +echo $ECHO_N "checking for flock... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14722,46 +15060,42 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_FLOCK 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for getpagesize" >&5 -echo $ECHO_N "checking for getpagesize... $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ echo "$as_me:$LINENO: checking for getpagesize" >&5 +echo $ECHO_N "checking for getpagesize... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -14781,50 +15115,46 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETPAGESIZE 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext for ac_prog in true do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_TRUE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14837,32 +15167,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_TRUE="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi TRUE=$ac_cv_prog_TRUE if test -n "$TRUE"; then - echo "$as_me:$LINENO: result: $TRUE" >&5 -echo "${ECHO_T}$TRUE" >&6 + { echo "$as_me:$LINENO: result: $TRUE" >&5 +echo "${ECHO_T}$TRUE" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$TRUE" && break done test -n "$TRUE" || TRUE="/bin/true" -echo "$as_me:$LINENO: checking for inet_aton in -lc" >&5 -echo $ECHO_N "checking for inet_aton in -lc... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for inet_aton in -lc" >&5 +echo $ECHO_N "checking for inet_aton in -lc... $ECHO_C" >&6; } if test "${ac_cv_lib_c_inet_aton+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14875,62 +15207,59 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char inet_aton (); int main () { -inet_aton (); +return inet_aton (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_c_inet_aton=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_c_inet_aton=no + ac_cv_lib_c_inet_aton=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_c_inet_aton" >&5 -echo "${ECHO_T}$ac_cv_lib_c_inet_aton" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_inet_aton" >&5 +echo "${ECHO_T}$ac_cv_lib_c_inet_aton" >&6; } if test $ac_cv_lib_c_inet_aton = yes; then $ac_cv_prog_TRUE else -echo "$as_me:$LINENO: checking for inet_aton in -lresolv" >&5 -echo $ECHO_N "checking for inet_aton in -lresolv... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for inet_aton in -lresolv" >&5 +echo $ECHO_N "checking for inet_aton in -lresolv... $ECHO_C" >&6; } if test "${ac_cv_lib_resolv_inet_aton+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14943,56 +15272,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char inet_aton (); int main () { -inet_aton (); +return inet_aton (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_resolv_inet_aton=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_resolv_inet_aton=no + ac_cv_lib_resolv_inet_aton=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_inet_aton" >&5 -echo "${ECHO_T}$ac_cv_lib_resolv_inet_aton" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_inet_aton" >&5 +echo "${ECHO_T}$ac_cv_lib_resolv_inet_aton" >&6; } if test $ac_cv_lib_resolv_inet_aton = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBRESOLV 1 @@ -15015,8 +15341,8 @@ ;; esac -echo "$as_me:$LINENO: checking for inflateCopy in -lz" >&5 -echo $ECHO_N "checking for inflateCopy in -lz... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for inflateCopy in -lz" >&5 +echo $ECHO_N "checking for inflateCopy in -lz... $ECHO_C" >&6; } if test "${ac_cv_lib_z_inflateCopy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15029,56 +15355,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char inflateCopy (); int main () { -inflateCopy (); +return inflateCopy (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_z_inflateCopy=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_z_inflateCopy=no + ac_cv_lib_z_inflateCopy=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_z_inflateCopy" >&5 -echo "${ECHO_T}$ac_cv_lib_z_inflateCopy" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_inflateCopy" >&5 +echo "${ECHO_T}$ac_cv_lib_z_inflateCopy" >&6; } if test $ac_cv_lib_z_inflateCopy = yes; then cat >>confdefs.h <<\_ACEOF @@ -15095,8 +15418,8 @@ ;; esac -echo "$as_me:$LINENO: checking for hstrerror" >&5 -echo $ECHO_N "checking for hstrerror... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for hstrerror" >&5 +echo $ECHO_N "checking for hstrerror... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -15116,47 +15439,44 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then cat >>confdefs.h <<\_ACEOF #define HAVE_HSTRERROR 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext -echo "$as_me:$LINENO: checking for inet_aton" >&5 -echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for inet_aton" >&5 +echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -15179,47 +15499,44 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then cat >>confdefs.h <<\_ACEOF #define HAVE_INET_ATON 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext -echo "$as_me:$LINENO: checking for inet_pton" >&5 -echo $ECHO_N "checking for inet_pton... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for inet_pton" >&5 +echo $ECHO_N "checking for inet_pton... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -15242,47 +15559,43 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_INET_PTON 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # On some systems, setgroups is in unistd.h, on others, in grp.h -echo "$as_me:$LINENO: checking for setgroups" >&5 -echo $ECHO_N "checking for setgroups... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for setgroups" >&5 +echo $ECHO_N "checking for setgroups... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -15305,43 +15618,39 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_SETGROUPS 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # check for openpty and forkpty @@ -15349,9 +15658,9 @@ for ac_func in openpty do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -15377,76 +15686,68 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - echo "$as_me:$LINENO: checking for openpty in -lutil" >&5 -echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for openpty in -lutil" >&5 +echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6; } if test "${ac_cv_lib_util_openpty+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15459,64 +15760,61 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char openpty (); int main () { -openpty (); +return openpty (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_util_openpty=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_util_openpty=no + ac_cv_lib_util_openpty=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_util_openpty" >&5 -echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_util_openpty" >&5 +echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6; } if test $ac_cv_lib_util_openpty = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_OPENPTY 1 _ACEOF LIBS="$LIBS -lutil" else - echo "$as_me:$LINENO: checking for openpty in -lbsd" >&5 -echo $ECHO_N "checking for openpty in -lbsd... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for openpty in -lbsd" >&5 +echo $ECHO_N "checking for openpty in -lbsd... $ECHO_C" >&6; } if test "${ac_cv_lib_bsd_openpty+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15529,56 +15827,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char openpty (); int main () { -openpty (); +return openpty (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_bsd_openpty=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_bsd_openpty=no + ac_cv_lib_bsd_openpty=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_openpty" >&5 -echo "${ECHO_T}$ac_cv_lib_bsd_openpty" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_openpty" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_openpty" >&6; } if test $ac_cv_lib_bsd_openpty = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_OPENPTY 1 @@ -15597,9 +15892,9 @@ for ac_func in forkpty do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -15625,76 +15920,68 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - echo "$as_me:$LINENO: checking for forkpty in -lutil" >&5 -echo $ECHO_N "checking for forkpty in -lutil... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for forkpty in -lutil" >&5 +echo $ECHO_N "checking for forkpty in -lutil... $ECHO_C" >&6; } if test "${ac_cv_lib_util_forkpty+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15707,64 +15994,61 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char forkpty (); int main () { -forkpty (); +return forkpty (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_util_forkpty=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_util_forkpty=no + ac_cv_lib_util_forkpty=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_util_forkpty" >&5 -echo "${ECHO_T}$ac_cv_lib_util_forkpty" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_util_forkpty" >&5 +echo "${ECHO_T}$ac_cv_lib_util_forkpty" >&6; } if test $ac_cv_lib_util_forkpty = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_FORKPTY 1 _ACEOF LIBS="$LIBS -lutil" else - echo "$as_me:$LINENO: checking for forkpty in -lbsd" >&5 -echo $ECHO_N "checking for forkpty in -lbsd... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for forkpty in -lbsd" >&5 +echo $ECHO_N "checking for forkpty in -lbsd... $ECHO_C" >&6; } if test "${ac_cv_lib_bsd_forkpty+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15777,56 +16061,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char forkpty (); int main () { -forkpty (); +return forkpty (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_bsd_forkpty=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_bsd_forkpty=no + ac_cv_lib_bsd_forkpty=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_forkpty" >&5 -echo "${ECHO_T}$ac_cv_lib_bsd_forkpty" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_forkpty" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_forkpty" >&6; } if test $ac_cv_lib_bsd_forkpty = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_FORKPTY 1 @@ -15852,9 +16133,9 @@ for ac_func in fseek64 fseeko fstatvfs ftell64 ftello statvfs do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -15880,68 +16161,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -15959,9 +16232,9 @@ for ac_func in dup2 getcwd strdup strerror memmove do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -15987,80 +16260,70 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - case $LIBOBJS in - "$ac_func.$ac_objext" | \ - *" $ac_func.$ac_objext" | \ - "$ac_func.$ac_objext "* | \ + case " $LIBOBJS " in *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; esac fi @@ -16071,9 +16334,9 @@ for ac_func in getpgrp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -16099,68 +16362,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -16181,27 +16436,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define GETPGRP_HAVE_ARG 1 @@ -16212,8 +16462,10 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi done @@ -16222,9 +16474,9 @@ for ac_func in setpgrp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -16250,68 +16502,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -16332,27 +16576,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define SETPGRP_HAVE_ARG 1 @@ -16363,8 +16602,10 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi done @@ -16373,9 +16614,9 @@ for ac_func in gettimeofday do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -16401,68 +16642,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -16483,27 +16716,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 @@ -16516,14 +16744,15 @@ fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi done -echo "$as_me:$LINENO: checking for major" >&5 -echo $ECHO_N "checking for major... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for major" >&5 +echo $ECHO_N "checking for major... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16550,52 +16779,49 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then cat >>confdefs.h <<\_ACEOF #define HAVE_DEVICE_MACROS 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext # On OSF/1 V5.1, getaddrinfo is available, but a define # for [no]getaddrinfo in netdb.h. -echo "$as_me:$LINENO: checking for getaddrinfo" >&5 -echo $ECHO_N "checking for getaddrinfo... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for getaddrinfo" >&5 +echo $ECHO_N "checking for getaddrinfo... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16619,35 +16845,31 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -echo "$as_me:$LINENO: checking getaddrinfo bug" >&5 -echo $ECHO_N "checking getaddrinfo bug... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +{ echo "$as_me:$LINENO: checking getaddrinfo bug" >&5 +echo $ECHO_N "checking getaddrinfo bug... $ECHO_C" >&6; } if test "$cross_compiling" = yes; then - echo "$as_me:$LINENO: result: buggy" >&5 -echo "${ECHO_T}buggy" >&6 + { echo "$as_me:$LINENO: result: buggy" >&5 +echo "${ECHO_T}buggy" >&6; } buggygetaddrinfo=yes else cat >conftest.$ac_ext <<_ACEOF @@ -16745,18 +16967,27 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: good" >&5 -echo "${ECHO_T}good" >&6 + { echo "$as_me:$LINENO: result: good" >&5 +echo "${ECHO_T}good" >&6; } buggygetaddrinfo=no else echo "$as_me: program exited with status $ac_status" >&5 @@ -16764,23 +16995,26 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -echo "$as_me:$LINENO: result: buggy" >&5 -echo "${ECHO_T}buggy" >&6 +{ echo "$as_me:$LINENO: result: buggy" >&5 +echo "${ECHO_T}buggy" >&6; } buggygetaddrinfo=yes fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 +{ echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } buggygetaddrinfo=yes fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test "$buggygetaddrinfo" = "yes"; then @@ -16800,9 +17034,9 @@ for ac_func in getnameinfo do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -16828,68 +17062,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -16900,8 +17126,8 @@ # checks for structures -echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } if test "${ac_cv_header_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -16925,38 +17151,34 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_time=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_time=no + ac_cv_header_time=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then cat >>confdefs.h <<\_ACEOF @@ -16965,8 +17187,8 @@ fi -echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } if test "${ac_cv_struct_tm+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -16982,44 +17204,42 @@ int main () { -struct tm *tp; tp->tm_sec; +struct tm tm; + int *p = &tm.tm_sec; + return !p; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_struct_tm=time.h else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_struct_tm=sys/time.h + ac_cv_struct_tm=sys/time.h fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then cat >>confdefs.h <<\_ACEOF @@ -17028,8 +17248,8 @@ fi -echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 -echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6; } if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17054,33 +17274,28 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_tm_tm_zone=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -17101,40 +17316,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_tm_tm_zone=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_member_struct_tm_tm_zone=no + ac_cv_member_struct_tm_tm_zone=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 -echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6; } if test $ac_cv_member_struct_tm_tm_zone = yes; then cat >>confdefs.h <<_ACEOF @@ -17151,8 +17363,77 @@ _ACEOF else - echo "$as_me:$LINENO: checking for tzname" >&5 -echo $ECHO_N "checking for tzname... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether tzname is declared" >&5 +echo $ECHO_N "checking whether tzname is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef tzname + (void) tzname; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_tzname=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5 +echo "${ECHO_T}$ac_cv_have_decl_tzname" >&6; } +if test $ac_cv_have_decl_tzname = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 0 +_ACEOF + + +fi + + + { echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6; } if test "${ac_cv_var_tzname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17163,52 +17444,49 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#ifndef tzname /* For SGI. */ -extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#if !HAVE_DECL_TZNAME +extern char *tzname[]; #endif int main () { -atoi(*tzname); +return tzname[0][0]; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_var_tzname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_var_tzname=no + ac_cv_var_tzname=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 -echo "${ECHO_T}$ac_cv_var_tzname" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then cat >>confdefs.h <<\_ACEOF @@ -17218,8 +17496,8 @@ fi fi -echo "$as_me:$LINENO: checking for struct stat.st_rdev" >&5 -echo $ECHO_N "checking for struct stat.st_rdev... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for struct stat.st_rdev" >&5 +echo $ECHO_N "checking for struct stat.st_rdev... $ECHO_C" >&6; } if test "${ac_cv_member_struct_stat_st_rdev+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17241,33 +17519,28 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_rdev=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -17285,40 +17558,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_rdev=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_rdev=no + ac_cv_member_struct_stat_st_rdev=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_rdev" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_rdev" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_rdev" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_rdev" >&6; } if test $ac_cv_member_struct_stat_st_rdev = yes; then cat >>confdefs.h <<_ACEOF @@ -17328,8 +17598,8 @@ fi -echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 -echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 +echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6; } if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17351,33 +17621,28 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_blksize=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -17395,40 +17660,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_blksize=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_blksize=no + ac_cv_member_struct_stat_st_blksize=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6; } if test $ac_cv_member_struct_stat_st_blksize = yes; then cat >>confdefs.h <<_ACEOF @@ -17438,8 +17700,8 @@ fi -echo "$as_me:$LINENO: checking for struct stat.st_flags" >&5 -echo $ECHO_N "checking for struct stat.st_flags... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for struct stat.st_flags" >&5 +echo $ECHO_N "checking for struct stat.st_flags... $ECHO_C" >&6; } if test "${ac_cv_member_struct_stat_st_flags+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17461,33 +17723,28 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_flags=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -17505,40 +17762,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_flags=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_flags=no + ac_cv_member_struct_stat_st_flags=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_flags" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_flags" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_flags" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_flags" >&6; } if test $ac_cv_member_struct_stat_st_flags = yes; then cat >>confdefs.h <<_ACEOF @@ -17548,8 +17802,8 @@ fi -echo "$as_me:$LINENO: checking for struct stat.st_gen" >&5 -echo $ECHO_N "checking for struct stat.st_gen... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for struct stat.st_gen" >&5 +echo $ECHO_N "checking for struct stat.st_gen... $ECHO_C" >&6; } if test "${ac_cv_member_struct_stat_st_gen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17571,33 +17825,28 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_gen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -17615,40 +17864,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_gen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_gen=no + ac_cv_member_struct_stat_st_gen=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_gen" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_gen" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_gen" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_gen" >&6; } if test $ac_cv_member_struct_stat_st_gen = yes; then cat >>confdefs.h <<_ACEOF @@ -17658,8 +17904,8 @@ fi -echo "$as_me:$LINENO: checking for struct stat.st_birthtime" >&5 -echo $ECHO_N "checking for struct stat.st_birthtime... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for struct stat.st_birthtime" >&5 +echo $ECHO_N "checking for struct stat.st_birthtime... $ECHO_C" >&6; } if test "${ac_cv_member_struct_stat_st_birthtime+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17681,33 +17927,28 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_birthtime=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -17725,40 +17966,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_birthtime=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_birthtime=no + ac_cv_member_struct_stat_st_birthtime=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_birthtime" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_birthtime" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_birthtime" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_birthtime" >&6; } if test $ac_cv_member_struct_stat_st_birthtime = yes; then cat >>confdefs.h <<_ACEOF @@ -17768,8 +18006,8 @@ fi -echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 -echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 +echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6; } if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17791,33 +18029,28 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_blocks=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -17835,40 +18068,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_blocks=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_member_struct_stat_st_blocks=no + ac_cv_member_struct_stat_st_blocks=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6; } if test $ac_cv_member_struct_stat_st_blocks = yes; then cat >>confdefs.h <<_ACEOF @@ -17881,20 +18111,18 @@ _ACEOF else - case $LIBOBJS in - "fileblocks.$ac_objext" | \ - *" fileblocks.$ac_objext" | \ - "fileblocks.$ac_objext "* | \ + case " $LIBOBJS " in *" fileblocks.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS fileblocks.$ac_objext" ;; + *) LIBOBJS="$LIBOBJS fileblocks.$ac_objext" + ;; esac fi -echo "$as_me:$LINENO: checking for time.h that defines altzone" >&5 -echo $ECHO_N "checking for time.h that defines altzone... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for time.h that defines altzone" >&5 +echo $ECHO_N "checking for time.h that defines altzone... $ECHO_C" >&6; } if test "${ac_cv_header_time_altzone+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17914,39 +18142,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_time_altzone=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_time_altzone=no + ac_cv_header_time_altzone=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_header_time_altzone" >&5 -echo "${ECHO_T}$ac_cv_header_time_altzone" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_time_altzone" >&5 +echo "${ECHO_T}$ac_cv_header_time_altzone" >&6; } if test $ac_cv_header_time_altzone = yes; then cat >>confdefs.h <<\_ACEOF @@ -17956,8 +18180,8 @@ fi was_it_defined=no -echo "$as_me:$LINENO: checking whether sys/select.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether sys/select.h and sys/time.h may both be included... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether sys/select.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether sys/select.h and sys/time.h may both be included... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17978,27 +18202,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF @@ -18011,13 +18230,15 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $was_it_defined" >&5 -echo "${ECHO_T}$was_it_defined" >&6 -echo "$as_me:$LINENO: checking for addrinfo" >&5 -echo $ECHO_N "checking for addrinfo... $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $was_it_defined" >&5 +echo "${ECHO_T}$was_it_defined" >&6; } + +{ echo "$as_me:$LINENO: checking for addrinfo" >&5 +echo $ECHO_N "checking for addrinfo... $ECHO_C" >&6; } if test "${ac_cv_struct_addrinfo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18038,39 +18259,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_struct_addrinfo=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_struct_addrinfo=no + ac_cv_struct_addrinfo=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_struct_addrinfo" >&5 -echo "${ECHO_T}$ac_cv_struct_addrinfo" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_struct_addrinfo" >&5 +echo "${ECHO_T}$ac_cv_struct_addrinfo" >&6; } if test $ac_cv_struct_addrinfo = yes; then cat >>confdefs.h <<\_ACEOF @@ -18079,8 +18296,8 @@ fi -echo "$as_me:$LINENO: checking for sockaddr_storage" >&5 -echo $ECHO_N "checking for sockaddr_storage... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for sockaddr_storage" >&5 +echo $ECHO_N "checking for sockaddr_storage... $ECHO_C" >&6; } if test "${ac_cv_struct_sockaddr_storage+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18102,39 +18319,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_struct_sockaddr_storage=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_struct_sockaddr_storage=no + ac_cv_struct_sockaddr_storage=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_struct_sockaddr_storage" >&5 -echo "${ECHO_T}$ac_cv_struct_sockaddr_storage" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_struct_sockaddr_storage" >&5 +echo "${ECHO_T}$ac_cv_struct_sockaddr_storage" >&6; } if test $ac_cv_struct_sockaddr_storage = yes; then cat >>confdefs.h <<\_ACEOF @@ -18146,8 +18359,8 @@ # checks for compiler characteristics -echo "$as_me:$LINENO: checking whether char is unsigned" >&5 -echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6; } if test "${ac_cv_c_char_unsigned+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18169,38 +18382,34 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_c_char_unsigned=no else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_c_char_unsigned=yes + ac_cv_c_char_unsigned=yes fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 -echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6; } if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then cat >>confdefs.h <<\_ACEOF #define __CHAR_UNSIGNED__ 1 @@ -18208,8 +18417,8 @@ fi -echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18227,10 +18436,10 @@ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; - const charset x; + const charset cs; /* SunOS 4.1.1 cc rejects this. */ - char const *const *ccp; - char **p; + char const *const *pcpcc; + char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; @@ -18239,16 +18448,17 @@ an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; - ccp = &g + (g ? g-g : 0); + pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; + if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; @@ -18267,7 +18477,9 @@ } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; + if (!foo) return 0; } + return !cs[0] && !zero.x; #endif ; @@ -18275,38 +18487,34 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_c_const=no + ac_cv_c_const=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @@ -18317,8 +18525,8 @@ works=no -echo "$as_me:$LINENO: checking for working volatile" >&5 -echo $ECHO_N "checking for working volatile... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for working volatile" >&5 +echo $ECHO_N "checking for working volatile... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -18335,27 +18543,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then works=yes else echo "$as_me: failed program was:" >&5 @@ -18368,13 +18571,14 @@ fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $works" >&5 -echo "${ECHO_T}$works" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $works" >&5 +echo "${ECHO_T}$works" >&6; } works=no -echo "$as_me:$LINENO: checking for working signed char" >&5 -echo $ECHO_N "checking for working signed char... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for working signed char" >&5 +echo $ECHO_N "checking for working signed char... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -18391,27 +18595,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then works=yes else echo "$as_me: failed program was:" >&5 @@ -18424,13 +18623,14 @@ fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $works" >&5 -echo "${ECHO_T}$works" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $works" >&5 +echo "${ECHO_T}$works" >&6; } have_prototypes=no -echo "$as_me:$LINENO: checking for prototypes" >&5 -echo $ECHO_N "checking for prototypes... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for prototypes" >&5 +echo $ECHO_N "checking for prototypes... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -18447,27 +18647,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF @@ -18480,14 +18675,16 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $have_prototypes" >&5 -echo "${ECHO_T}$have_prototypes" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $have_prototypes" >&5 +echo "${ECHO_T}$have_prototypes" >&6; } works=no -echo "$as_me:$LINENO: checking for variable length prototypes and stdarg.h" >&5 -echo $ECHO_N "checking for variable length prototypes and stdarg.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for variable length prototypes and stdarg.h" >&5 +echo $ECHO_N "checking for variable length prototypes and stdarg.h... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -18514,27 +18711,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF @@ -18547,14 +18739,16 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $works" >&5 -echo "${ECHO_T}$works" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $works" >&5 +echo "${ECHO_T}$works" >&6; } # check for socketpair -echo "$as_me:$LINENO: checking for socketpair" >&5 -echo $ECHO_N "checking for socketpair... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for socketpair" >&5 +echo $ECHO_N "checking for socketpair... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -18574,47 +18768,43 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_SOCKETPAIR 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # check if sockaddr has sa_len member -echo "$as_me:$LINENO: checking if sockaddr has sa_len member" >&5 -echo $ECHO_N "checking if sockaddr has sa_len member... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking if sockaddr has sa_len member" >&5 +echo $ECHO_N "checking if sockaddr has sa_len member... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -18633,29 +18823,24 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SOCKADDR_SA_LEN 1 @@ -18665,14 +18850,15 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext va_list_is_array=no -echo "$as_me:$LINENO: checking whether va_list is an array" >&5 -echo $ECHO_N "checking whether va_list is an array... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether va_list is an array" >&5 +echo $ECHO_N "checking whether va_list is an array... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -18695,27 +18881,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 @@ -18730,16 +18911,17 @@ va_list_is_array=yes fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $va_list_is_array" >&5 -echo "${ECHO_T}$va_list_is_array" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $va_list_is_array" >&5 +echo "${ECHO_T}$va_list_is_array" >&6; } # sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-( -echo "$as_me:$LINENO: checking for gethostbyname_r" >&5 -echo $ECHO_N "checking for gethostbyname_r... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for gethostbyname_r" >&5 +echo $ECHO_N "checking for gethostbyname_r... $ECHO_C" >&6; } if test "${ac_cv_func_gethostbyname_r+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18766,76 +18948,67 @@ #undef gethostbyname_r -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char gethostbyname_r (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_gethostbyname_r) || defined (__stub___gethostbyname_r) +#if defined __stub_gethostbyname_r || defined __stub___gethostbyname_r choke me -#else -char (*f) () = gethostbyname_r; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != gethostbyname_r; +return gethostbyname_r (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_gethostbyname_r=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_gethostbyname_r=no + ac_cv_func_gethostbyname_r=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname_r" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyname_r" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname_r" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname_r" >&6; } if test $ac_cv_func_gethostbyname_r = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETHOSTBYNAME_R 1 _ACEOF - echo "$as_me:$LINENO: checking gethostbyname_r with 6 args" >&5 -echo $ECHO_N "checking gethostbyname_r with 6 args... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking gethostbyname_r with 6 args" >&5 +echo $ECHO_N "checking gethostbyname_r with 6 args... $ECHO_C" >&6; } OLD_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS" cat >conftest.$ac_ext <<_ACEOF @@ -18864,27 +19037,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETHOSTBYNAME_R 1 @@ -18895,18 +19063,18 @@ #define HAVE_GETHOSTBYNAME_R_6_ARG 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking gethostbyname_r with 5 args" >&5 -echo $ECHO_N "checking gethostbyname_r with 5 args... $ECHO_C" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + { echo "$as_me:$LINENO: checking gethostbyname_r with 5 args" >&5 +echo $ECHO_N "checking gethostbyname_r with 5 args... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -18933,27 +19101,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETHOSTBYNAME_R 1 @@ -18964,18 +19127,18 @@ #define HAVE_GETHOSTBYNAME_R_5_ARG 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - echo "$as_me:$LINENO: checking gethostbyname_r with 3 args" >&5 -echo $ECHO_N "checking gethostbyname_r with 3 args... $ECHO_C" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + { echo "$as_me:$LINENO: checking gethostbyname_r with 3 args" >&5 +echo $ECHO_N "checking gethostbyname_r with 3 args... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -19000,27 +19163,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETHOSTBYNAME_R 1 @@ -19031,25 +19189,28 @@ #define HAVE_GETHOSTBYNAME_R_3_ARG 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$OLD_CFLAGS else @@ -19058,9 +19219,9 @@ for ac_func in gethostbyname do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -19086,68 +19247,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -19169,8 +19322,8 @@ # (none yet) # Linux requires this for correct f.p. operations -echo "$as_me:$LINENO: checking for __fpu_control" >&5 -echo $ECHO_N "checking for __fpu_control... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for __fpu_control" >&5 +echo $ECHO_N "checking for __fpu_control... $ECHO_C" >&6; } if test "${ac_cv_func___fpu_control+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19197,74 +19350,65 @@ #undef __fpu_control -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char __fpu_control (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub___fpu_control) || defined (__stub_____fpu_control) +#if defined __stub___fpu_control || defined __stub_____fpu_control choke me -#else -char (*f) () = __fpu_control; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != __fpu_control; +return __fpu_control (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func___fpu_control=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func___fpu_control=no + ac_cv_func___fpu_control=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func___fpu_control" >&5 -echo "${ECHO_T}$ac_cv_func___fpu_control" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func___fpu_control" >&5 +echo "${ECHO_T}$ac_cv_func___fpu_control" >&6; } if test $ac_cv_func___fpu_control = yes; then : else -echo "$as_me:$LINENO: checking for __fpu_control in -lieee" >&5 -echo $ECHO_N "checking for __fpu_control in -lieee... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for __fpu_control in -lieee" >&5 +echo $ECHO_N "checking for __fpu_control in -lieee... $ECHO_C" >&6; } if test "${ac_cv_lib_ieee___fpu_control+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19277,56 +19421,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char __fpu_control (); int main () { -__fpu_control (); +return __fpu_control (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_ieee___fpu_control=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_ieee___fpu_control=no + ac_cv_lib_ieee___fpu_control=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_ieee___fpu_control" >&5 -echo "${ECHO_T}$ac_cv_lib_ieee___fpu_control" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_ieee___fpu_control" >&5 +echo "${ECHO_T}$ac_cv_lib_ieee___fpu_control" >&6; } if test $ac_cv_lib_ieee___fpu_control = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBIEEE 1 @@ -19341,13 +19482,12 @@ # Check for --with-fpectl -echo "$as_me:$LINENO: checking for --with-fpectl" >&5 -echo $ECHO_N "checking for --with-fpectl... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-fpectl" >&5 +echo $ECHO_N "checking for --with-fpectl... $ECHO_C" >&6; } -# Check whether --with-fpectl or --without-fpectl was given. +# Check whether --with-fpectl was given. if test "${with_fpectl+set}" = set; then - withval="$with_fpectl" - + withval=$with_fpectl; if test "$withval" != no then @@ -19355,15 +19495,16 @@ #define WANT_SIGFPE_HANDLER 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi; + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + # check for --with-libm=... @@ -19372,55 +19513,55 @@ BeOS) ;; *) LIBM=-lm esac -echo "$as_me:$LINENO: checking for --with-libm=STRING" >&5 -echo $ECHO_N "checking for --with-libm=STRING... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-libm=STRING" >&5 +echo $ECHO_N "checking for --with-libm=STRING... $ECHO_C" >&6; } -# Check whether --with-libm or --without-libm was given. +# Check whether --with-libm was given. if test "${with_libm+set}" = set; then - withval="$with_libm" - + withval=$with_libm; if test "$withval" = no then LIBM= - echo "$as_me:$LINENO: result: force LIBM empty" >&5 -echo "${ECHO_T}force LIBM empty" >&6 + { echo "$as_me:$LINENO: result: force LIBM empty" >&5 +echo "${ECHO_T}force LIBM empty" >&6; } elif test "$withval" != yes then LIBM=$withval - echo "$as_me:$LINENO: result: set LIBM=\"$withval\"" >&5 -echo "${ECHO_T}set LIBM=\"$withval\"" >&6 + { echo "$as_me:$LINENO: result: set LIBM=\"$withval\"" >&5 +echo "${ECHO_T}set LIBM=\"$withval\"" >&6; } else { { echo "$as_me:$LINENO: error: proper usage is --with-libm=STRING" >&5 echo "$as_me: error: proper usage is --with-libm=STRING" >&2;} { (exit 1); exit 1; }; } fi else - echo "$as_me:$LINENO: result: default LIBM=\"$LIBM\"" >&5 -echo "${ECHO_T}default LIBM=\"$LIBM\"" >&6 -fi; + { echo "$as_me:$LINENO: result: default LIBM=\"$LIBM\"" >&5 +echo "${ECHO_T}default LIBM=\"$LIBM\"" >&6; } +fi + # check for --with-libc=... -echo "$as_me:$LINENO: checking for --with-libc=STRING" >&5 -echo $ECHO_N "checking for --with-libc=STRING... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for --with-libc=STRING" >&5 +echo $ECHO_N "checking for --with-libc=STRING... $ECHO_C" >&6; } -# Check whether --with-libc or --without-libc was given. +# Check whether --with-libc was given. if test "${with_libc+set}" = set; then - withval="$with_libc" - + withval=$with_libc; if test "$withval" = no then LIBC= - echo "$as_me:$LINENO: result: force LIBC empty" >&5 -echo "${ECHO_T}force LIBC empty" >&6 + { echo "$as_me:$LINENO: result: force LIBC empty" >&5 +echo "${ECHO_T}force LIBC empty" >&6; } elif test "$withval" != yes then LIBC=$withval - echo "$as_me:$LINENO: result: set LIBC=\"$withval\"" >&5 -echo "${ECHO_T}set LIBC=\"$withval\"" >&6 + { echo "$as_me:$LINENO: result: set LIBC=\"$withval\"" >&5 +echo "${ECHO_T}set LIBC=\"$withval\"" >&6; } else { { echo "$as_me:$LINENO: error: proper usage is --with-libc=STRING" >&5 echo "$as_me: error: proper usage is --with-libc=STRING" >&2;} { (exit 1); exit 1; }; } fi else - echo "$as_me:$LINENO: result: default LIBC=\"$LIBC\"" >&5 -echo "${ECHO_T}default LIBC=\"$LIBC\"" >&6 -fi; + { echo "$as_me:$LINENO: result: default LIBC=\"$LIBC\"" >&5 +echo "${ECHO_T}default LIBC=\"$LIBC\"" >&6; } +fi + # check for hypot() in math library LIBS_SAVE=$LIBS @@ -19429,9 +19570,9 @@ for ac_func in hypot do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -19457,80 +19598,70 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - case $LIBOBJS in - "$ac_func.$ac_objext" | \ - *" $ac_func.$ac_objext" | \ - "$ac_func.$ac_objext "* | \ + case " $LIBOBJS " in *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; esac fi @@ -19541,17 +19672,17 @@ # check for wchar.h if test "${ac_cv_header_wchar_h+set}" = set; then - echo "$as_me:$LINENO: checking for wchar.h" >&5 -echo $ECHO_N "checking for wchar.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for wchar.h" >&5 +echo $ECHO_N "checking for wchar.h... $ECHO_C" >&6; } if test "${ac_cv_header_wchar_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_wchar_h" >&5 -echo "${ECHO_T}$ac_cv_header_wchar_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_wchar_h" >&5 +echo "${ECHO_T}$ac_cv_header_wchar_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking wchar.h usability" >&5 -echo $ECHO_N "checking wchar.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking wchar.h usability" >&5 +echo $ECHO_N "checking wchar.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -19562,41 +19693,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking wchar.h presence" >&5 -echo $ECHO_N "checking wchar.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking wchar.h presence" >&5 +echo $ECHO_N "checking wchar.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -19605,24 +19732,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -19630,9 +19755,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -19656,25 +19782,23 @@ echo "$as_me: WARNING: wchar.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: wchar.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: wchar.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to http://www.python.org/python-bugs ## ## ------------------------------------------------ ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for wchar.h" >&5 -echo $ECHO_N "checking for wchar.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for wchar.h" >&5 +echo $ECHO_N "checking for wchar.h... $ECHO_C" >&6; } if test "${ac_cv_header_wchar_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_wchar_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_wchar_h" >&5 -echo "${ECHO_T}$ac_cv_header_wchar_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_wchar_h" >&5 +echo "${ECHO_T}$ac_cv_header_wchar_h" >&6; } fi if test $ac_cv_header_wchar_h = yes; then @@ -19696,8 +19820,8 @@ # determine wchar_t size if test "$wchar_h" = yes then - echo "$as_me:$LINENO: checking for wchar_t" >&5 -echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for wchar_t" >&5 +echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6; } if test "${ac_cv_type_wchar_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19709,61 +19833,57 @@ /* end confdefs.h. */ #include +typedef wchar_t ac__type_new_; int main () { -if ((wchar_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (wchar_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_wchar_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_wchar_t=no + ac_cv_type_wchar_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_wchar_t" >&5 -echo "${ECHO_T}$ac_cv_type_wchar_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_wchar_t" >&5 +echo "${ECHO_T}$ac_cv_type_wchar_t" >&6; } -echo "$as_me:$LINENO: checking size of wchar_t" >&5 -echo $ECHO_N "checking size of wchar_t... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of wchar_t" >&5 +echo $ECHO_N "checking size of wchar_t... $ECHO_C" >&6; } if test "${ac_cv_sizeof_wchar_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_wchar_t" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -19774,10 +19894,11 @@ /* end confdefs.h. */ #include + typedef wchar_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (wchar_t))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -19785,27 +19906,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -19816,10 +19932,11 @@ /* end confdefs.h. */ #include + typedef wchar_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (wchar_t))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -19827,46 +19944,42 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -19874,10 +19987,11 @@ /* end confdefs.h. */ #include + typedef wchar_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (wchar_t))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -19885,27 +19999,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -19916,10 +20025,11 @@ /* end confdefs.h. */ #include + typedef wchar_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (wchar_t))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -19927,50 +20037,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -19982,10 +20090,11 @@ /* end confdefs.h. */ #include + typedef wchar_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (wchar_t))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -19993,52 +20102,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_wchar_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (wchar_t), 77 +'') if test "$ac_cv_type_wchar_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (wchar_t) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (wchar_t), 77 +echo "$as_me: error: cannot compute sizeof (wchar_t) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_wchar_t=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -20047,8 +20149,9 @@ /* end confdefs.h. */ #include -long longval () { return (long) (sizeof (wchar_t)); } -unsigned long ulongval () { return (long) (sizeof (wchar_t)); } + typedef wchar_t ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -20057,35 +20160,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (wchar_t))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (wchar_t)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (wchar_t)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20096,22 +20208,25 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (wchar_t), 77 +if test "$ac_cv_type_wchar_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (wchar_t) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (wchar_t), 77 +echo "$as_me: error: cannot compute sizeof (wchar_t) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_wchar_t=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_wchar_t=0 fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_wchar_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_wchar_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t _ACEOF @@ -20119,8 +20234,8 @@ fi -echo "$as_me:$LINENO: checking for UCS-4 tcl" >&5 -echo $ECHO_N "checking for UCS-4 tcl... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for UCS-4 tcl" >&5 +echo $ECHO_N "checking for UCS-4 tcl... $ECHO_C" >&6; } have_ucs4_tcl=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -20142,27 +20257,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF @@ -20175,17 +20285,19 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $have_ucs4_tcl" >&5 -echo "${ECHO_T}$have_ucs4_tcl" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $have_ucs4_tcl" >&5 +echo "${ECHO_T}$have_ucs4_tcl" >&6; } # check whether wchar_t is signed or not if test "$wchar_h" = yes then # check whether wchar_t is signed or not - echo "$as_me:$LINENO: checking whether wchar_t is signed" >&5 -echo $ECHO_N "checking whether wchar_t is signed... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether wchar_t is signed" >&5 +echo $ECHO_N "checking whether wchar_t is signed... $ECHO_C" >&6; } if test "${ac_cv_wchar_t_signed+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20209,13 +20321,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20228,23 +20349,25 @@ ( exit $ac_status ) ac_cv_wchar_t_signed=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi - echo "$as_me:$LINENO: result: $ac_cv_wchar_t_signed" >&5 -echo "${ECHO_T}$ac_cv_wchar_t_signed" >&6 + { echo "$as_me:$LINENO: result: $ac_cv_wchar_t_signed" >&5 +echo "${ECHO_T}$ac_cv_wchar_t_signed" >&6; } fi -echo "$as_me:$LINENO: checking what type to use for unicode" >&5 -echo $ECHO_N "checking what type to use for unicode... $ECHO_C" >&6 -# Check whether --enable-unicode or --disable-unicode was given. +{ echo "$as_me:$LINENO: checking what type to use for unicode" >&5 +echo $ECHO_N "checking what type to use for unicode... $ECHO_C" >&6; } +# Check whether --enable-unicode was given. if test "${enable_unicode+set}" = set; then - enableval="$enable_unicode" - + enableval=$enable_unicode; else enable_unicode=yes -fi; +fi + if test $enable_unicode = yes then @@ -20281,8 +20404,8 @@ if test "$enable_unicode" = "no" then UNICODE_OBJS="" - echo "$as_me:$LINENO: result: not used" >&5 -echo "${ECHO_T}not used" >&6 + { echo "$as_me:$LINENO: result: not used" >&5 +echo "${ECHO_T}not used" >&6; } else UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o" @@ -20322,13 +20445,13 @@ else PY_UNICODE_TYPE="no type found" fi - echo "$as_me:$LINENO: result: $PY_UNICODE_TYPE" >&5 -echo "${ECHO_T}$PY_UNICODE_TYPE" >&6 + { echo "$as_me:$LINENO: result: $PY_UNICODE_TYPE" >&5 +echo "${ECHO_T}$PY_UNICODE_TYPE" >&6; } fi # check for endianness -echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20345,7 +20468,8 @@ int main () { -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ + && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) bogus endian macros #endif @@ -20354,27 +20478,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -20397,40 +20516,36 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_c_bigendian=no + ac_cv_c_bigendian=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -# It does not; compile a test program. + # It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown @@ -20440,11 +20555,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () @@ -20455,27 +20570,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi @@ -20491,8 +20601,10 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -20500,27 +20612,41 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +$ac_includes_default int main () { + /* Are we little or big endian? From Harbison&Steele. */ union { - long l; - char c[sizeof (long)]; + long int l; + char c[sizeof (long int)]; } u; u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20533,13 +20659,16 @@ ( exit $ac_status ) ac_cv_c_bigendian=yes fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in yes) @@ -20562,8 +20691,8 @@ # Check whether right shifting a negative integer extends the sign bit # or fills with zeros (like the Cray J90, according to Tim Peters). -echo "$as_me:$LINENO: checking whether right shift extends the sign bit" >&5 -echo $ECHO_N "checking whether right shift extends the sign bit... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether right shift extends the sign bit" >&5 +echo $ECHO_N "checking whether right shift extends the sign bit... $ECHO_C" >&6; } if test "${ac_cv_rshift_extends_sign+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20585,13 +20714,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20604,12 +20742,14 @@ ( exit $ac_status ) ac_cv_rshift_extends_sign=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_rshift_extends_sign" >&5 -echo "${ECHO_T}$ac_cv_rshift_extends_sign" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_rshift_extends_sign" >&5 +echo "${ECHO_T}$ac_cv_rshift_extends_sign" >&6; } if test "$ac_cv_rshift_extends_sign" = no then @@ -20620,8 +20760,8 @@ fi # check for getc_unlocked and related locking functions -echo "$as_me:$LINENO: checking for getc_unlocked() and friends" >&5 -echo $ECHO_N "checking for getc_unlocked() and friends... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for getc_unlocked() and friends" >&5 +echo $ECHO_N "checking for getc_unlocked() and friends... $ECHO_C" >&6; } if test "${ac_cv_have_getc_unlocked+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20647,40 +20787,37 @@ } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_have_getc_unlocked=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_have_getc_unlocked=no + ac_cv_have_getc_unlocked=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_have_getc_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_getc_unlocked" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_have_getc_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_getc_unlocked" >&6; } if test "$ac_cv_have_getc_unlocked" = yes then @@ -20694,8 +20831,8 @@ # save the value of LIBS so we don't actually link Python with readline LIBS_no_readline=$LIBS -echo "$as_me:$LINENO: checking for readline in -lreadline" >&5 -echo $ECHO_N "checking for readline in -lreadline... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for readline in -lreadline" >&5 +echo $ECHO_N "checking for readline in -lreadline... $ECHO_C" >&6; } if test "${ac_cv_lib_readline_readline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20708,56 +20845,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char readline (); int main () { -readline (); +return readline (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_readline_readline=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_readline_readline=no + ac_cv_lib_readline_readline=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5 -echo "${ECHO_T}$ac_cv_lib_readline_readline" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5 +echo "${ECHO_T}$ac_cv_lib_readline_readline" >&6; } if test $ac_cv_lib_readline_readline = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBREADLINE 1 @@ -20770,8 +20904,8 @@ if test "$ac_cv_have_readline_readline" = no then -echo "$as_me:$LINENO: checking for readline in -ltermcap" >&5 -echo $ECHO_N "checking for readline in -ltermcap... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for readline in -ltermcap" >&5 +echo $ECHO_N "checking for readline in -ltermcap... $ECHO_C" >&6; } if test "${ac_cv_lib_termcap_readline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20784,56 +20918,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char readline (); int main () { -readline (); +return readline (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_termcap_readline=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_termcap_readline=no + ac_cv_lib_termcap_readline=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_readline" >&5 -echo "${ECHO_T}$ac_cv_lib_termcap_readline" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_readline" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_readline" >&6; } if test $ac_cv_lib_termcap_readline = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBTERMCAP 1 @@ -20846,8 +20977,8 @@ fi # check for readline 2.1 -echo "$as_me:$LINENO: checking for rl_callback_handler_install in -lreadline" >&5 -echo $ECHO_N "checking for rl_callback_handler_install in -lreadline... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for rl_callback_handler_install in -lreadline" >&5 +echo $ECHO_N "checking for rl_callback_handler_install in -lreadline... $ECHO_C" >&6; } if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20860,56 +20991,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char rl_callback_handler_install (); int main () { -rl_callback_handler_install (); +return rl_callback_handler_install (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_readline_rl_callback_handler_install=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_readline_rl_callback_handler_install=no + ac_cv_lib_readline_rl_callback_handler_install=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 -echo "${ECHO_T}$ac_cv_lib_readline_rl_callback_handler_install" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 +echo "${ECHO_T}$ac_cv_lib_readline_rl_callback_handler_install" >&6; } if test $ac_cv_lib_readline_rl_callback_handler_install = yes; then cat >>confdefs.h <<\_ACEOF @@ -20928,24 +21056,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then have_readline=yes else echo "$as_me: failed program was:" >&5 @@ -20953,6 +21079,7 @@ have_readline=no fi + rm -f conftest.err conftest.$ac_ext if test $have_readline = yes then @@ -20978,8 +21105,8 @@ fi # check for readline 4.0 -echo "$as_me:$LINENO: checking for rl_pre_input_hook in -lreadline" >&5 -echo $ECHO_N "checking for rl_pre_input_hook in -lreadline... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for rl_pre_input_hook in -lreadline" >&5 +echo $ECHO_N "checking for rl_pre_input_hook in -lreadline... $ECHO_C" >&6; } if test "${ac_cv_lib_readline_rl_pre_input_hook+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20992,56 +21119,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char rl_pre_input_hook (); int main () { -rl_pre_input_hook (); +return rl_pre_input_hook (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_readline_rl_pre_input_hook=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_readline_rl_pre_input_hook=no + ac_cv_lib_readline_rl_pre_input_hook=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_pre_input_hook" >&5 -echo "${ECHO_T}$ac_cv_lib_readline_rl_pre_input_hook" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_pre_input_hook" >&5 +echo "${ECHO_T}$ac_cv_lib_readline_rl_pre_input_hook" >&6; } if test $ac_cv_lib_readline_rl_pre_input_hook = yes; then cat >>confdefs.h <<\_ACEOF @@ -21052,8 +21176,8 @@ # check for readline 4.2 -echo "$as_me:$LINENO: checking for rl_completion_matches in -lreadline" >&5 -echo $ECHO_N "checking for rl_completion_matches in -lreadline... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for rl_completion_matches in -lreadline" >&5 +echo $ECHO_N "checking for rl_completion_matches in -lreadline... $ECHO_C" >&6; } if test "${ac_cv_lib_readline_rl_completion_matches+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21066,56 +21190,53 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char rl_completion_matches (); int main () { -rl_completion_matches (); +return rl_completion_matches (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_readline_rl_completion_matches=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_readline_rl_completion_matches=no + ac_cv_lib_readline_rl_completion_matches=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_completion_matches" >&5 -echo "${ECHO_T}$ac_cv_lib_readline_rl_completion_matches" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_completion_matches" >&5 +echo "${ECHO_T}$ac_cv_lib_readline_rl_completion_matches" >&6; } if test $ac_cv_lib_readline_rl_completion_matches = yes; then cat >>confdefs.h <<\_ACEOF @@ -21134,24 +21255,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then have_readline=yes else echo "$as_me: failed program was:" >&5 @@ -21159,6 +21278,7 @@ have_readline=no fi + rm -f conftest.err conftest.$ac_ext if test $have_readline = yes then @@ -21186,8 +21306,8 @@ # End of readline checks: restore LIBS LIBS=$LIBS_no_readline -echo "$as_me:$LINENO: checking for broken nice()" >&5 -echo $ECHO_N "checking for broken nice()... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for broken nice()" >&5 +echo $ECHO_N "checking for broken nice()... $ECHO_C" >&6; } if test "${ac_cv_broken_nice+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21212,13 +21332,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21231,12 +21360,14 @@ ( exit $ac_status ) ac_cv_broken_nice=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_broken_nice" >&5 -echo "${ECHO_T}$ac_cv_broken_nice" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_broken_nice" >&5 +echo "${ECHO_T}$ac_cv_broken_nice" >&6; } if test "$ac_cv_broken_nice" = yes then @@ -21246,8 +21377,8 @@ fi -echo "$as_me:$LINENO: checking for broken poll()" >&5 -echo $ECHO_N "checking for broken poll()... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for broken poll()" >&5 +echo $ECHO_N "checking for broken poll()... $ECHO_C" >&6; } if test "$cross_compiling" = yes; then ac_cv_broken_poll=no else @@ -21284,13 +21415,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21303,10 +21443,12 @@ ( exit $ac_status ) ac_cv_broken_poll=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_broken_poll" >&5 -echo "${ECHO_T}$ac_cv_broken_poll" >&6 + + +{ echo "$as_me:$LINENO: result: $ac_cv_broken_poll" >&5 +echo "${ECHO_T}$ac_cv_broken_poll" >&6; } if test "$ac_cv_broken_poll" = yes then @@ -21319,8 +21461,8 @@ # Before we can test tzset, we need to check if struct tm has a tm_zone # (which is not required by ISO C or UNIX spec) and/or if we support # tzname[] -echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 -echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6; } if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21345,33 +21487,28 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_tm_tm_zone=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -21392,40 +21529,37 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_member_struct_tm_tm_zone=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_member_struct_tm_tm_zone=no + ac_cv_member_struct_tm_tm_zone=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 -echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6; } if test $ac_cv_member_struct_tm_tm_zone = yes; then cat >>confdefs.h <<_ACEOF @@ -21442,8 +21576,77 @@ _ACEOF else - echo "$as_me:$LINENO: checking for tzname" >&5 -echo $ECHO_N "checking for tzname... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether tzname is declared" >&5 +echo $ECHO_N "checking whether tzname is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef tzname + (void) tzname; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_tzname=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5 +echo "${ECHO_T}$ac_cv_have_decl_tzname" >&6; } +if test $ac_cv_have_decl_tzname = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 0 +_ACEOF + + +fi + + + { echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6; } if test "${ac_cv_var_tzname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21454,52 +21657,49 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#ifndef tzname /* For SGI. */ -extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#if !HAVE_DECL_TZNAME +extern char *tzname[]; #endif int main () { -atoi(*tzname); +return tzname[0][0]; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_var_tzname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_var_tzname=no + ac_cv_var_tzname=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 -echo "${ECHO_T}$ac_cv_var_tzname" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then cat >>confdefs.h <<\_ACEOF @@ -21511,8 +21711,8 @@ # check tzset(3) exists and works like we expect it to -echo "$as_me:$LINENO: checking for working tzset()" >&5 -echo $ECHO_N "checking for working tzset()... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for working tzset()" >&5 +echo $ECHO_N "checking for working tzset()... $ECHO_C" >&6; } if test "${ac_cv_working_tzset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21592,13 +21792,22 @@ _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21611,12 +21820,14 @@ ( exit $ac_status ) ac_cv_working_tzset=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_working_tzset" >&5 -echo "${ECHO_T}$ac_cv_working_tzset" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_working_tzset" >&5 +echo "${ECHO_T}$ac_cv_working_tzset" >&6; } if test "$ac_cv_working_tzset" = yes then @@ -21627,8 +21838,8 @@ fi # Look for subsecond timestamps in struct stat -echo "$as_me:$LINENO: checking for tv_nsec in struct stat" >&5 -echo $ECHO_N "checking for tv_nsec in struct stat... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for tv_nsec in struct stat" >&5 +echo $ECHO_N "checking for tv_nsec in struct stat... $ECHO_C" >&6; } if test "${ac_cv_stat_tv_nsec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21651,39 +21862,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_stat_tv_nsec=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_stat_tv_nsec=no + ac_cv_stat_tv_nsec=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_stat_tv_nsec" >&5 -echo "${ECHO_T}$ac_cv_stat_tv_nsec" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_stat_tv_nsec" >&5 +echo "${ECHO_T}$ac_cv_stat_tv_nsec" >&6; } if test "$ac_cv_stat_tv_nsec" = yes then @@ -21694,8 +21901,8 @@ fi # Look for BSD style subsecond timestamps in struct stat -echo "$as_me:$LINENO: checking for tv_nsec2 in struct stat" >&5 -echo $ECHO_N "checking for tv_nsec2 in struct stat... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for tv_nsec2 in struct stat" >&5 +echo $ECHO_N "checking for tv_nsec2 in struct stat... $ECHO_C" >&6; } if test "${ac_cv_stat_tv_nsec2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21718,39 +21925,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_stat_tv_nsec2=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_stat_tv_nsec2=no + ac_cv_stat_tv_nsec2=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_stat_tv_nsec2" >&5 -echo "${ECHO_T}$ac_cv_stat_tv_nsec2" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_stat_tv_nsec2" >&5 +echo "${ECHO_T}$ac_cv_stat_tv_nsec2" >&6; } if test "$ac_cv_stat_tv_nsec2" = yes then @@ -21761,8 +21964,8 @@ fi # On HP/UX 11.0, mvwdelch is a block with a return statement -echo "$as_me:$LINENO: checking whether mvwdelch is an expression" >&5 -echo $ECHO_N "checking whether mvwdelch is an expression... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether mvwdelch is an expression" >&5 +echo $ECHO_N "checking whether mvwdelch is an expression... $ECHO_C" >&6; } if test "${ac_cv_mvwdelch_is_expression+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21785,39 +21988,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_mvwdelch_is_expression=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_mvwdelch_is_expression=no + ac_cv_mvwdelch_is_expression=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_mvwdelch_is_expression" >&5 -echo "${ECHO_T}$ac_cv_mvwdelch_is_expression" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_mvwdelch_is_expression" >&5 +echo "${ECHO_T}$ac_cv_mvwdelch_is_expression" >&6; } if test "$ac_cv_mvwdelch_is_expression" = yes then @@ -21828,8 +22027,8 @@ fi -echo "$as_me:$LINENO: checking whether WINDOW has _flags" >&5 -echo $ECHO_N "checking whether WINDOW has _flags... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether WINDOW has _flags" >&5 +echo $ECHO_N "checking whether WINDOW has _flags... $ECHO_C" >&6; } if test "${ac_cv_window_has_flags+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21852,39 +22051,35 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_window_has_flags=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_window_has_flags=no + ac_cv_window_has_flags=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_window_has_flags" >&5 -echo "${ECHO_T}$ac_cv_window_has_flags" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_window_has_flags" >&5 +echo "${ECHO_T}$ac_cv_window_has_flags" >&6; } if test "$ac_cv_window_has_flags" = yes @@ -21896,8 +22091,8 @@ fi -echo "$as_me:$LINENO: checking for is_term_resized" >&5 -echo $ECHO_N "checking for is_term_resized... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for is_term_resized" >&5 +echo $ECHO_N "checking for is_term_resized... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -21914,46 +22109,42 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_CURSES_IS_TERM_RESIZED 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for resize_term" >&5 -echo $ECHO_N "checking for resize_term... $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ echo "$as_me:$LINENO: checking for resize_term" >&5 +echo $ECHO_N "checking for resize_term... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -21970,46 +22161,42 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_CURSES_RESIZE_TERM 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for resizeterm" >&5 -echo $ECHO_N "checking for resizeterm... $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ echo "$as_me:$LINENO: checking for resizeterm" >&5 +echo $ECHO_N "checking for resizeterm... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -22026,80 +22213,76 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define HAVE_CURSES_RESIZETERM 1 _ACEOF - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: checking for /dev/ptmx" >&5 -echo $ECHO_N "checking for /dev/ptmx... $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ echo "$as_me:$LINENO: checking for /dev/ptmx" >&5 +echo $ECHO_N "checking for /dev/ptmx... $ECHO_C" >&6; } if test -r /dev/ptmx then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DEV_PTMX 1 _ACEOF else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -echo "$as_me:$LINENO: checking for /dev/ptc" >&5 -echo $ECHO_N "checking for /dev/ptc... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for /dev/ptc" >&5 +echo $ECHO_N "checking for /dev/ptc... $ECHO_C" >&6; } if test -r /dev/ptc then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DEV_PTC 1 _ACEOF else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -echo "$as_me:$LINENO: checking for %zd printf() format support" >&5 -echo $ECHO_N "checking for %zd printf() format support... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for %zd printf() format support" >&5 +echo $ECHO_N "checking for %zd printf() format support... $ECHO_C" >&6; } if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 @@ -22145,18 +22328,27 @@ } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } cat >>confdefs.h <<\_ACEOF #define PY_FORMAT_SIZE_T "z" @@ -22168,14 +22360,16 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 +{ echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: checking for socklen_t" >&5 -echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 + + +{ echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; } if test "${ac_cv_type_socklen_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -22194,50 +22388,47 @@ #endif +typedef socklen_t ac__type_new_; int main () { -if ((socklen_t *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (socklen_t)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_socklen_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_socklen_t=no + ac_cv_type_socklen_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 -echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 +echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; } if test $ac_cv_type_socklen_t = yes; then : else @@ -22258,18 +22449,18 @@ SRCDIRS="Parser Grammar Objects Python Modules Mac" -echo "$as_me:$LINENO: checking for build directories" >&5 -echo $ECHO_N "checking for build directories... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for build directories" >&5 +echo $ECHO_N "checking for build directories... $ECHO_C" >&6; } for dir in $SRCDIRS; do if test ! -d $dir; then mkdir $dir fi done -echo "$as_me:$LINENO: result: done" >&5 -echo "${ECHO_T}done" >&6 +{ echo "$as_me:$LINENO: result: done" >&5 +echo "${ECHO_T}done" >&6; } # generate output files - ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config" +ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -22289,39 +22480,58 @@ # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -22330,32 +22540,18 @@ # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -22386,73 +22582,26 @@ ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset + setopt NO_GLOB_SUBST else - as_unset=false + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + fi -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. +# PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -22473,126 +22622,198 @@ rm -f conf$$.sh fi +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done +IFS=$as_save_IFS - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -22601,7 +22822,28 @@ as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -22610,31 +22852,14 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - +# values after options handling. +ac_log=" This file was extended by python $as_me 2.5, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -22642,30 +22867,19 @@ CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi +config_files="$ac_config_files" +config_headers="$ac_config_headers" -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF - ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -22673,7 +22887,7 @@ Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit + -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -22689,19 +22903,21 @@ $config_headers Report bugs to ." -_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ python config.status 2.5 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -22712,39 +22928,24 @@ do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift @@ -22754,18 +22955,24 @@ $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -22781,33 +22988,47 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 - - - +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "Mac/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/Makefile" ;; - "Mac/PythonLauncher/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/PythonLauncher/Makefile" ;; - "Mac/IDLE/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/IDLE/Makefile" ;; - "Makefile.pre" ) CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;; - "Modules/Setup.config" ) CONFIG_FILES="$CONFIG_FILES Modules/Setup.config" ;; - "pyconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS pyconfig.h" ;; + case $ac_config_target in + "pyconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS pyconfig.h" ;; + "Mac/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/Makefile" ;; + "Mac/PythonLauncher/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/PythonLauncher/Makefile" ;; + "Mac/IDLE/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/IDLE/Makefile" ;; + "Makefile.pre") CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;; + "Modules/Setup.config") CONFIG_FILES="$CONFIG_FILES Modules/Setup.config" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -22818,363 +23039,471 @@ fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - # -# CONFIG_FILES section. +# Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s, at SHELL@,$SHELL,;t t -s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t -s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t -s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s, at exec_prefix@,$exec_prefix,;t t -s, at prefix@,$prefix,;t t -s, at program_transform_name@,$program_transform_name,;t t -s, at bindir@,$bindir,;t t -s, at sbindir@,$sbindir,;t t -s, at libexecdir@,$libexecdir,;t t -s, at datadir@,$datadir,;t t -s, at sysconfdir@,$sysconfdir,;t t -s, at sharedstatedir@,$sharedstatedir,;t t -s, at localstatedir@,$localstatedir,;t t -s, at libdir@,$libdir,;t t -s, at includedir@,$includedir,;t t -s, at oldincludedir@,$oldincludedir,;t t -s, at infodir@,$infodir,;t t -s, at mandir@,$mandir,;t t -s, at build_alias@,$build_alias,;t t -s, at host_alias@,$host_alias,;t t -s, at target_alias@,$target_alias,;t t -s, at DEFS@,$DEFS,;t t -s, at ECHO_C@,$ECHO_C,;t t -s, at ECHO_N@,$ECHO_N,;t t -s, at ECHO_T@,$ECHO_T,;t t -s, at LIBS@,$LIBS,;t t -s, at VERSION@,$VERSION,;t t -s, at SOVERSION@,$SOVERSION,;t t -s, at CONFIG_ARGS@,$CONFIG_ARGS,;t t -s, at UNIVERSALSDK@,$UNIVERSALSDK,;t t -s, at PYTHONFRAMEWORK@,$PYTHONFRAMEWORK,;t t -s, at PYTHONFRAMEWORKDIR@,$PYTHONFRAMEWORKDIR,;t t -s, at PYTHONFRAMEWORKPREFIX@,$PYTHONFRAMEWORKPREFIX,;t t -s, at PYTHONFRAMEWORKINSTALLDIR@,$PYTHONFRAMEWORKINSTALLDIR,;t t -s, at FRAMEWORKINSTALLFIRST@,$FRAMEWORKINSTALLFIRST,;t t -s, at FRAMEWORKINSTALLLAST@,$FRAMEWORKINSTALLLAST,;t t -s, at FRAMEWORKALTINSTALLFIRST@,$FRAMEWORKALTINSTALLFIRST,;t t -s, at FRAMEWORKALTINSTALLLAST@,$FRAMEWORKALTINSTALLLAST,;t t -s, at FRAMEWORKUNIXTOOLSPREFIX@,$FRAMEWORKUNIXTOOLSPREFIX,;t t -s, at MACHDEP@,$MACHDEP,;t t -s, at SGI_ABI@,$SGI_ABI,;t t -s, at EXTRAPLATDIR@,$EXTRAPLATDIR,;t t -s, at EXTRAMACHDEPPATH@,$EXTRAMACHDEPPATH,;t t -s, at CONFIGURE_MACOSX_DEPLOYMENT_TARGET@,$CONFIGURE_MACOSX_DEPLOYMENT_TARGET,;t t -s, at EXPORT_MACOSX_DEPLOYMENT_TARGET@,$EXPORT_MACOSX_DEPLOYMENT_TARGET,;t t -s, at CC@,$CC,;t t -s, at CFLAGS@,$CFLAGS,;t t -s, at LDFLAGS@,$LDFLAGS,;t t -s, at CPPFLAGS@,$CPPFLAGS,;t t -s, at ac_ct_CC@,$ac_ct_CC,;t t -s, at EXEEXT@,$EXEEXT,;t t -s, at OBJEXT@,$OBJEXT,;t t -s, at CXX@,$CXX,;t t -s, at MAINCC@,$MAINCC,;t t -s, at CPP@,$CPP,;t t -s, at EGREP@,$EGREP,;t t -s, at BUILDEXEEXT@,$BUILDEXEEXT,;t t -s, at LIBRARY@,$LIBRARY,;t t -s, at LDLIBRARY@,$LDLIBRARY,;t t -s, at DLLLIBRARY@,$DLLLIBRARY,;t t -s, at BLDLIBRARY@,$BLDLIBRARY,;t t -s, at LDLIBRARYDIR@,$LDLIBRARYDIR,;t t -s, at INSTSONAME@,$INSTSONAME,;t t -s, at RUNSHARED@,$RUNSHARED,;t t -s, at LINKCC@,$LINKCC,;t t -s, at RANLIB@,$RANLIB,;t t -s, at ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s, at AR@,$AR,;t t -s, at SVNVERSION@,$SVNVERSION,;t t -s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s, at INSTALL_DATA@,$INSTALL_DATA,;t t -s, at LN@,$LN,;t t -s, at OPT@,$OPT,;t t -s, at BASECFLAGS@,$BASECFLAGS,;t t -s, at OTHER_LIBTOOL_OPT@,$OTHER_LIBTOOL_OPT,;t t -s, at LIBTOOL_CRUFT@,$LIBTOOL_CRUFT,;t t -s, at SO@,$SO,;t t -s, at LDSHARED@,$LDSHARED,;t t -s, at BLDSHARED@,$BLDSHARED,;t t -s, at CCSHARED@,$CCSHARED,;t t -s, at LINKFORSHARED@,$LINKFORSHARED,;t t -s, at CFLAGSFORSHARED@,$CFLAGSFORSHARED,;t t -s, at SHLIBS@,$SHLIBS,;t t -s, at USE_SIGNAL_MODULE@,$USE_SIGNAL_MODULE,;t t -s, at SIGNAL_OBJS@,$SIGNAL_OBJS,;t t -s, at USE_THREAD_MODULE@,$USE_THREAD_MODULE,;t t -s, at LDLAST@,$LDLAST,;t t -s, at THREADOBJ@,$THREADOBJ,;t t -s, at DLINCLDIR@,$DLINCLDIR,;t t -s, at DYNLOADFILE@,$DYNLOADFILE,;t t -s, at MACHDEP_OBJS@,$MACHDEP_OBJS,;t t -s, at TRUE@,$TRUE,;t t -s, at LIBOBJS@,$LIBOBJS,;t t -s, at HAVE_GETHOSTBYNAME_R_6_ARG@,$HAVE_GETHOSTBYNAME_R_6_ARG,;t t -s, at HAVE_GETHOSTBYNAME_R_5_ARG@,$HAVE_GETHOSTBYNAME_R_5_ARG,;t t -s, at HAVE_GETHOSTBYNAME_R_3_ARG@,$HAVE_GETHOSTBYNAME_R_3_ARG,;t t -s, at HAVE_GETHOSTBYNAME_R@,$HAVE_GETHOSTBYNAME_R,;t t -s, at HAVE_GETHOSTBYNAME@,$HAVE_GETHOSTBYNAME,;t t -s, at LIBM@,$LIBM,;t t -s, at LIBC@,$LIBC,;t t -s, at UNICODE_OBJS@,$UNICODE_OBJS,;t t -s, at THREADHEADERS@,$THREADHEADERS,;t t -s, at SRCDIRS@,$SRCDIRS,;t t -s, at LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +VERSION!$VERSION$ac_delim +SOVERSION!$SOVERSION$ac_delim +CONFIG_ARGS!$CONFIG_ARGS$ac_delim +UNIVERSALSDK!$UNIVERSALSDK$ac_delim +PYTHONFRAMEWORK!$PYTHONFRAMEWORK$ac_delim +PYTHONFRAMEWORKDIR!$PYTHONFRAMEWORKDIR$ac_delim +PYTHONFRAMEWORKPREFIX!$PYTHONFRAMEWORKPREFIX$ac_delim +PYTHONFRAMEWORKINSTALLDIR!$PYTHONFRAMEWORKINSTALLDIR$ac_delim +FRAMEWORKINSTALLFIRST!$FRAMEWORKINSTALLFIRST$ac_delim +FRAMEWORKINSTALLLAST!$FRAMEWORKINSTALLLAST$ac_delim +FRAMEWORKALTINSTALLFIRST!$FRAMEWORKALTINSTALLFIRST$ac_delim +FRAMEWORKALTINSTALLLAST!$FRAMEWORKALTINSTALLLAST$ac_delim +FRAMEWORKUNIXTOOLSPREFIX!$FRAMEWORKUNIXTOOLSPREFIX$ac_delim +MACHDEP!$MACHDEP$ac_delim +SGI_ABI!$SGI_ABI$ac_delim +EXTRAPLATDIR!$EXTRAPLATDIR$ac_delim +EXTRAMACHDEPPATH!$EXTRAMACHDEPPATH$ac_delim +CONFIGURE_MACOSX_DEPLOYMENT_TARGET!$CONFIGURE_MACOSX_DEPLOYMENT_TARGET$ac_delim +EXPORT_MACOSX_DEPLOYMENT_TARGET!$EXPORT_MACOSX_DEPLOYMENT_TARGET$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +CXX!$CXX$ac_delim +MAINCC!$MAINCC$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +BUILDEXEEXT!$BUILDEXEEXT$ac_delim +LIBRARY!$LIBRARY$ac_delim +LDLIBRARY!$LDLIBRARY$ac_delim +DLLLIBRARY!$DLLLIBRARY$ac_delim +BLDLIBRARY!$BLDLIBRARY$ac_delim +LDLIBRARYDIR!$LDLIBRARYDIR$ac_delim +INSTSONAME!$INSTSONAME$ac_delim +RUNSHARED!$RUNSHARED$ac_delim +LINKCC!$LINKCC$ac_delim +RANLIB!$RANLIB$ac_delim +AR!$AR$ac_delim +SVNVERSION!$SVNVERSION$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +LN!$LN$ac_delim +OPT!$OPT$ac_delim +BASECFLAGS!$BASECFLAGS$ac_delim +OTHER_LIBTOOL_OPT!$OTHER_LIBTOOL_OPT$ac_delim +LIBTOOL_CRUFT!$LIBTOOL_CRUFT$ac_delim +SO!$SO$ac_delim +LDSHARED!$LDSHARED$ac_delim +BLDSHARED!$BLDSHARED$ac_delim +CCSHARED!$CCSHARED$ac_delim +LINKFORSHARED!$LINKFORSHARED$ac_delim +CFLAGSFORSHARED!$CFLAGSFORSHARED$ac_delim +SHLIBS!$SHLIBS$ac_delim +USE_SIGNAL_MODULE!$USE_SIGNAL_MODULE$ac_delim +SIGNAL_OBJS!$SIGNAL_OBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi -fi # test -n "$CONFIG_FILES" +done +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +USE_THREAD_MODULE!$USE_THREAD_MODULE$ac_delim +LDLAST!$LDLAST$ac_delim +THREADOBJ!$THREADOBJ$ac_delim +DLINCLDIR!$DLINCLDIR$ac_delim +DYNLOADFILE!$DYNLOADFILE$ac_delim +MACHDEP_OBJS!$MACHDEP_OBJS$ac_delim +TRUE!$TRUE$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +HAVE_GETHOSTBYNAME_R_6_ARG!$HAVE_GETHOSTBYNAME_R_6_ARG$ac_delim +HAVE_GETHOSTBYNAME_R_5_ARG!$HAVE_GETHOSTBYNAME_R_5_ARG$ac_delim +HAVE_GETHOSTBYNAME_R_3_ARG!$HAVE_GETHOSTBYNAME_R_3_ARG$ac_delim +HAVE_GETHOSTBYNAME_R!$HAVE_GETHOSTBYNAME_R$ac_delim +HAVE_GETHOSTBYNAME!$HAVE_GETHOSTBYNAME$ac_delim +LIBM!$LIBM$ac_delim +LIBC!$LIBC$ac_delim +UNICODE_OBJS!$UNICODE_OBJS$ac_delim +THREADHEADERS!$THREADHEADERS$ac_delim +SRCDIRS!$SRCDIRS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 19; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; esac - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || + ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac + case $ac_mode in + :F) + # + # CONFIG_FILE + # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac +_ACEOF - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac _ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub @@ -23182,252 +23511,137 @@ cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s, at configure_input@,$configure_input,;t t -s, at srcdir@,$ac_srcdir,;t t -s, at abs_srcdir@,$ac_abs_srcdir,;t t -s, at top_srcdir@,$ac_top_srcdir,;t t -s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s, at builddir@,$ac_builddir,;t t -s, at abs_builddir@,$ac_abs_builddir,;t t -s, at top_builddir@,$ac_top_builddir,;t t -s, at abs_top_builddir@,$ac_abs_top_builddir,;t t -s, at INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + rm -f "$tmp/stdin" case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines -# This sed command replaces #undef with comments. This is necessary, for +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null +while : do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs +rm -f conftest.defines conftest.tail +echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - rm -f $ac_file - mv $tmp/config.h $ac_file + mv "$tmp/config.h" $ac_file fi else - cat $tmp/config.h - rm -f $tmp/config.h + echo "/* $configure_input */" + cat "$ac_result" fi -done -_ACEOF + rm -f "$tmp/out12" + ;; + + + esac + +done # for ac_tag -cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF Modified: python/branches/release25-maint/configure.in ============================================================================== --- python/branches/release25-maint/configure.in (original) +++ python/branches/release25-maint/configure.in Sun Sep 2 11:48:20 2007 @@ -1482,6 +1482,14 @@ cur_target=10.3 fi CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + + # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the + # environment with a value that is the same as what we'll use + # in the Makefile to ensure that we'll get the same compiler + # environment during configure and build time. + MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" + export MACOSX_DEPLOYMENT_TARGET + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 then From buildbot at python.org Sun Sep 2 12:04:57 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 02 Sep 2007 10:04:57 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP-4 3.0 Message-ID: <20070902100457.6413D1E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/3 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: The web-page 'force build' button was pressed by 'David Bolen': Test buildbot Build Source Stamp: [branch branches/py3k] HEAD Blamelist: Build had warnings: warnings test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_uuid ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ipconfig_getnode (test.test_uuid.TestUUID) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_uuid.py", line 323, in test_ipconfig_getnode node = uuid._ipconfig_getnode() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\uuid.py", line 376, in _ipconfig_getnode for line in pipe: TypeError: '_wrap_close' object is not iterable sincerely, -The Buildbot From buildbot at python.org Sun Sep 2 12:16:45 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 02 Sep 2007 10:16:45 +0000 Subject: [Python-checkins] buildbot failure in amd64 XP 2.5 Message-ID: <20070902101645.DDC8A1E4006@bag.python.org> The Buildbot has detected a new failure of amd64 XP 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%202.5/builds/38 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: ronald.oussoren BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Sep 2 12:24:30 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 02 Sep 2007 10:24:30 +0000 Subject: [Python-checkins] buildbot warnings in x86 FreeBSD 3.0 Message-ID: <20070902102514.D45BF1E400F@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: The web-page 'force build' button was pressed by 'David Bolen': Test buildbot Build Source Stamp: [branch branches/py3k] HEAD Blamelist: Build had warnings: warnings test Excerpt from the test logfile: 4 tests failed: test_asynchat test_email test_xmlrpc test_xmlrpc_net ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 522, in __init__ self.handle() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 330, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 313, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 366, in nreadahead readahead = self.peek(1, unsafe=True) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 758, in peek current = self.raw.read(to_read) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: (35, 'Resource temporarily unavailable') Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 522, in __init__ self.handle() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 330, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 313, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 366, in nreadahead readahead = self.peek(1, unsafe=True) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 758, in peek current = self.raw.read(to_read) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: (35, 'Resource temporarily unavailable') ====================================================================== ERROR: test_introspection1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 346, in test_introspection1 meth = p.system.listMethods() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1091, in __call__ return self.__send(self.__name, args) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1349, in __request verbose=self.__verbose File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1121, in request resp = http_conn.getresponse() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 954, in getresponse response.begin() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 395, in begin version, status, reason = self._read_status() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 357, in _read_status raise BadStatusLine(line) httplib.BadStatusLine ====================================================================== ERROR: test_introspection3 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 372, in test_introspection3 divsig = p.system.methodSignature('div') File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1091, in __call__ return self.__send(self.__name, args) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1349, in __request verbose=self.__verbose File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1121, in request resp = http_conn.getresponse() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 954, in getresponse response.begin() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 395, in begin version, status, reason = self._read_status() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 357, in _read_status raise BadStatusLine(line) httplib.BadStatusLine ====================================================================== FAIL: test_introspection2 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 365, in test_introspection2 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_multicall (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 395, in test_multicall self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_simple1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 341, in test_simple1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_basic (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 447, in test_basic self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_current_time (test.test_xmlrpc_net.CurrentTimeTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc_net.py", line 28, in test_current_time self.assert_(delta.days <= 1) AssertionError: None sincerely, -The Buildbot From buildbot at python.org Sun Sep 2 12:56:29 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 02 Sep 2007 10:56:29 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP-4 trunk Message-ID: <20070902105636.18C171E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%20trunk/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: ronald.oussoren Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Sun Sep 2 17:49:57 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 02 Sep 2007 15:49:57 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 3.0 Message-ID: <20070902155015.2D7161E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/4 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: eric.smith BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Sep 2 18:37:05 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 02 Sep 2007 16:37:05 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP-4 3.0 Message-ID: <20070902163705.70BF01E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/5 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: The web-page 'force build' button was pressed by 'David Bolen': Redoing build as test Build Source Stamp: [branch branches/py3k] HEAD Blamelist: Build had warnings: warnings test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_uuid ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ipconfig_getnode (test.test_uuid.TestUUID) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_uuid.py", line 323, in test_ipconfig_getnode node = uuid._ipconfig_getnode() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\uuid.py", line 376, in _ipconfig_getnode for line in pipe: TypeError: '_wrap_close' object is not iterable sincerely, -The Buildbot From python-checkins at python.org Sun Sep 2 21:10:04 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 21:10:04 +0200 (CEST) Subject: [Python-checkins] r57907 - in sandbox/trunk/2to3: fixes/fix_sort.py tests/test_fixers.py Message-ID: <20070902191004.99B0A1E4006@bag.python.org> Author: collin.winter Date: Sun Sep 2 21:10:02 2007 New Revision: 57907 Modified: sandbox/trunk/2to3/fixes/fix_sort.py sandbox/trunk/2to3/tests/test_fixers.py Log: Expand the reach of fix_sort. Modified: sandbox/trunk/2to3/fixes/fix_sort.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_sort.py (original) +++ sandbox/trunk/2to3/fixes/fix_sort.py Sun Sep 2 21:10:02 2007 @@ -1,21 +1,27 @@ """Change the two-line list/sort idiom into the modern sorted() call. -That is, +That is, both - v = list(t) - v.sorted + v = list(t()) + v.sort() + foo(v) + +and + + v = t() + v.sort() foo(v) becomes - v = sorted(t) + v = sorted(t()) foo(v) """ # Author: Collin Winter # Local imports from fixes import basefix -from fixes.util import Name +from fixes.util import Name, Call class FixSort(basefix.BaseFix): @@ -38,6 +44,19 @@ > next=any* > + | + any< + any* + simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' > + sort= + simple_stmt< + power< id2=any + trailer< '.' 'sort' > trailer< '(' ')' > + > + '\n' + > + next=any* + > """ def match(self, node): @@ -50,10 +69,19 @@ def transform(self, node, results): sort_stmt = results["sort"] - list_call = results["list"] next_stmt = results["next"] + list_call = results.get("list") + simple_expr = results.get("expr") - list_call.replace(Name("sorted", prefix=list_call.get_prefix())) + if list_call: + list_call.replace(Name("sorted", prefix=list_call.get_prefix())) + elif simple_expr: + new = simple_expr.clone() + new.set_prefix("") + simple_expr.replace(Call(Name("sorted"), [new], + prefix=simple_expr.get_prefix())) + else: + raise RuntimeError("should not have reached here") sort_stmt.remove() if next_stmt: next_stmt[0].set_prefix(sort_stmt.get_prefix()) Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sun Sep 2 21:10:02 2007 @@ -2381,7 +2381,7 @@ class Test_sort(FixerTestCase): fixer = "sort" - def test(self): + def test_list_call(self): b = """ v = list(t) v.sort() @@ -2441,6 +2441,88 @@ """ self.check(b, a) + def test_simple_expr(self): + b = """ + v = t + v.sort() + foo(v) + """ + a = """ + v = sorted(t) + foo(v) + """ + self.check(b, a) + + b = """ + v = foo(b) + v.sort() + foo(v) + """ + a = """ + v = sorted(foo(b)) + foo(v) + """ + self.check(b, a) + + b = """ + v = b.keys() + v.sort() + foo(v) + """ + a = """ + v = sorted(b.keys()) + foo(v) + """ + self.check(b, a) + + b = """ + v = foo(b) + d + v.sort() + foo(v) + """ + a = """ + v = sorted(foo(b) + d) + foo(v) + """ + self.check(b, a) + + b = """ + while x: + v = t + v.sort() + foo(v) + """ + a = """ + while x: + v = sorted(t) + foo(v) + """ + self.check(b, a) + + b = """ + v = t + # foo + v.sort() + foo(v) + """ + a = """ + v = sorted(t) + # foo + foo(v) + """ + self.check(b, a) + + b = r""" + v = t + v.sort() + foo(v) + """ + a = r""" + v = sorted(t) + foo(v) + """ + self.check(b, a) + def test_unchanged(self): s = """ v = list(t) @@ -2450,13 +2532,6 @@ self.unchanged(s) s = """ - v = list(t, u) - v.sort() - foo(v) - """ - self.unchanged(s) - - s = """ v = list(t) v.sort(u) foo(v) From python-checkins at python.org Sun Sep 2 21:13:28 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 21:13:28 +0200 (CEST) Subject: [Python-checkins] r57908 - in sandbox/trunk/2to3: fixes/fix_dict.py fixes/fix_filter.py fixes/fix_map.py tests/test_fixers.py Message-ID: <20070902191328.7195F1E400B@bag.python.org> Author: collin.winter Date: Sun Sep 2 21:13:18 2007 New Revision: 57908 Modified: sandbox/trunk/2to3/fixes/fix_dict.py sandbox/trunk/2to3/fixes/fix_filter.py sandbox/trunk/2to3/fixes/fix_map.py sandbox/trunk/2to3/tests/test_fixers.py Log: Add sum() to the list of special contexts for fix_dict, fix_map and fix_filter. Modified: sandbox/trunk/2to3/fixes/fix_dict.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_dict.py (original) +++ sandbox/trunk/2to3/fixes/fix_dict.py Sun Sep 2 21:13:18 2007 @@ -15,7 +15,7 @@ when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() or for...in!). Special contexts that apply to both: list(), sorted(), tuple() -set(), any(), all(). +set(), any(), all(), sum(). Note: iter(d.keys()) could be written as iter(d) but since the original d.iterkeys() was also redundant we don't fix this. And there @@ -31,7 +31,8 @@ from fixes.util import Name, Call, LParen, RParen, ArgList, Dot, set -exempt = set(["sorted", "list", "set", "any", "all", "tuple"]) +exempt = set(["sorted", "list", "set", "any", "all", "tuple", "sum"]) +iter_exempt = exempt | set(["iter"]) class FixDict(basefix.BaseFix): @@ -88,7 +89,7 @@ results["node"] is node): if isiter: # iter(d.iterkeys()) -> iter(d.keys()), etc. - return results["func"].value in exempt | set(["iter"]) + return results["func"].value in iter_exempt else: # list(d.keys()) -> list(d.keys()), etc. return results["func"].value in exempt Modified: sandbox/trunk/2to3/fixes/fix_filter.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_filter.py (original) +++ sandbox/trunk/2to3/fixes/fix_filter.py Sun Sep 2 21:13:18 2007 @@ -64,7 +64,7 @@ P1 = """ power< - ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | + ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'sum' | 'any' | 'all' | (any* trailer< '.' 'join' >) ) trailer< '(' node=any ')' > any* Modified: sandbox/trunk/2to3/fixes/fix_map.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_map.py (original) +++ sandbox/trunk/2to3/fixes/fix_map.py Sun Sep 2 21:13:18 2007 @@ -81,7 +81,7 @@ P1 = """ power< - ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | + ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'sum' | 'any' | 'all' | (any* trailer< '.' 'join' >) ) trailer< '(' node=any ')' > any* Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sun Sep 2 21:13:18 2007 @@ -1025,7 +1025,7 @@ self.check(b, a) def test_unchanged(self): - wrappers = ["set", "sorted", "any", "all", "tuple"] + wrappers = ["set", "sorted", "any", "all", "tuple", "sum"] for wrapper in wrappers: s = "s = %s(d.keys())" % wrapper self.unchanged(s) @@ -2240,6 +2240,8 @@ self.unchanged(a) a = """all(filter(f, 'abc'))""" self.unchanged(a) + a = """sum(filter(f, 'abc'))""" + self.unchanged(a) a = """sorted(filter(f, 'abc'))""" self.unchanged(a) a = """sorted(filter(f, 'abc'), key=blah)""" @@ -2325,6 +2327,8 @@ self.unchanged(a) a = """all(map(f, 'abc'))""" self.unchanged(a) + a = """sum(map(f, 'abc'))""" + self.unchanged(a) a = """sorted(map(f, 'abc'))""" self.unchanged(a) a = """sorted(map(f, 'abc'), key=blah)""" From python-checkins at python.org Sun Sep 2 21:33:15 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 21:33:15 +0200 (CEST) Subject: [Python-checkins] r57909 - in sandbox/trunk/2to3: README fixes/fix_idioms.py fixes/fix_sort.py tests/test_fixers.py Message-ID: <20070902193315.D8B971E4006@bag.python.org> Author: collin.winter Date: Sun Sep 2 21:33:14 2007 New Revision: 57909 Removed: sandbox/trunk/2to3/fixes/fix_sort.py Modified: sandbox/trunk/2to3/README sandbox/trunk/2to3/fixes/fix_idioms.py sandbox/trunk/2to3/tests/test_fixers.py Log: Fold fix_sort into fix_idioms. Modified: sandbox/trunk/2to3/README ============================================================================== --- sandbox/trunk/2to3/README (original) +++ sandbox/trunk/2to3/README Sun Sep 2 21:33:14 2007 @@ -64,9 +64,10 @@ * **fix_has_key** - "d.has_key(x)" -> "x in d". * **fix_idioms** - convert type(x) == T to isinstance(x, T), "while 1:" to - "while True:", etc. This fixer must be explicitly requested with "-f idioms". + "while True:", plus others. This fixer must be explicitly requested + with "-f idioms". -* **fix_imports** - Fix incompatible imports. +* **fix_imports** - Fix (some) incompatible imports. * **fix_input** - "input()" -> "eval(input())" (PEP 3111). @@ -92,9 +93,6 @@ * **fix_repr** - swap backticks for repr() calls. -* **fix_sort** - converts the two-line "v = list(x)" "v.sort()" idiom into - the single-line "v = sorted(x)" equivalent. - * **fix_standarderror** - StandardError -> Exception. * **fix_throw** - fix generator.throw() calls to be 3.0-compliant (PEP 3109). Modified: sandbox/trunk/2to3/fixes/fix_idioms.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_idioms.py (original) +++ sandbox/trunk/2to3/fixes/fix_idioms.py Sun Sep 2 21:33:14 2007 @@ -7,6 +7,23 @@ type(x) is not T -> not isinstance(x, T) * Change "while 1:" into "while True:". + +* Change both + + v = list(EXPR) + v.sort() + foo(v) + +and the more general + + v = EXPR + v.sort() + foo(v) + +into + + v = sorted(EXPR) + foo(v) """ # Author: Jacques Frechet, Collin Winter @@ -21,17 +38,63 @@ explicit = True # The user must ask for this fixer - PATTERN = """ - isinstance=comparison< %s %s T=any > | - isinstance=comparison< T=any %s %s > | + PATTERN = r""" + isinstance=comparison< %s %s T=any > + | + isinstance=comparison< T=any %s %s > + | while_stmt< 'while' while='1' ':' any+ > + | + sorted=any< + any* + simple_stmt< + expr_stmt< id1=any '=' + power< list='list' trailer< '(' (not arglist) any ')' > > + > + '\n' + > + sort= + simple_stmt< + power< id2=any + trailer< '.' 'sort' > trailer< '(' ')' > + > + '\n' + > + next=any* + > + | + sorted=any< + any* + simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' > + sort= + simple_stmt< + power< id2=any + trailer< '.' 'sort' > trailer< '(' ')' > + > + '\n' + > + next=any* + > """ % (TYPE, CMP, CMP, TYPE) + def match(self, node): + r = super(FixIdioms, self).match(node) + # If we've matched one of the sort/sorted subpatterns above, we + # want to reject matches where the initial assignment and the + # subsequent .sort() call involve different identifiers. + if r and "sorted" in r: + if r["id1"] == r["id2"]: + return r + return None + return r + def transform(self, node, results): if "isinstance" in results: return self.transform_isinstance(node, results) elif "while" in results: return self.transform_while(node, results) + elif "sorted" in results: + return self.transform_sort(node, results) else: raise RuntimeError("Invalid match") @@ -50,3 +113,22 @@ def transform_while(self, node, results): one = results["while"] one.replace(Name("True", prefix=one.get_prefix())) + + def transform_sort(self, node, results): + sort_stmt = results["sort"] + next_stmt = results["next"] + list_call = results.get("list") + simple_expr = results.get("expr") + + if list_call: + list_call.replace(Name("sorted", prefix=list_call.get_prefix())) + elif simple_expr: + new = simple_expr.clone() + new.set_prefix("") + simple_expr.replace(Call(Name("sorted"), [new], + prefix=simple_expr.get_prefix())) + else: + raise RuntimeError("should not have reached here") + sort_stmt.remove() + if next_stmt: + next_stmt[0].set_prefix(sort_stmt.get_prefix()) Deleted: /sandbox/trunk/2to3/fixes/fix_sort.py ============================================================================== --- /sandbox/trunk/2to3/fixes/fix_sort.py Sun Sep 2 21:33:14 2007 +++ (empty file) @@ -1,87 +0,0 @@ -"""Change the two-line list/sort idiom into the modern sorted() call. - -That is, both - - v = list(t()) - v.sort() - foo(v) - -and - - v = t() - v.sort() - foo(v) - -becomes - - v = sorted(t()) - foo(v) -""" -# Author: Collin Winter - -# Local imports -from fixes import basefix -from fixes.util import Name, Call - - -class FixSort(basefix.BaseFix): - - PATTERN = r""" - any< - any* - simple_stmt< - expr_stmt< id1=any '=' - power< list='list' trailer< '(' (not arglist) any ')' > > - > - '\n' - > - sort= - simple_stmt< - power< id2=any - trailer< '.' 'sort' > trailer< '(' ')' > - > - '\n' - > - next=any* - > - | - any< - any* - simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' > - sort= - simple_stmt< - power< id2=any - trailer< '.' 'sort' > trailer< '(' ')' > - > - '\n' - > - next=any* - > - """ - - def match(self, node): - r = super(FixSort, self).match(node) - if r: - if r["id1"] == r["id2"]: - return r - return None - return r - - def transform(self, node, results): - sort_stmt = results["sort"] - next_stmt = results["next"] - list_call = results.get("list") - simple_expr = results.get("expr") - - if list_call: - list_call.replace(Name("sorted", prefix=list_call.get_prefix())) - elif simple_expr: - new = simple_expr.clone() - new.set_prefix("") - simple_expr.replace(Call(Name("sorted"), [new], - prefix=simple_expr.get_prefix())) - else: - raise RuntimeError("should not have reached here") - sort_stmt.remove() - if next_stmt: - next_stmt[0].set_prefix(sort_stmt.get_prefix()) Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sun Sep 2 21:33:14 2007 @@ -2382,10 +2382,154 @@ a = """int""" self.check(b, a) -class Test_sort(FixerTestCase): - fixer = "sort" +class Test_idioms(FixerTestCase): + fixer = "idioms" + + def test_while(self): + b = """while 1: foo()""" + a = """while True: foo()""" + self.check(b, a) + + b = """while 1: foo()""" + a = """while True: foo()""" + self.check(b, a) + + b = """ + while 1: + foo() + """ + a = """ + while True: + foo() + """ + self.check(b, a) + + def test_while_unchanged(self): + s = """while 11: foo()""" + self.unchanged(s) + + s = """while 0: foo()""" + self.unchanged(s) + + s = """while foo(): foo()""" + self.unchanged(s) + + s = """while []: foo()""" + self.unchanged(s) + + def test_eq_simple(self): + b = """type(x) == T""" + a = """isinstance(x, T)""" + self.check(b, a) + + b = """if type(x) == T: pass""" + a = """if isinstance(x, T): pass""" + self.check(b, a) + + def test_eq_reverse(self): + b = """T == type(x)""" + a = """isinstance(x, T)""" + self.check(b, a) + + b = """if T == type(x): pass""" + a = """if isinstance(x, T): pass""" + self.check(b, a) + + def test_eq_expression(self): + b = """type(x+y) == d.get('T')""" + a = """isinstance(x+y, d.get('T'))""" + self.check(b, a) + + b = """type( x + y) == d.get('T')""" + a = """isinstance(x + y, d.get('T'))""" + self.check(b, a) + + def test_is_simple(self): + b = """type(x) is T""" + a = """isinstance(x, T)""" + self.check(b, a) + + b = """if type(x) is T: pass""" + a = """if isinstance(x, T): pass""" + self.check(b, a) + + def test_is_reverse(self): + b = """T is type(x)""" + a = """isinstance(x, T)""" + self.check(b, a) + + b = """if T is type(x): pass""" + a = """if isinstance(x, T): pass""" + self.check(b, a) - def test_list_call(self): + def test_is_expression(self): + b = """type(x+y) is d.get('T')""" + a = """isinstance(x+y, d.get('T'))""" + self.check(b, a) + + b = """type( x + y) is d.get('T')""" + a = """isinstance(x + y, d.get('T'))""" + self.check(b, a) + + def test_is_not_simple(self): + b = """type(x) is not T""" + a = """not isinstance(x, T)""" + self.check(b, a) + + b = """if type(x) is not T: pass""" + a = """if not isinstance(x, T): pass""" + self.check(b, a) + + def test_is_not_reverse(self): + b = """T is not type(x)""" + a = """not isinstance(x, T)""" + self.check(b, a) + + b = """if T is not type(x): pass""" + a = """if not isinstance(x, T): pass""" + self.check(b, a) + + def test_is_not_expression(self): + b = """type(x+y) is not d.get('T')""" + a = """not isinstance(x+y, d.get('T'))""" + self.check(b, a) + + b = """type( x + y) is not d.get('T')""" + a = """not isinstance(x + y, d.get('T'))""" + self.check(b, a) + + def test_ne_simple(self): + b = """type(x) != T""" + a = """not isinstance(x, T)""" + self.check(b, a) + + b = """if type(x) != T: pass""" + a = """if not isinstance(x, T): pass""" + self.check(b, a) + + def test_ne_reverse(self): + b = """T != type(x)""" + a = """not isinstance(x, T)""" + self.check(b, a) + + b = """if T != type(x): pass""" + a = """if not isinstance(x, T): pass""" + self.check(b, a) + + def test_ne_expression(self): + b = """type(x+y) != d.get('T')""" + a = """not isinstance(x+y, d.get('T'))""" + self.check(b, a) + + b = """type( x + y) != d.get('T')""" + a = """not isinstance(x + y, d.get('T'))""" + self.check(b, a) + + def test_type_unchanged(self): + a = """type(x).__name__""" + self.unchanged(a) + + def test_sort_list_call(self): b = """ v = list(t) v.sort() @@ -2445,7 +2589,7 @@ """ self.check(b, a) - def test_simple_expr(self): + def test_sort_simple_expr(self): b = """ v = t v.sort() @@ -2527,7 +2671,7 @@ """ self.check(b, a) - def test_unchanged(self): + def test_sort_unchanged(self): s = """ v = list(t) w.sort() @@ -2543,154 +2687,6 @@ self.unchanged(s) -class Test_idioms(FixerTestCase): - fixer = "idioms" - - def test_while(self): - b = """while 1: foo()""" - a = """while True: foo()""" - self.check(b, a) - - b = """while 1: foo()""" - a = """while True: foo()""" - self.check(b, a) - - b = """ - while 1: - foo() - """ - a = """ - while True: - foo() - """ - self.check(b, a) - - def test_while_unchanged(self): - s = """while 11: foo()""" - self.unchanged(s) - - s = """while 0: foo()""" - self.unchanged(s) - - s = """while foo(): foo()""" - self.unchanged(s) - - s = """while []: foo()""" - self.unchanged(s) - - def test_eq_simple(self): - b = """type(x) == T""" - a = """isinstance(x, T)""" - self.check(b, a) - - b = """if type(x) == T: pass""" - a = """if isinstance(x, T): pass""" - self.check(b, a) - - def test_eq_reverse(self): - b = """T == type(x)""" - a = """isinstance(x, T)""" - self.check(b, a) - - b = """if T == type(x): pass""" - a = """if isinstance(x, T): pass""" - self.check(b, a) - - def test_eq_expression(self): - b = """type(x+y) == d.get('T')""" - a = """isinstance(x+y, d.get('T'))""" - self.check(b, a) - - b = """type( x + y) == d.get('T')""" - a = """isinstance(x + y, d.get('T'))""" - self.check(b, a) - - def test_is_simple(self): - b = """type(x) is T""" - a = """isinstance(x, T)""" - self.check(b, a) - - b = """if type(x) is T: pass""" - a = """if isinstance(x, T): pass""" - self.check(b, a) - - def test_is_reverse(self): - b = """T is type(x)""" - a = """isinstance(x, T)""" - self.check(b, a) - - b = """if T is type(x): pass""" - a = """if isinstance(x, T): pass""" - self.check(b, a) - - def test_is_expression(self): - b = """type(x+y) is d.get('T')""" - a = """isinstance(x+y, d.get('T'))""" - self.check(b, a) - - b = """type( x + y) is d.get('T')""" - a = """isinstance(x + y, d.get('T'))""" - self.check(b, a) - - def test_is_not_simple(self): - b = """type(x) is not T""" - a = """not isinstance(x, T)""" - self.check(b, a) - - b = """if type(x) is not T: pass""" - a = """if not isinstance(x, T): pass""" - self.check(b, a) - - def test_is_not_reverse(self): - b = """T is not type(x)""" - a = """not isinstance(x, T)""" - self.check(b, a) - - b = """if T is not type(x): pass""" - a = """if not isinstance(x, T): pass""" - self.check(b, a) - - def test_is_not_expression(self): - b = """type(x+y) is not d.get('T')""" - a = """not isinstance(x+y, d.get('T'))""" - self.check(b, a) - - b = """type( x + y) is not d.get('T')""" - a = """not isinstance(x + y, d.get('T'))""" - self.check(b, a) - - def test_ne_simple(self): - b = """type(x) != T""" - a = """not isinstance(x, T)""" - self.check(b, a) - - b = """if type(x) != T: pass""" - a = """if not isinstance(x, T): pass""" - self.check(b, a) - - def test_ne_reverse(self): - b = """T != type(x)""" - a = """not isinstance(x, T)""" - self.check(b, a) - - b = """if T != type(x): pass""" - a = """if not isinstance(x, T): pass""" - self.check(b, a) - - def test_ne_expression(self): - b = """type(x+y) != d.get('T')""" - a = """not isinstance(x+y, d.get('T'))""" - self.check(b, a) - - b = """type( x + y) != d.get('T')""" - a = """not isinstance(x + y, d.get('T'))""" - self.check(b, a) - - def test_unchanged(self): - a = """type(x).__name__""" - self.unchanged(a) - - if __name__ == "__main__": import __main__ support.run_all_tests(__main__) From python-checkins at python.org Sun Sep 2 22:54:25 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 22:54:25 +0200 (CEST) Subject: [Python-checkins] r57910 - sandbox/trunk/2to3/refactor.py Message-ID: <20070902205425.E52431E4006@bag.python.org> Author: collin.winter Date: Sun Sep 2 22:54:25 2007 New Revision: 57910 Modified: sandbox/trunk/2to3/refactor.py Log: Add docstrings to some of RefactoringTool's methods. Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Sun Sep 2 22:54:25 2007 @@ -264,20 +264,40 @@ elif self.options.verbose: self.log_message("No changes in stdin") - def refactor_tree(self, tree, filename): - """Refactors a parse tree (modifying the tree in place).""" + def refactor_tree(self, tree, name): + """Refactors a parse tree (modifying the tree in place). + + Args: + tree: a pytree.Node instance representing the root of the tree + to be refactored. + name: a human-readable name for this tree. + + Returns: + True if the tree was modified, False otherwise. + """ all_fixers = self.pre_order + self.post_order for fixer in all_fixers: - fixer.start_tree(tree, filename) + fixer.start_tree(tree, name) self.traverse_by(self.pre_order, tree.pre_order()) self.traverse_by(self.post_order, tree.post_order()) for fixer in all_fixers: - fixer.finish_tree(tree, filename) + fixer.finish_tree(tree, name) return tree.was_changed def traverse_by(self, fixers, traversal): + """Traverse an AST, applying a set of fixers to each node. + + This is a helper method for refactor_tree(). + + Args: + fixers: a list of fixer instances. + traversal: a generator that yields AST nodes. + + Returns: + None + """ if not fixers: return for node in traversal: From python-checkins at python.org Sun Sep 2 22:56:29 2007 From: python-checkins at python.org (collin.winter) Date: Sun, 2 Sep 2007 22:56:29 +0200 (CEST) Subject: [Python-checkins] r57911 - sandbox/trunk/2to3/tests/test_fixers.py Message-ID: <20070902205629.537A81E4006@bag.python.org> Author: collin.winter Date: Sun Sep 2 22:56:29 2007 New Revision: 57911 Modified: sandbox/trunk/2to3/tests/test_fixers.py Log: Remove old debugging code from tests/test_fixers.py Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sun Sep 2 22:56:29 2007 @@ -87,10 +87,7 @@ self.failUnlessEqual(self.logging_stream.getvalue(), "") def refactor_stream(self, stream_name, stream): - try: - tree = self.refactor.driver.parse_stream(stream) - except Exception, err: - raise + tree = self.refactor.driver.parse_stream(stream) self.refactor.refactor_tree(tree, stream_name) return str(tree), tree From stackless-checkins-bounces at stackless.com Sun Sep 2 23:45:13 2007 From: stackless-checkins-bounces at stackless.com (stackless-checkins-bounces at stackless.com) Date: Sun, 02 Sep 2007 23:45:13 +0200 Subject: [Python-checkins] Your message to Stackless-checkins awaits moderator approval Message-ID: Your mail to 'Stackless-checkins' with the subject r57912 - in stackless/trunk: Demo/parser/unparse.py Demo/threads/README Doc Doc/Makefile Doc/howto Doc/howto/functional.rst Doc/howto/unicode.rst Doc/howto/urllib2.rst Doc/tools Doc/whatsnew Grammar/Grammar Include/Python-ast.h Include/abstract.h Include/boolobject.h Include/bufferobject.h Include/cStringIO.h Include/cellobject.h Include/cobject.h Include/code.h Include/complexobject.h Include/datetime.h Include/descrobject.h Include/dictobject.h Include/fileobject.h Include/floatobject.h Include/funcobject.h Include/genobject.h Include/intobject.h Include/iterobject.h Include/listobject.h Include/longobject.h Include/methodobject.h Include/modsupport.h Include/moduleobject.h Include/object.h Include/objimpl.h Include/opcode.h Include/py_curses.h Include/pydebug.h Include/pyerrors.h Include/pymem.h Include/pyport.h Include/pystate.h Include/rangeobject.h Include/setobject.h Include/sliceobject.h Include/stringobject.h Include/structmember.h Include/symtable.h Inclu! de/traceback.h Include/tupleobject.h Include/unicodeobject.h Include/weakrefobject.h LICENSE Lib/BaseHTTPServer.py Lib/Bastion.py Lib/CGIHTTPServer.py Lib/ConfigParser.py Lib/DocXMLRPCServer.py Lib/HTMLParser.py Lib/MimeWriter.py Lib/Queue.py Lib/SimpleHTTPServer.py Lib/SimpleXMLRPCServer.py Lib/SocketServer.py Lib/StringIO.py Lib/UserString.py Lib/_strptime.py Lib/atexit.py Lib/base64.py Lib/binhex.py Lib/bisect.py Lib/bsddb/__init__.py Lib/bsddb/dbobj.py Lib/bsddb/test/test_1413192.py Lib/bsddb/test/test_associate.py Lib/bsddb/test/test_basics.py Lib/bsddb/test/test_dbobj.py Lib/bsddb/test/test_dbshelve.py Lib/bsddb/test/test_dbtables.py Lib/bsddb/test/test_env_close.py Lib/bsddb/test/test_join.py Lib/bsddb/test/test_lock.py Lib/bsddb/test/test_misc.py Lib/bsddb/test/test_recno.py Lib/bsddb/test/test_thread.py Lib/calendar.py Lib/cgitb.py Lib/codecs.py Lib/collections.py Lib/commands.py Lib/compiler/pycodegen.py Lib/compiler/transformer.py Lib/contextlib.py Lib/cookielib.! py Lib/copy_reg.py Lib/csv.py Lib/ctypes/__init__.py Lib/ctypes/test/__init__.py Lib/ctypes/test/test_arrays.py Lib/ctypes/test/test_buffers.py Lib/ctypes/test/test_callbacks.py Lib/ctypes/test/test_cast.py Lib/ctypes/test/test_checkretval.py Lib/ctypes/test/test_find.py Lib/ctypes/test/test_functions.py Lib/ctypes/test/test Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 3462448 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://www.stackless.com/mailman/confirm/stackless-checkins/e3f0b2af3b9f020990d3bbe617d00a1ad0801309 From python-checkins at python.org Mon Sep 3 04:55:43 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 04:55:43 +0200 (CEST) Subject: [Python-checkins] r57913 - in sandbox/trunk/2to3: refactor.py tests/test_fixers.py Message-ID: <20070903025543.635D21E4006@bag.python.org> Author: collin.winter Date: Mon Sep 3 04:55:38 2007 New Revision: 57913 Modified: sandbox/trunk/2to3/refactor.py sandbox/trunk/2to3/tests/test_fixers.py Log: Refactor refactor.py to make it somewhat easier to use as a library. Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Mon Sep 3 04:55:38 2007 @@ -213,12 +213,7 @@ if self.options.doctests_only: input = f.read() else: - try: - tree = self.driver.parse_file(filename) - except Exception, err: - self.log_error("Can't parse %s: %s: %s", - filename, err.__class__.__name__, err) - return + tree = self.refactor_stream(f, filename) finally: f.close() if self.options.doctests_only: @@ -230,19 +225,39 @@ elif self.options.verbose: self.log_message("No doctest changes in %s", filename) else: - if self.options.verbose: - self.log_message("Refactoring %s", filename) - if self.refactor_tree(tree, filename): + if tree.was_changed: self.write_file(str(tree), filename) elif self.options.verbose: self.log_message("No changes in %s", filename) + def refactor_stream(self, stream, name): + """Refactor an stream, pullin from a given file-like object. + + Args: + stream: a file-like object to pull data from. + name: a human-readable name for the stream. + + Returns: + An AST corresponding to the refactored input stream; None if + there were errors during the parse. + """ + try: + tree = self.driver.parse_stream(stream) + except Exception, err: + self.log_error("Can't parse %s: %s: %s", + name, err.__class__.__name__, err) + return + if self.options.verbose: + self.log_message("Refactoring %s", name) + self.refactor_tree(tree, name) + return tree + def refactor_stdin(self): if self.options.write: self.log_error("Can't write changes back to stdin") return - input = sys.stdin.read() if self.options.doctests_only: + input = sys.stdin.read() if self.options.verbose: self.log_message("Refactoring doctests in stdin") output = self.refactor_docstring(input, "") @@ -251,15 +266,8 @@ elif self.options.verbose: self.log_message("No doctest changes in stdin") else: - if self.options.verbose: - self.log_message("Refactoring stdin") - try: - tree = self.driver.parse_string(input) - except Exception, err: - self.log_error("Can't parse stdin: %s: %s", - err.__class__.__name__, err) - return - if self.refactor_tree(tree, ""): + tree = self.refactor_stream(sys.stdin, "") + if tree.was_changed: self.write_file(str(tree), "", input) elif self.options.verbose: self.log_message("No changes in stdin") Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Mon Sep 3 04:55:38 2007 @@ -62,8 +62,8 @@ def _check(self, before, after): before = support.reformat(before) after = support.reformat(after) - refactored, tree = self.refactor_stream("", StringIO(before)) - self.failUnlessEqual(after, refactored) + tree = self.refactor.refactor_stream(StringIO(before), "") + self.failUnlessEqual(after, str(tree)) return tree def check(self, before, after, ignore_warnings=False): @@ -86,11 +86,6 @@ if not ignore_warnings: self.failUnlessEqual(self.logging_stream.getvalue(), "") - def refactor_stream(self, stream_name, stream): - tree = self.refactor.driver.parse_stream(stream) - self.refactor.refactor_tree(tree, stream_name) - return str(tree), tree - class Test_ne(FixerTestCase): fixer = "ne" From python-checkins at python.org Mon Sep 3 07:42:20 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 07:42:20 +0200 (CEST) Subject: [Python-checkins] r57914 - in sandbox/trunk/2to3: pygram.py refactor.py tests/test_all_fixers.py tests/test_fixers.py tests/test_refactor.py Message-ID: <20070903054220.84B521E4007@bag.python.org> Author: collin.winter Date: Mon Sep 3 07:42:19 2007 New Revision: 57914 Added: sandbox/trunk/2to3/tests/test_refactor.py Modified: sandbox/trunk/2to3/pygram.py sandbox/trunk/2to3/refactor.py sandbox/trunk/2to3/tests/test_all_fixers.py sandbox/trunk/2to3/tests/test_fixers.py Log: Drop the -p option to refactor.py in favor of having the tool automatically figure out when you're using print statements and when you're using print functions. Modified: sandbox/trunk/2to3/pygram.py ============================================================================== --- sandbox/trunk/2to3/pygram.py (original) +++ sandbox/trunk/2to3/pygram.py Mon Sep 3 07:42:19 2007 @@ -29,6 +29,8 @@ python_grammar = driver.load_grammar(_GRAMMAR_FILE) python_symbols = Symbols(python_grammar) +printless_python_grammar = driver.load_grammar(_GRAMMAR_FILE) +del printless_python_grammar.keywords["print"] def parenthesize(node): Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Mon Sep 3 07:42:19 2007 @@ -23,6 +23,8 @@ import pytree import patcomp from pgen2 import driver +from pgen2 import parse +from pgen2 import token from pgen2 import tokenize import fixes import pygram @@ -52,8 +54,6 @@ help="Each FIX specifies a transformation; default all") parser.add_option("-l", "--list-fixes", action="store_true", help="List available transformations (fixes/fix_*.py)") - parser.add_option("-p", "--print-function", action="store_true", - help="Modify the grammar so that print() is a function") parser.add_option("-v", "--verbose", action="store_true", help="More verbose logging") parser.add_option("-w", "--write", action="store_true", @@ -106,11 +106,14 @@ self.options = options self.errors = [] self.logger = logging.getLogger("RefactoringTool") - if self.options.print_function: - del pygram.python_grammar.keywords["print"] + # Set up two parser drivers: one that expects print statements and a + # second that expects print functions. self.driver = driver.Driver(pygram.python_grammar, convert=pytree.convert, logger=self.logger) + self.printless_driver = driver.Driver(pygram.printless_python_grammar, + convert=pytree.convert, + logger=self.logger) self.pre_order, self.post_order = self.get_fixers() self.files = [] # List of files that were or should be modified @@ -210,10 +213,7 @@ self.log_error("Can't open %s: %s", filename, err) return try: - if self.options.doctests_only: - input = f.read() - else: - tree = self.refactor_stream(f, filename) + input = f.read() finally: f.close() if self.options.doctests_only: @@ -225,24 +225,31 @@ elif self.options.verbose: self.log_message("No doctest changes in %s", filename) else: + tree = self.refactor_string(input, filename) if tree.was_changed: self.write_file(str(tree), filename) elif self.options.verbose: self.log_message("No changes in %s", filename) - def refactor_stream(self, stream, name): - """Refactor an stream, pullin from a given file-like object. + def refactor_string(self, data, name): + """Refactor a given input string. Args: - stream: a file-like object to pull data from. - name: a human-readable name for the stream. + data: a string holding the code to be refactored. + name: a human-readable name for use in error/log messages. Returns: An AST corresponding to the refactored input stream; None if there were errors during the parse. """ try: - tree = self.driver.parse_stream(stream) + try: + tree = self.driver.parse_string(data) + except parse.ParseError, e: + if e.type == token.EQUAL: + tree = self.printless_driver.parse_string(data) + else: + raise except Exception, err: self.log_error("Can't parse %s: %s: %s", name, err.__class__.__name__, err) @@ -256,8 +263,8 @@ if self.options.write: self.log_error("Can't write changes back to stdin") return + input = sys.stdin.read() if self.options.doctests_only: - input = sys.stdin.read() if self.options.verbose: self.log_message("Refactoring doctests in stdin") output = self.refactor_docstring(input, "") @@ -266,7 +273,7 @@ elif self.options.verbose: self.log_message("No doctest changes in stdin") else: - tree = self.refactor_stream(sys.stdin, "") + tree = self.refactor_string(input, "") if tree.was_changed: self.write_file(str(tree), "", input) elif self.options.verbose: Modified: sandbox/trunk/2to3/tests/test_all_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_all_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_all_fixers.py Mon Sep 3 07:42:19 2007 @@ -7,7 +7,10 @@ # Author: Collin Winter # Testing imports -from tests import support +try: + from tests import support +except ImportError: + import support # Python imports from StringIO import StringIO @@ -25,24 +28,17 @@ for k, v in kwargs.items(): setattr(self, k, v) self.verbose = False + self.doctests_only = False class Test_all(support.TestCase): def setUp(self): - options = Options(fix=["all"], print_function=False) + options = Options(fix=["all"], write=False) self.refactor = refactor.RefactoringTool(options) - def refactor_stream(self, stream_name, stream): - try: - tree = self.refactor.driver.parse_stream(stream) - except Exception, err: - raise - self.refactor.refactor_tree(tree, stream_name) - return str(tree) - def test_all_project_files(self): for filepath in support.all_project_files(): print "Fixing %s..." % filepath - self.refactor_stream(filepath, open(filepath)) + self.refactor.refactor_file(filepath) if __name__ == "__main__": Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Mon Sep 3 07:42:19 2007 @@ -62,7 +62,7 @@ def _check(self, before, after): before = support.reformat(before) after = support.reformat(after) - tree = self.refactor.refactor_stream(StringIO(before), "") + tree = self.refactor.refactor_string(before, "") self.failUnlessEqual(after, str(tree)) return tree Added: sandbox/trunk/2to3/tests/test_refactor.py ============================================================================== --- (empty file) +++ sandbox/trunk/2to3/tests/test_refactor.py Mon Sep 3 07:42:19 2007 @@ -0,0 +1,62 @@ +#!/usr/bin/env python2.5 +""" Test suite for refactor.py """ +# Author: Collin Winter + +# Testing imports +try: + from tests import support +except ImportError: + import support + +# Python imports +from StringIO import StringIO +import logging +import os +import os.path +import unittest + +# Local imports +import refactor + + +class Options: + def __init__(self, **kwargs): + for k, v in kwargs.items(): + setattr(self, k, v) + self.verbose = False + self.doctests_only = False + + +class TestAutomaticPrintDetection(unittest.TestCase): + + def setUp(self): + self.refactor = refactor.RefactoringTool(Options(fix=["print"])) + + def _check(self, before, after): + before = support.reformat(before) + after = support.reformat(after) + tree = self.refactor.refactor_string(before, "") + self.failUnlessEqual(str(tree), after) + return tree + + def check(self, before, after): + tree = self._check(before, after) + self.failUnless(tree.was_changed) + + def unchanged(self, before): + tree = self._check(before, before) + self.failIf(tree.was_changed) + + def test_print_statement(self): + b = """print >>b, c""" + a = """print(c, file=b)""" + self.check(b, a) + + def test_print_function(self): + s = """print(c, file=b)""" + self.unchanged(s) + + +if __name__ == "__main__": + import __main__ + support.run_all_tests(__main__) From python-checkins at python.org Mon Sep 3 07:48:25 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 07:48:25 +0200 (CEST) Subject: [Python-checkins] r57915 - sandbox/trunk/2to3/tests/test_all_fixers.py sandbox/trunk/2to3/tests/test_fixers.py sandbox/trunk/2to3/tests/test_refactor.py Message-ID: <20070903054825.5AE841E4007@bag.python.org> Author: collin.winter Date: Mon Sep 3 07:48:24 2007 New Revision: 57915 Modified: sandbox/trunk/2to3/tests/test_all_fixers.py sandbox/trunk/2to3/tests/test_fixers.py sandbox/trunk/2to3/tests/test_refactor.py Log: Drop unneeded imports. Modified: sandbox/trunk/2to3/tests/test_all_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_all_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_all_fixers.py Mon Sep 3 07:48:24 2007 @@ -13,10 +13,6 @@ import support # Python imports -from StringIO import StringIO -import logging -import os -import os.path import unittest # Local imports Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Mon Sep 3 07:48:24 2007 @@ -11,8 +11,6 @@ # Python imports from StringIO import StringIO import logging -import os -import os.path import unittest # Local imports Modified: sandbox/trunk/2to3/tests/test_refactor.py ============================================================================== --- sandbox/trunk/2to3/tests/test_refactor.py (original) +++ sandbox/trunk/2to3/tests/test_refactor.py Mon Sep 3 07:48:24 2007 @@ -9,10 +9,6 @@ import support # Python imports -from StringIO import StringIO -import logging -import os -import os.path import unittest # Local imports From python-checkins at python.org Mon Sep 3 07:49:33 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 07:49:33 +0200 (CEST) Subject: [Python-checkins] r57916 - sandbox/trunk/2to3/tests/test_fixers.py Message-ID: <20070903054934.11B211E4007@bag.python.org> Author: collin.winter Date: Mon Sep 3 07:49:33 2007 New Revision: 57916 Modified: sandbox/trunk/2to3/tests/test_fixers.py Log: Simply a test for the print fixer in the wake of print statement/function autodetection. Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Mon Sep 3 07:49:33 2007 @@ -358,18 +358,14 @@ self.unchanged(s) def test_idempotency_print_as_function(self): - print_stmt = pygram.python_grammar.keywords.pop("print") - try: - s = """print(1, 1+1, 1+1+1)""" - self.unchanged(s) + s = """print(1, 1+1, 1+1+1)""" + self.unchanged(s) - s = """print()""" - self.unchanged(s) + s = """print()""" + self.unchanged(s) - s = """print('')""" - self.unchanged(s) - finally: - pygram.python_grammar.keywords["print"] = print_stmt + s = """print('')""" + self.unchanged(s) def test_1(self): b = """print 1, 1+1, 1+1+1""" From python-checkins at python.org Mon Sep 3 07:55:44 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 07:55:44 +0200 (CEST) Subject: [Python-checkins] r57917 - in sandbox/trunk/2to3: fixes/fix_input.py tests/test_fixers.py Message-ID: <20070903055544.D97D61E4009@bag.python.org> Author: collin.winter Date: Mon Sep 3 07:55:44 2007 New Revision: 57917 Modified: sandbox/trunk/2to3/fixes/fix_input.py sandbox/trunk/2to3/tests/test_fixers.py Log: Make fix_input idempotent. Modified: sandbox/trunk/2to3/fixes/fix_input.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_input.py (original) +++ sandbox/trunk/2to3/fixes/fix_input.py Mon Sep 3 07:55:44 2007 @@ -4,17 +4,23 @@ # Local imports from fixes import basefix from fixes.util import Call, Name +import patcomp + + +context = patcomp.compile_pattern("power< 'eval' trailer< '(' any ')' > >") + class FixInput(basefix.BaseFix): PATTERN = """ - power< - 'input' - args=trailer< '(' [any] ')' > - > - """ + power< 'input' args=trailer< '(' [any] ')' > > + """ def transform(self, node, results): + # If we're already wrapped in a eval() call, we're done. + if context.match(node.parent.parent): + return + new = node.clone() new.set_prefix("") return Call(Name("eval"), [new], prefix=node.get_prefix()) Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Mon Sep 3 07:55:44 2007 @@ -1377,6 +1377,16 @@ a = """x = eval(input()) # foo""" self.check(b, a) + def test_idempotency(self): + s = """x = eval(input())""" + self.unchanged(s) + + s = """x = eval(input(''))""" + self.unchanged(s) + + s = """x = eval(input(foo(5) + 9))""" + self.unchanged(s) + def test_1(self): b = """x = input()""" a = """x = eval(input())""" From python-checkins at python.org Mon Sep 3 08:01:10 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 08:01:10 +0200 (CEST) Subject: [Python-checkins] r57918 - in sandbox/trunk/2to3: fixes/fix_imports.py tests/test_fixers.py Message-ID: <20070903060111.052A41E4014@bag.python.org> Author: collin.winter Date: Mon Sep 3 08:00:58 2007 New Revision: 57918 Modified: sandbox/trunk/2to3/fixes/fix_imports.py sandbox/trunk/2to3/tests/test_fixers.py Log: Remove md5 -> hashlib support from fix_imports. I become less and less happy with it every time I see its output. Modified: sandbox/trunk/2to3/fixes/fix_imports.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_imports.py (original) +++ sandbox/trunk/2to3/fixes/fix_imports.py Mon Sep 3 08:00:58 2007 @@ -12,8 +12,7 @@ from fixes.util import Name, attr_chain, any, set MAPPING = {"StringIO": ("io", ["StringIO"]), - "cStringIO": ("io", ["StringIO"]), - "md5": ("hashlib", ["md5"])} + "cStringIO": ("io", ["StringIO"])} def alternates(members): Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Mon Sep 3 08:00:58 2007 @@ -1288,8 +1288,7 @@ fixer = "imports" modules = {"StringIO": ("io", ["StringIO"]), - "cStringIO": ("io", ["StringIO"]), - "md5": ("hashlib", ["md5"])} + "cStringIO": ("io", ["StringIO"])} def test_import_module(self): for old, (new, members) in self.modules.items(): From python-checkins at python.org Mon Sep 3 08:08:27 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 08:08:27 +0200 (CEST) Subject: [Python-checkins] r57919 - in sandbox/trunk/2to3: README examples fixes/fix_ws_comma.py Message-ID: <20070903060827.8DA791E400F@bag.python.org> Author: collin.winter Date: Mon Sep 3 08:08:09 2007 New Revision: 57919 Added: sandbox/trunk/2to3/fixes/fix_ws_comma.py - copied, changed from r57893, sandbox/trunk/2to3/examples/fix_ws_comma.py Removed: sandbox/trunk/2to3/examples/ Modified: sandbox/trunk/2to3/README Log: Now that we have the ability to exempt certain fixers from '-f all', move fix_ws_comma back into fixes/; remove examples/. Modified: sandbox/trunk/2to3/README ============================================================================== --- sandbox/trunk/2to3/README (original) +++ sandbox/trunk/2to3/README Mon Sep 3 08:08:09 2007 @@ -36,7 +36,6 @@ pgen2/ - Parser generator and driver ([1]_, [2]_) fixes/ - Individual transformations tests/ - Test files for pytree, fixers, grammar, etc -examples/ - Fixers that while neat, we don't want run by refactor's -f all Capabilities Copied: sandbox/trunk/2to3/fixes/fix_ws_comma.py (from r57893, sandbox/trunk/2to3/examples/fix_ws_comma.py) ============================================================================== --- sandbox/trunk/2to3/examples/fix_ws_comma.py (original) +++ sandbox/trunk/2to3/fixes/fix_ws_comma.py Mon Sep 3 08:08:09 2007 @@ -11,6 +11,8 @@ class FixWsComma(basefix.BaseFix): + explicit = True # The user must ask for this fixers + PATTERN = """ any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]> """ @@ -19,7 +21,7 @@ COLON = pytree.Leaf(token.COLON, ":") SEPS = (COMMA, COLON) - def transform(self, node): + def transform(self, node, results): new = node.clone() comma = False for child in new.children: From python-checkins at python.org Mon Sep 3 08:14:54 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 08:14:54 +0200 (CEST) Subject: [Python-checkins] r57920 - sandbox/trunk/2to3/refactor.py Message-ID: <20070903061454.2BCF61E4007@bag.python.org> Author: collin.winter Date: Mon Sep 3 08:14:44 2007 New Revision: 57920 Modified: sandbox/trunk/2to3/refactor.py Log: Fix a bug in refactor.py that made '-f all -f idioms' skip fix_idioms anyway. Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Mon Sep 3 08:14:44 2007 @@ -128,8 +128,7 @@ pre_order_fixers = [] post_order_fixers = [] fix_names = self.options.fix - get_all_fixers = not fix_names or "all" in fix_names - if get_all_fixers: + if not fix_names or "all" in fix_names: fix_names = get_all_fix_names() for fix_name in fix_names: try: @@ -151,7 +150,7 @@ self.log_error("Can't instantiate fixes.fix_%s.%s()", fix_name, class_name, exc_info=True) continue - if fixer.explicit and get_all_fixers: + if fixer.explicit and fix_name not in self.options.fix: self.log_message("Skipping implicit fixer: %s", fix_name) continue From python-checkins at python.org Mon Sep 3 08:15:41 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 08:15:41 +0200 (CEST) Subject: [Python-checkins] r57921 - sandbox/trunk/2to3/tests/test_all_fixers.py Message-ID: <20070903061542.0764A1E4007@bag.python.org> Author: collin.winter Date: Mon Sep 3 08:15:26 2007 New Revision: 57921 Modified: sandbox/trunk/2to3/tests/test_all_fixers.py Log: Make sure the explicit fixers are run by test_all_fixers, too. Modified: sandbox/trunk/2to3/tests/test_all_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_all_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_all_fixers.py Mon Sep 3 08:15:26 2007 @@ -28,7 +28,7 @@ class Test_all(support.TestCase): def setUp(self): - options = Options(fix=["all"], write=False) + options = Options(fix=["all", "idioms", "ws_comma"], write=False) self.refactor = refactor.RefactoringTool(options) def test_all_project_files(self): From python-checkins at python.org Mon Sep 3 08:23:25 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 3 Sep 2007 08:23:25 +0200 (CEST) Subject: [Python-checkins] r57922 - sandbox/trunk/2to3/refactor.py Message-ID: <20070903062325.612991E4007@bag.python.org> Author: collin.winter Date: Mon Sep 3 08:23:25 2007 New Revision: 57922 Modified: sandbox/trunk/2to3/refactor.py Log: Fix a bug in refactor.py where parse errors would cause fatal exceptions. Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Mon Sep 3 08:23:25 2007 @@ -225,7 +225,7 @@ self.log_message("No doctest changes in %s", filename) else: tree = self.refactor_string(input, filename) - if tree.was_changed: + if tree and tree.was_changed: self.write_file(str(tree), filename) elif self.options.verbose: self.log_message("No changes in %s", filename) @@ -273,7 +273,7 @@ self.log_message("No doctest changes in stdin") else: tree = self.refactor_string(input, "") - if tree.was_changed: + if tree and tree.was_changed: self.write_file(str(tree), "", input) elif self.options.verbose: self.log_message("No changes in stdin") From python-checkins at python.org Mon Sep 3 09:12:04 2007 From: python-checkins at python.org (georg.brandl) Date: Mon, 3 Sep 2007 09:12:04 +0200 (CEST) Subject: [Python-checkins] r57924 - doctools/trunk/sphinx/web/application.py Message-ID: <20070903071204.7F12C1E4007@bag.python.org> Author: georg.brandl Date: Mon Sep 3 09:12:04 2007 New Revision: 57924 Modified: doctools/trunk/sphinx/web/application.py Log: Fix pickle loading with Windows. Bug #1090. Modified: doctools/trunk/sphinx/web/application.py ============================================================================== --- doctools/trunk/sphinx/web/application.py (original) +++ doctools/trunk/sphinx/web/application.py Mon Sep 3 09:12:04 2007 @@ -145,11 +145,11 @@ # happens if another thread already reloaded the env return print "* Loading the environment..." - with file(path.join(self.data_root, ENV_PICKLE_FILENAME)) as f: + with file(path.join(self.data_root, ENV_PICKLE_FILENAME), 'rb') as f: self.env = pickle.load(f) - with file(path.join(self.data_root, 'globalcontext.pickle')) as f: + with file(path.join(self.data_root, 'globalcontext.pickle'), 'rb') as f: self.globalcontext = pickle.load(f) - with file(path.join(self.data_root, 'searchindex.pickle')) as f: + with file(path.join(self.data_root, 'searchindex.pickle'), 'rb') as f: self.search_frontend = SearchFrontend(pickle.load(f)) self.buildmtime = new_mtime self.cache.clear() From python-checkins at python.org Mon Sep 3 09:16:47 2007 From: python-checkins at python.org (georg.brandl) Date: Mon, 3 Sep 2007 09:16:47 +0200 (CEST) Subject: [Python-checkins] r57925 - python/trunk/Lib/encodings/quopri_codec.py python/trunk/Lib/encodings/uu_codec.py Message-ID: <20070903071647.1F9D31E4007@bag.python.org> Author: georg.brandl Date: Mon Sep 3 09:16:46 2007 New Revision: 57925 Modified: python/trunk/Lib/encodings/quopri_codec.py python/trunk/Lib/encodings/uu_codec.py Log: Fix #883466: don't allow Unicode as arguments to quopri and uu codecs. Modified: python/trunk/Lib/encodings/quopri_codec.py ============================================================================== --- python/trunk/Lib/encodings/quopri_codec.py (original) +++ python/trunk/Lib/encodings/quopri_codec.py Mon Sep 3 09:16:46 2007 @@ -18,7 +18,8 @@ """ assert errors == 'strict' - f = StringIO(input) + # using str() because of cStringIO's Unicode undesired Unicode behavior. + f = StringIO(str(input)) g = StringIO() quopri.encode(f, g, 1) output = g.getvalue() @@ -33,7 +34,7 @@ """ assert errors == 'strict' - f = StringIO(input) + f = StringIO(str(input)) g = StringIO() quopri.decode(f, g) output = g.getvalue() Modified: python/trunk/Lib/encodings/uu_codec.py ============================================================================== --- python/trunk/Lib/encodings/uu_codec.py (original) +++ python/trunk/Lib/encodings/uu_codec.py Mon Sep 3 09:16:46 2007 @@ -25,7 +25,8 @@ assert errors == 'strict' from cStringIO import StringIO from binascii import b2a_uu - infile = StringIO(input) + # using str() because of cStringIO's Unicode undesired Unicode behavior. + infile = StringIO(str(input)) outfile = StringIO() read = infile.read write = outfile.write @@ -60,7 +61,7 @@ assert errors == 'strict' from cStringIO import StringIO from binascii import a2b_uu - infile = StringIO(input) + infile = StringIO(str(input)) outfile = StringIO() readline = infile.readline write = outfile.write From buildbot at python.org Mon Sep 3 09:43:41 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 03 Sep 2007 07:43:41 +0000 Subject: [Python-checkins] buildbot warnings in x86 mvlgcc trunk Message-ID: <20070903074341.8ED761E4010@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/769 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_xmlrpc make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Sep 3 09:58:14 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 03 Sep 2007 07:58:14 +0000 Subject: [Python-checkins] buildbot warnings in alpha Tru64 5.1 3.0 Message-ID: <20070903075814.B5EC21E4007@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/103 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Mon Sep 3 10:53:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 03 Sep 2007 08:53:56 +0000 Subject: [Python-checkins] buildbot warnings in PPC64 Debian trunk Message-ID: <20070903085357.054501E4012@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/167 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl Build had warnings: warnings test Excerpt from the test logfile: 2 tests failed: test_bsddb3 test_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Sep 3 10:59:08 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 03 Sep 2007 08:59:08 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP 3.0 Message-ID: <20070903085910.E796C1E4007@bag.python.org> The Buildbot has detected a new failure of x86 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%203.0/builds/94 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_uuid ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ipconfig_getnode (test.test_uuid.TestUUID) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_uuid.py", line 323, in test_ipconfig_getnode node = uuid._ipconfig_getnode() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\uuid.py", line 376, in _ipconfig_getnode for line in pipe: TypeError: '_wrap_close' object is not iterable sincerely, -The Buildbot From buildbot at python.org Mon Sep 3 19:10:42 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 03 Sep 2007 17:10:42 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD 3.0 Message-ID: <20070903171042.A9D011E4009@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/4 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: gregory.p.smith BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Mon Sep 3 20:52:06 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 03 Sep 2007 18:52:06 +0000 Subject: [Python-checkins] buildbot warnings in sparc Ubuntu dapper 3.0 Message-ID: <20070903185206.D3C881E4009@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu dapper 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20dapper%203.0/builds/4 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: gregory.p.smith Build had warnings: warnings test Excerpt from the test logfile: 2 tests failed: test_email test_ioctl ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) ====================================================================== ERROR: test_ioctl (test.test_ioctl.IoctlTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_ioctl.py", line 23, in test_ioctl r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ") IOError: [Errno 14] Bad address ====================================================================== ERROR: test_ioctl_mutate (test.test_ioctl.IoctlTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_ioctl.py", line 32, in test_ioctl_mutate r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) IOError: [Errno 14] Bad address make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Mon Sep 3 22:53:55 2007 From: python-checkins at python.org (facundo.batista) Date: Mon, 3 Sep 2007 22:53:55 +0200 (CEST) Subject: [Python-checkins] r57934 - python/branches/decimal-branch/Lib/decimal.py Message-ID: <20070903205355.87DDE1E4009@bag.python.org> Author: facundo.batista Date: Mon Sep 3 22:53:54 2007 New Revision: 57934 Modified: python/branches/decimal-branch/Lib/decimal.py Log: Several small changes from Mike Dickinson, that in general make the code simpler and more readeable (and in some cases more 'mathematically correct'. _rescale is much shorter and simpler; it's now a quiet function that doesn't raise any flags and doesn't use any information from the context. _increment and all the rounding mode functions (_round_*) have had their context arguments removed; the rounding mode functions no longer need the expdiff argument either. _fixexponents has been absorbed into _fix. Decimals created via Decimal() never have extra leading zeros. Modified: python/branches/decimal-branch/Lib/decimal.py ============================================================================== --- python/branches/decimal-branch/Lib/decimal.py (original) +++ python/branches/decimal-branch/Lib/decimal.py Mon Sep 3 22:53:54 2007 @@ -998,13 +998,13 @@ return ans if not self: exp = max(exp, other._exp - context.prec-1) - ans = other._rescale(exp, watchexp=0, context=context) + ans = other._rescale(exp, context.rounding) if shouldround: ans = ans._fix(context) return ans if not other: exp = max(exp, self._exp - context.prec-1) - ans = self._rescale(exp, watchexp=0, context=context) + ans = self._rescale(exp, context.rounding) if shouldround: ans = ans._fix(context) return ans @@ -1079,23 +1079,17 @@ tmp._sign = 1 - tmp._sign return other.__add__(tmp, context=context) - def _increment(self, round=1, context=None): + def _increment(self): """Special case of add, adding 1eExponent Since it is common, (rounding, for example) this adds (sign)*one E self._exp to the number more efficiently than add. + Assumes that self is nonspecial. + For example: Decimal('5.624e10')._increment() == Decimal('5.625e10') """ - if self._is_special: - ans = self._check_nans(context=context) - if ans: - return ans - - # Must be infinite, and incrementing makes no difference - return Decimal(self) - L = list(self._int) L[-1] += 1 spot = len(L)-1 @@ -1106,13 +1100,7 @@ break L[spot-1] += 1 spot -= 1 - ans = Decimal((self._sign, L, self._exp)) - - if context is None: - context = getcontext() - if round and context._rounding_decision == ALWAYS_ROUND: - ans = ans._fix(context) - return ans + return Decimal((self._sign, L, self._exp)) def __mul__(self, other, context=None): """Return self * other. @@ -1273,7 +1261,7 @@ if divmod == 1 or divmod == 3: exp = min(self._exp, other._exp) - ans2 = self._rescale(exp, context=context, watchexp=0) + ans2 = self._rescale(exp, context.rounding) if shouldround: ans2 = ans2._fix(context) return (Decimal( (sign, (0,), 0) ), @@ -1299,11 +1287,8 @@ if res.int >= prec_limit and shouldround: return context._raise_error(DivisionImpossible) otherside = Decimal(op1) - frozen = context._ignore_all_flags() - exp = min(self._exp, other._exp) - otherside = otherside._rescale(exp, context=context, watchexp=0) - context._regard_flags(*frozen) + otherside = otherside._rescale(exp, context.rounding) if shouldround and (divmod == 1 or divmod == 3): otherside = otherside._fix(context) return (Decimal(res), otherside) @@ -1522,251 +1507,140 @@ self - Decimal instance context - context used. """ + + if context is None: + context = getcontext() + if self._is_special: if self._isnan(): + # decapitate payload if necessary return self._fix_nan(context) else: + # self is +/-Infinity; return unaltered return self - if context is None: - context = getcontext() - prec = context.prec - ans = self._fixexponents(context) - if len(ans._int) > prec: - ans = ans._round(prec, context=context) - ans = ans._fixexponents(context) - return ans - def _fixexponents(self, context): - """Fix the exponents and return a copy with the exponent in bounds. - Only call if known to not be a special value. - """ - - ans = self - # deal with zeros first - if not ans: - Etiny = context.Etiny() - if ans._exp < Etiny: - ans = Decimal(self) - ans._exp = Etiny + # if self is zero then exponent should be between Etiny and + # Emax if _clamp==0, and between Etiny and Etop if _clamp==1. + Etiny = context.Etiny() + Etop = context.Etop() + if not self: + exp_max = [context.Emax, Etop][context._clamp] + new_exp = min(max(self._exp, Etiny), exp_max) + if new_exp != self._exp: context._raise_error(Clamped) + return Decimal((self._sign, (0,), new_exp)) else: - if context._clamp: - exp_max = context.Etop() - else: - exp_max = context.Emax - if ans._exp > exp_max: - ans = Decimal(self) - ans._exp = exp_max - context._raise_error(Clamped) - return ans + return self - # self is nonzero; if adjusted exponent is > Emax, overflow - ans_adjusted = ans.adjusted() - if ans_adjusted > context.Emax: + # exp_min is the smallest allowable exponent of the result, + # equal to max(self.adjusted()-context.prec+1, Etiny) + exp_min = len(self._int) + self._exp - context.prec + if exp_min > Etop: + # overflow: exp_min > Etop iff self.adjusted() > Emax context._raise_error(Inexact) context._raise_error(Rounded) - c = context._raise_error(Overflow, 'above Emax', ans._sign) - return c - - # Now check for subnormal results, and for the need to fold - # down. These two conditions are *not* mutually - # exclusive---when the precision is large and Emin and Emax - # are small it's quite possible to have Emin > Etop. - # (Actually, the specification requires Emin and Emax to be at - # least 5*precision, so this shouldn't happen, but it never - # hurts to be careful.) - if context._clamp: - Etop = context.Etop() - if ans._exp > Etop: - context._raise_error(Clamped) - ans = ans._rescale(Etop, context=context) - - if ans_adjusted < context.Emin: + return context._raise_error(Overflow, 'above Emax', self._sign) + self_is_subnormal = exp_min < Etiny + if self_is_subnormal: context._raise_error(Subnormal) - Etiny = context.Etiny() - if ans._exp < Etiny: - ans_before_rescale = ans - ans = ans._rescale(Etiny, context=context) - if ans != ans_before_rescale: + exp_min = Etiny + + # round if self has too many digits + if self._exp < exp_min: + context._raise_error(Rounded) + ans = self._rescale(exp_min, context.rounding) + if ans != self: + context._raise_error(Inexact) + if self_is_subnormal: context._raise_error(Underflow) if not ans: + # raise Clamped on underflow to 0 context._raise_error(Clamped) - - return ans - - def _round(self, prec=None, rounding=None, context=None, forceExp=None, fromQuantize=False): - """Returns a rounded version of self. - - You can specify the precision or rounding method. Otherwise, the - context determines it. - """ - - if self._is_special: - ans = self._check_nans(context=context) - if ans: - return ans - - if self._isinfinity(): - return Decimal(self) - - if context is None: - context = getcontext() - - if rounding is None: - rounding = context.rounding - if prec is None: - prec = context.prec - - if not self: - if prec <= 0: - dig = (0,) - exp = len(self._int) - prec + self._exp - else: - dig = (0,) * prec - exp = len(self._int) + self._exp - prec - ans = Decimal((self._sign, dig, exp)) - context._raise_error(Rounded) - return ans - - if prec == 0: - temp = Decimal(self) - temp._int = (0,)+temp._int - prec = 1 - elif prec < 0: - exp = self._exp + len(self._int) - prec - 1 - temp = Decimal( (self._sign, (0, 1), exp)) - prec = 1 - else: - temp = Decimal(self) - - # See if we need to extend precision - expdiff = prec - len(temp._int) - - # not allowing subnormal for quantize - if fromQuantize and (forceExp - context.Emax) > context.prec: - return context._raise_error(InvalidOperation, "Quantize doesn't allow subnormal") - - if expdiff >= 0: - if fromQuantize and len(temp._int)+expdiff > context.prec: - return context._raise_error(InvalidOperation, 'Beyond guarded precision') - tmp = list(temp._int) - tmp.extend([0] * expdiff) - ans = Decimal( (temp._sign, tmp, temp._exp - expdiff)) - return ans - - # OK, but maybe all the lost digits are 0. - lostdigits = self._int[expdiff:] - if lostdigits == (0,) * len(lostdigits): - ans = Decimal( (temp._sign, temp._int[:prec], temp._exp - expdiff)) - # Rounded, but not Inexact - context._raise_error(Rounded) + elif len(ans._int) == context.prec+1: + # we get here only if rescaling rounds the + # cofficient up to exactly 10**context.prec + if ans._exp < Etop: + ans = Decimal((ans._sign, ans._int[:-1], ans._exp+1)) + else: + # Inexact and Rounded have already been raised + ans = context._raise_error(Overflow, 'above Emax', + self._sign) return ans - # Okay, let's round and lose data, let's get the correct rounding function - this_function = getattr(temp, self._pick_rounding_function[rounding]) - - # Now we've got the rounding function - ans = this_function(prec, expdiff, context) - - if forceExp is not None: - exp = forceExp - if fromQuantize and not (context.Emin <= exp <= context.Emax): - if (context.Emin <= ans._exp) and ans._int == (0,): - return context._raise_error(InvalidOperation) - - newdiff = ans._exp - exp - if newdiff >= 0: - ans._int = ans._int + tuple([0]*newdiff) - else: - ans._int = (0,) - ans._exp = exp + # fold down if _clamp == 1 and self has too few digits + if context._clamp == 1 and self._exp > Etop: + context._raise_error(Clamped) + self_padded = self._int + (0,)*(self._exp - Etop) + return Decimal((self._sign, self_padded, Etop)) - if context.Emin < exp < context.Emax: - if len(ans._int) > context.prec: - return context._raise_error(InvalidOperation, 'Beyond guarded precision') - - context._raise_error(Rounded) - context._raise_error(Inexact, 'Changed in rounding') - return ans + # here self was representable to begin with; return unchanged + return self _pick_rounding_function = {} - def _round_down(self, prec, expdiff, context): - """Also known as round-towards-0, truncate.""" - return Decimal( (self._sign, self._int[:prec], self._exp - expdiff) ) + # for each of the rounding functions below: + # self is a finite, nonzero Decimal + # prec is an integer satisfying 0 <= prec < len(self._int) + # the rounded result will have exponent self._exp + len(self._int) - prec; - def _round_half_up(self, prec, expdiff, context, tmp = None): - """Rounds 5 up (away from 0)""" + def _round_down(self, prec): + """Also known as round-towards-0, truncate.""" + newexp = self._exp + len(self._int) - prec + return Decimal((self._sign, self._int[:prec] or (0,), newexp)) - if tmp is None: - tmp = Decimal( (self._sign,self._int[:prec], self._exp - expdiff)) - if self._int[prec] >= 5: - tmp = tmp._increment(round=0, context=context) - if len(tmp._int) > prec: - return Decimal( (tmp._sign, tmp._int[:-1], tmp._exp + 1)) + def _round_up(self, prec): + """Rounds away from 0.""" + newexp = self._exp + len(self._int) - prec + tmp = Decimal((self._sign, self._int[:prec] or (0,), newexp)) + for digit in self._int[prec:]: + if digit != 0: + return tmp._increment() return tmp - def _round_half_even(self, prec, expdiff, context): - """Round 5 to even, rest to nearest.""" - - tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff)) - half = (self._int[prec] == 5) - if half: - for digit in self._int[prec+1:]: - if digit != 0: - half = 0 - break - if half: - if self._int[prec-1] & 1 == 0: - return tmp - return self._round_half_up(prec, expdiff, context, tmp) + def _round_half_up(self, prec): + """Rounds 5 up (away from 0)""" + if self._int[prec] >= 5: + return self._round_up(prec) + else: + return self._round_down(prec) - def _round_half_down(self, prec, expdiff, context): + def _round_half_down(self, prec): """Round 5 down""" - - tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff)) - half = (self._int[prec] == 5) - if half: + if self._int[prec] == 5: for digit in self._int[prec+1:]: if digit != 0: - half = 0 break - if half: - return tmp - return self._round_half_up(prec, expdiff, context, tmp) + else: + return self._round_down(prec) + return self._round_half_up(prec) - def _round_up(self, prec, expdiff, context): - """Rounds away from 0.""" - tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff) ) - for digit in self._int[prec:]: - if digit != 0: - tmp = tmp._increment(round=0, context=context) - if len(tmp._int) > prec: - return Decimal( (tmp._sign, tmp._int[:-1], tmp._exp + 1)) - else: - return tmp - return tmp + def _round_half_even(self, prec): + """Round 5 to even, rest to nearest.""" + if prec and self._int[prec-1] & 1: + return self._round_half_up(prec) + else: + return self._round_half_down(prec) - def _round_ceiling(self, prec, expdiff, context): + def _round_ceiling(self, prec): """Rounds up (not away from 0 if negative.)""" if self._sign: - return self._round_down(prec, expdiff, context) + return self._round_down(prec) else: - return self._round_up(prec, expdiff, context) + return self._round_up(prec) - def _round_floor(self, prec, expdiff, context): + def _round_floor(self, prec): """Rounds down (not towards 0 if negative)""" if not self._sign: - return self._round_down(prec, expdiff, context) + return self._round_down(prec) else: - return self._round_up(prec, expdiff, context) + return self._round_up(prec) - def _round_05up(self, prec, expdiff, context): + def _round_05up(self, prec): """Round down unless digit prec-1 is 0 or 5.""" - if self._int[prec-1] in (0, 5): - return self._round_up(prec, expdiff, context) + if prec == 0 or self._int[prec-1] in (0, 5): + return self._round_up(prec) else: - return self._round_down(prec, expdiff, context) + return self._round_down(prec) def fma(self, other, third, context=None): """Fused multiply-add. @@ -2336,13 +2210,16 @@ return Decimal( (dup._sign, dup._int[:end], exp) ) - def quantize(self, exp, rounding=None, context=None, watchexp=1): + def quantize(self, exp, rounding=None, context=None): """Quantize self so its exponent is the same as that of exp. Similar to self._rescale(exp._exp) but with error checking. """ if context is None: context = getcontext() + if rounding is None: + rounding = context.rounding + if self._is_special or exp._is_special: ans = self._check_nans(exp, context) if ans: @@ -2353,7 +2230,40 @@ return self # if both are inf, it is OK return context._raise_error(InvalidOperation, 'quantize with one INF') - ans = self._rescale(exp._exp, rounding, context, watchexp=0, fromQuantize=True) + + # exp._exp should be between Etiny and Emax + if not (context.Etiny() <= exp._exp <= context.Emax): + return context._raise_error(InvalidOperation, + 'target exponent out of bounds in quantize') + + if not self: + ans = Decimal((self._sign, (0,), exp._exp)) + return ans._fix(context) + + self_adjusted = self.adjusted() + if self_adjusted > context.Emax: + return context._raise_error(InvalidOperation, + 'exponent of quantize result too large for current context') + if self_adjusted - exp._exp + 1 > context.prec: + return context._raise_error(InvalidOperation, + 'quantize result has too many digits for current context') + + ans = self._rescale(exp._exp, rounding) + if ans.adjusted() > context.Emax: + return context._raise_error(InvalidOperation, + 'exponent of quantize result too large for current context') + if len(ans._int) > context.prec: + return context._raise_error(InvalidOperation, + 'quantize result has too many digits for current context') + + # raise appropriate flags + if ans._exp > self._exp: + context._raise_error(Rounded) + if ans != self: + context._raise_error(Inexact) + if ans and ans.adjusted() < context.Emin: + context._raise_error(Subnormal) + # call to fix takes care of any necessary folddown ans = ans._fix(context) return ans @@ -2370,58 +2280,34 @@ return self._isinfinity() and other._isinfinity() and True return self._exp == other._exp - def _rescale(self, exp, rounding=None, context=None, watchexp=1, fromQuantize=False): - """Rescales so that the exponent is exp. + def _rescale(self, exp, rounding): + """Rescale self so that the exponent is exp, either by padding with zeros + or by truncating digits, using the given rounding mode. + + Specials are returned without change. This operation is + quiet: it raises no flags, and uses no information from the + context. exp = exp to scale to (an integer) - rounding = rounding version - watchexp: if set (default) an error is returned if exp is greater - than Emax or less than Etiny. + rounding = rounding mode """ - if context is None: - context = getcontext() - if self._is_special: - if self._isinfinity(): - return context._raise_error(InvalidOperation, 'rescale with an INF') - - ans = self._check_nans(context=context) - if ans: - return ans - - if fromQuantize and (context.Emax < exp or context.Etiny() > exp): - return context._raise_error(InvalidOperation, 'rescale(a, INF)') - if fromQuantize and exp < context.Etiny(): - return context._raise_error(InvalidOperation, '"rhs" must be no less than Etiny') - + return self if not self: - ans = Decimal(self) - ans._int = (0,) - ans._exp = exp - return ans - - diff = self._exp - exp - digits = len(self._int) + diff - - if watchexp and digits > context.prec: - return context._raise_error(InvalidOperation, 'Rescale > prec') - - tmp = Decimal(self) + return Decimal((self._sign, (0,), exp)) + if self._exp >= exp: + # pad answer with zeros if necessary + return Decimal((self._sign, self._int + (0,)*(self._exp - exp), exp)) + + # too many digits; round and lose data. If self.adjusted() < + # exp-1, replace self by 10**(exp-1) before rounding + digits = len(self._int) + self._exp - exp if digits < 0: - tmp._exp = exp - 1 - tmp._int = (1,) + self = Decimal((self._sign, (1,), exp-1)) digits = 0 - tmp = tmp._round(digits, rounding, context=context, forceExp=exp, - fromQuantize=fromQuantize) - - if watchexp or fromQuantize: - tmp_adjusted = tmp.adjusted() - if tmp and tmp_adjusted < context.Emin: - context._raise_error(Subnormal) - elif tmp and tmp_adjusted > context.Emax: - return context._raise_error(InvalidOperation, 'rescale(a, INF)') - return tmp + this_function = getattr(self, self._pick_rounding_function[rounding]) + return this_function(digits) def to_integral_exact(self, rounding=None, context=None): """Rounds to a nearby integer. @@ -2437,26 +2323,36 @@ ans = self._check_nans(context=context) if ans: return ans + return self if self._exp >= 0: return self + if not self: + return Decimal((self._sign, (0,), 0)) if context is None: context = getcontext() - return self._rescale(0, rounding, context=context) + if rounding is None: + rounding = context.rounding + context._raise_error(Rounded) + ans = self._rescale(0, rounding) + if ans != self: + context._raise_error(Inexact) + return ans def to_integral_value(self, rounding=None, context=None): """Rounds to the nearest integer, without raising inexact, rounded.""" + if context is None: + context = getcontext() + if rounding is None: + rounding = context.rounding if self._is_special: ans = self._check_nans(context=context) if ans: return ans + return self if self._exp >= 0: return self - if context is None: - context = getcontext() - flags = context._ignore_flags(Rounded, Inexact) - ans = self._rescale(0, rounding, context=context) - context._regard_flags(flags) - return ans + else: + return self._rescale(0, rounding) # the method name changed, but we provide also the old one, for compatibility to_integral = to_integral_value From python-checkins at python.org Tue Sep 4 00:13:49 2007 From: python-checkins at python.org (matthias.klose) Date: Tue, 4 Sep 2007 00:13:49 +0200 (CEST) Subject: [Python-checkins] r57935 - in python/branches/release25-maint: Misc/NEWS setup.py Message-ID: <20070903221349.594511E4009@bag.python.org> Author: matthias.klose Date: Tue Sep 4 00:13:48 2007 New Revision: 57935 Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/setup.py Log: - Added support for linking the bsddb module against BerkeleyDB 4.6.x. Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Tue Sep 4 00:13:48 2007 @@ -103,6 +103,8 @@ - Bug #1726026: Correct the field names of WIN32_FIND_DATAA and WIN32_FIND_DATAW structures in the ctypes.wintypes module. +- Added support for linking the bsddb module against BerkeleyDB 4.6.x. + Documentation ------------- Modified: python/branches/release25-maint/setup.py ============================================================================== --- python/branches/release25-maint/setup.py (original) +++ python/branches/release25-maint/setup.py Tue Sep 4 00:13:48 2007 @@ -607,7 +607,7 @@ # a release. Most open source OSes come with one or more # versions of BerkeleyDB already installed. - max_db_ver = (4, 5) + max_db_ver = (4, 6) min_db_ver = (3, 3) db_setup_debug = False # verbose debug prints from this script? @@ -624,7 +624,7 @@ '/sw/include/db3', ] # 4.x minor number specific paths - for x in (0,1,2,3,4,5): + for x in (0,1,2,3,4,5,6): db_inc_paths.append('/usr/include/db4%d' % x) db_inc_paths.append('/usr/include/db4.%d' % x) db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x) @@ -647,7 +647,7 @@ for dn in inc_dirs: std_variants.append(os.path.join(dn, 'db3')) std_variants.append(os.path.join(dn, 'db4')) - for x in (0,1,2,3,4): + for x in (0,1,2,3,4,5,6): std_variants.append(os.path.join(dn, "db4%d"%x)) std_variants.append(os.path.join(dn, "db4.%d"%x)) for x in (2,3): From buildbot at python.org Tue Sep 4 00:55:01 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 03 Sep 2007 22:55:01 +0000 Subject: [Python-checkins] buildbot warnings in S-390 Debian 2.5 Message-ID: <20070903225501.BDD861E4009@bag.python.org> The Buildbot has detected a new failure of S-390 Debian 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%202.5/builds/345 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 01:09:38 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 03 Sep 2007 23:09:38 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP 2.5 Message-ID: <20070903230938.2B4681E4009@bag.python.org> The Buildbot has detected a new failure of x86 XP 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%202.5/builds/281 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: matthias.klose Build had warnings: warnings failed slave lost sincerely, -The Buildbot From python-checkins at python.org Tue Sep 4 01:33:04 2007 From: python-checkins at python.org (matthias.klose) Date: Tue, 4 Sep 2007 01:33:04 +0200 (CEST) Subject: [Python-checkins] r57936 - in python/trunk: Misc/NEWS setup.py Message-ID: <20070903233304.AB5281E4009@bag.python.org> Author: matthias.klose Date: Tue Sep 4 01:33:04 2007 New Revision: 57936 Modified: python/trunk/Misc/NEWS python/trunk/setup.py Log: - Added support for linking the bsddb module against BerkeleyDB 4.6.x. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Sep 4 01:33:04 2007 @@ -838,7 +838,8 @@ - fixed a bug with bsddb.DB.stat: the flags and txn keyword arguments were transposed. -- Added support for linking the bsddb module against BerkeleyDB 4.5.x. +- Added support for linking the bsddb module against BerkeleyDB 4.5.x + and 4.6.x. - Bug #1633621: if curses.resizeterm() or curses.resize_term() is called, update _curses.LINES, _curses.COLS, curses.LINES and curses.COLS. Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Tue Sep 4 01:33:04 2007 @@ -666,7 +666,7 @@ # a release. Most open source OSes come with one or more # versions of BerkeleyDB already installed. - max_db_ver = (4, 5) + max_db_ver = (4, 6) min_db_ver = (3, 3) db_setup_debug = False # verbose debug prints from this script? @@ -684,7 +684,7 @@ '/sw/include/db3', ] # 4.x minor number specific paths - for x in (0,1,2,3,4,5): + for x in (0,1,2,3,4,5,6): db_inc_paths.append('/usr/include/db4%d' % x) db_inc_paths.append('/usr/include/db4.%d' % x) db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x) @@ -709,7 +709,7 @@ for dn in inc_dirs: std_variants.append(os.path.join(dn, 'db3')) std_variants.append(os.path.join(dn, 'db4')) - for x in (0,1,2,3,4): + for x in (0,1,2,3,4,5,6): std_variants.append(os.path.join(dn, "db4%d"%x)) std_variants.append(os.path.join(dn, "db4.%d"%x)) for x in (2,3): From buildbot at python.org Tue Sep 4 03:22:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 01:22:56 +0000 Subject: [Python-checkins] buildbot warnings in ia64 Ubuntu trunk 2.5 Message-ID: <20070904012257.003281E400B@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk%202.5/builds/355 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 04:52:11 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 02:52:11 +0000 Subject: [Python-checkins] buildbot warnings in ia64 Ubuntu trunk trunk Message-ID: <20070904025212.247BD1E400D@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk%20trunk/builds/864 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Tue Sep 4 05:17:28 2007 From: python-checkins at python.org (collin.winter) Date: Tue, 4 Sep 2007 05:17:28 +0200 (CEST) Subject: [Python-checkins] r57942 - sandbox/trunk/2to3/refactor.py Message-ID: <20070904031728.5197D1E4014@bag.python.org> Author: collin.winter Date: Tue Sep 4 05:17:27 2007 New Revision: 57942 Modified: sandbox/trunk/2to3/refactor.py Log: Silence certain parse errors (as reported by the twisted folks). Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Tue Sep 4 05:17:27 2007 @@ -212,7 +212,7 @@ self.log_error("Can't open %s: %s", filename, err) return try: - input = f.read() + input = f.read() + "\n" # Silence certain parse errors finally: f.close() if self.options.doctests_only: @@ -226,7 +226,8 @@ else: tree = self.refactor_string(input, filename) if tree and tree.was_changed: - self.write_file(str(tree), filename) + # The [:-1] is to take off the \n we added earlier + self.write_file(str(tree)[:-1], filename) elif self.options.verbose: self.log_message("No changes in %s", filename) From python-checkins at python.org Tue Sep 4 05:51:26 2007 From: python-checkins at python.org (phillip.eby) Date: Tue, 4 Sep 2007 05:51:26 +0200 (CEST) Subject: [Python-checkins] r57943 - sandbox/trunk/setuptools/pkg_resources.py Message-ID: <20070904035126.39E4D1E4014@bag.python.org> Author: phillip.eby Date: Tue Sep 4 05:51:25 2007 New Revision: 57943 Modified: sandbox/trunk/setuptools/pkg_resources.py Log: Fix precedence issue between .egg and .egg-info packages when both are installed in site-packages. Modified: sandbox/trunk/setuptools/pkg_resources.py ============================================================================== --- sandbox/trunk/setuptools/pkg_resources.py (original) +++ sandbox/trunk/setuptools/pkg_resources.py Tue Sep 4 05:51:25 2007 @@ -2148,7 +2148,8 @@ for p, item in enumerate(npath): if item==nloc: break - elif item==bdir: + elif item==bdir and self.precedence==EGG_DIST: + # if it's an .egg, give it precedence over its directory path.insert(p, loc) npath.insert(p, nloc) break @@ -2170,7 +2171,6 @@ - def check_version_conflict(self): if self.key=='setuptools': return # ignore the inevitable setuptools self-conflicts :( From python-checkins at python.org Tue Sep 4 05:54:23 2007 From: python-checkins at python.org (phillip.eby) Date: Tue, 4 Sep 2007 05:54:23 +0200 (CEST) Subject: [Python-checkins] r57944 - sandbox/branches/setuptools-0.6/pkg_resources.py sandbox/branches/setuptools-0.6/pkg_resources.txt Message-ID: <20070904035423.5FF2B1E4009@bag.python.org> Author: phillip.eby Date: Tue Sep 4 05:54:22 2007 New Revision: 57944 Modified: sandbox/branches/setuptools-0.6/pkg_resources.py sandbox/branches/setuptools-0.6/pkg_resources.txt Log: Fix package precedence problem where single-version eggs installed in ``site-packages`` would take precedence over ``.egg`` files (or directories) installed in ``site-packages``. (backport from trunk) Modified: sandbox/branches/setuptools-0.6/pkg_resources.py ============================================================================== --- sandbox/branches/setuptools-0.6/pkg_resources.py (original) +++ sandbox/branches/setuptools-0.6/pkg_resources.py Tue Sep 4 05:54:22 2007 @@ -2230,7 +2230,8 @@ for p, item in enumerate(npath): if item==nloc: break - elif item==bdir: + elif item==bdir and self.precedence==EGG_DIST: + # if it's an .egg, give it precedence over its directory path.insert(p, loc) npath.insert(p, nloc) break @@ -2252,7 +2253,6 @@ - def check_version_conflict(self): if self.key=='setuptools': return # ignore the inevitable setuptools self-conflicts :( Modified: sandbox/branches/setuptools-0.6/pkg_resources.txt ============================================================================== --- sandbox/branches/setuptools-0.6/pkg_resources.txt (original) +++ sandbox/branches/setuptools-0.6/pkg_resources.txt Tue Sep 4 05:54:22 2007 @@ -1692,6 +1692,11 @@ Release Notes/Change History ---------------------------- +0.6c7 + * Fix package precedence problem where single-version eggs installed in + ``site-packages`` would take precedence over ``.egg`` files (or directories) + installed in ``site-packages``. + 0.6c6 * Fix extracted C extensions not having executable permissions under Cygwin. From python-checkins at python.org Tue Sep 4 06:07:57 2007 From: python-checkins at python.org (phillip.eby) Date: Tue, 4 Sep 2007 06:07:57 +0200 (CEST) Subject: [Python-checkins] r57945 - sandbox/trunk/setuptools/setuptools/command/install_egg_info.py Message-ID: <20070904040757.5CCC11E4009@bag.python.org> Author: phillip.eby Date: Tue Sep 4 06:07:57 2007 New Revision: 57945 Modified: sandbox/trunk/setuptools/setuptools/command/install_egg_info.py Log: Fix import problems with system-installed nested namespace packages, due to the parent package not having the child package as an attribute. Modified: sandbox/trunk/setuptools/setuptools/command/install_egg_info.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/install_egg_info.py (original) +++ sandbox/trunk/setuptools/setuptools/command/install_egg_info.py Tue Sep 4 06:07:57 2007 @@ -56,6 +56,30 @@ return dst unpack_archive(self.source, self.target, skimmer) + + + + + + + + + + + + + + + + + + + + + + + + def install_namespaces(self): nsp = self._get_all_ns_packages() if not nsp: return @@ -66,6 +90,12 @@ f = open(filename,'wb') for pkg in nsp: pth = tuple(pkg.split('.')) + trailer = '\n' + if '.' in pkg: + trailer = ( + "; m and setattr(sys.modules[%r], %r, m)\n" + % ('.'.join(pth[:-1]), pth[-1]) + ) f.write( "import sys,new,os; " "p = os.path.join(sys._getframe(1).f_locals['sitedir'], " @@ -74,12 +104,11 @@ "m = not ie and " "sys.modules.setdefault(%(pkg)r,new.module(%(pkg)r)); " "mp = (m or []) and m.__dict__.setdefault('__path__',[]); " - "(p not in mp) and mp.append(p)\n" + "(p not in mp) and mp.append(p)%(trailer)s" % locals() ) f.close() - def _get_all_ns_packages(self): nsp = {} for pkg in self.distribution.namespace_packages or []: @@ -92,32 +121,3 @@ return nsp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From python-checkins at python.org Tue Sep 4 06:10:16 2007 From: python-checkins at python.org (phillip.eby) Date: Tue, 4 Sep 2007 06:10:16 +0200 (CEST) Subject: [Python-checkins] r57946 - in sandbox/branches/setuptools-0.6: setuptools.txt setuptools/command/install_egg_info.py Message-ID: <20070904041016.7145F1E4010@bag.python.org> Author: phillip.eby Date: Tue Sep 4 06:10:16 2007 New Revision: 57946 Modified: sandbox/branches/setuptools-0.6/setuptools.txt sandbox/branches/setuptools-0.6/setuptools/command/install_egg_info.py Log: Fix import problems with nested namespace packages installed via ``--root`` or ``--single-version-externally-managed``, due to the parent package not having the child package as an attribute. (backport from trunk) Modified: sandbox/branches/setuptools-0.6/setuptools.txt ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools.txt (original) +++ sandbox/branches/setuptools-0.6/setuptools.txt Tue Sep 4 06:10:16 2007 @@ -2616,6 +2616,10 @@ * Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and ``egg_info`` command failing on new, uncommitted SVN directories. + * Fix import problems with nested namespace packages installed via + ``--root`` or ``--single-version-externally-managed``, due to the + parent package not having the child package as an attribute. + 0.6c6 * Added ``--egg-path`` option to ``develop`` command, allowing you to force ``.egg-link`` files to use relative paths (allowing them to be shared across Modified: sandbox/branches/setuptools-0.6/setuptools/command/install_egg_info.py ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools/command/install_egg_info.py (original) +++ sandbox/branches/setuptools-0.6/setuptools/command/install_egg_info.py Tue Sep 4 06:10:16 2007 @@ -56,6 +56,30 @@ return dst unpack_archive(self.source, self.target, skimmer) + + + + + + + + + + + + + + + + + + + + + + + + def install_namespaces(self): nsp = self._get_all_ns_packages() if not nsp: return @@ -66,6 +90,12 @@ f = open(filename,'wb') for pkg in nsp: pth = tuple(pkg.split('.')) + trailer = '\n' + if '.' in pkg: + trailer = ( + "; m and setattr(sys.modules[%r], %r, m)\n" + % ('.'.join(pth[:-1]), pth[-1]) + ) f.write( "import sys,new,os; " "p = os.path.join(sys._getframe(1).f_locals['sitedir'], " @@ -74,12 +104,11 @@ "m = not ie and " "sys.modules.setdefault(%(pkg)r,new.module(%(pkg)r)); " "mp = (m or []) and m.__dict__.setdefault('__path__',[]); " - "(p not in mp) and mp.append(p)\n" + "(p not in mp) and mp.append(p)%(trailer)s" % locals() ) f.close() - def _get_all_ns_packages(self): nsp = {} for pkg in self.distribution.namespace_packages or []: @@ -92,32 +121,3 @@ return nsp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From buildbot at python.org Tue Sep 4 08:24:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 06:24:56 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP 3.0 Message-ID: <20070904062457.15C091E4009@bag.python.org> The Buildbot has detected a new failure of x86 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%203.0/builds/98 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: guido.van.rossum,martin.v.loewis,skip.montanaro Build had warnings: warnings test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_uuid ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ipconfig_getnode (test.test_uuid.TestUUID) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_uuid.py", line 323, in test_ipconfig_getnode node = uuid._ipconfig_getnode() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\uuid.py", line 376, in _ipconfig_getnode for line in pipe: TypeError: '_wrap_close' object is not iterable sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 09:19:16 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 07:19:16 +0000 Subject: [Python-checkins] buildbot failure in amd64 XP 3.0 Message-ID: <20070904071916.D3C5A1E4009@bag.python.org> The Buildbot has detected a new failure of amd64 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%203.0/builds/94 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Tue Sep 4 10:16:15 2007 From: python-checkins at python.org (mark.summerfield) Date: Tue, 4 Sep 2007 10:16:15 +0200 (CEST) Subject: [Python-checkins] r57954 - python/trunk/Doc/library/copy.rst python/trunk/Doc/library/mutex.rst python/trunk/Doc/library/queue.rst python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst Message-ID: <20070904081615.A8A071E4009@bag.python.org> Author: mark.summerfield Date: Tue Sep 4 10:16:15 2007 New Revision: 57954 Modified: python/trunk/Doc/library/copy.rst python/trunk/Doc/library/mutex.rst python/trunk/Doc/library/queue.rst python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst Log: Added cross-references plus a note about dict & list shallow copying. Modified: python/trunk/Doc/library/copy.rst ============================================================================== --- python/trunk/Doc/library/copy.rst (original) +++ python/trunk/Doc/library/copy.rst Tue Sep 4 10:16:15 2007 @@ -54,6 +54,10 @@ classes (shallow and deeply), by returning the original object unchanged; this is compatible with the way these are treated by the :mod:`pickle` module. +Shallow copies of dictionaries can be made using :meth:`dict.copy`, and +of lists by assigning a slice of the entire list, for example, +``copied_list = original_list[:]``. + .. versionchanged:: 2.5 Added copying functions. Modified: python/trunk/Doc/library/mutex.rst ============================================================================== --- python/trunk/Doc/library/mutex.rst (original) +++ python/trunk/Doc/library/mutex.rst Tue Sep 4 10:16:15 2007 @@ -8,8 +8,9 @@ The :mod:`mutex` module defines a class that allows mutual-exclusion via -acquiring and releasing locks. It does not require (or imply) threading or -multi-tasking, though it could be useful for those purposes. +acquiring and releasing locks. It does not require (or imply) +:mod:`threading` or multi-tasking, though it could be useful for those +purposes. The :mod:`mutex` module defines the following class: Modified: python/trunk/Doc/library/queue.rst ============================================================================== --- python/trunk/Doc/library/queue.rst (original) +++ python/trunk/Doc/library/queue.rst Tue Sep 4 10:16:15 2007 @@ -7,10 +7,11 @@ The :mod:`Queue` module implements a multi-producer, multi-consumer FIFO queue. -It is especially useful in threads programming when information must be +It is especially useful in threaded programming when information must be exchanged safely between multiple threads. The :class:`Queue` class in this module implements all the required locking semantics. It depends on the -availability of thread support in Python. +availability of thread support in Python; see the :mod:`threading` +module. The :mod:`Queue` module defines the following class and exception: Modified: python/trunk/Doc/library/thread.rst ============================================================================== --- python/trunk/Doc/library/thread.rst (original) +++ python/trunk/Doc/library/thread.rst Tue Sep 4 10:16:15 2007 @@ -13,9 +13,11 @@ single: semaphores, binary This module provides low-level primitives for working with multiple threads -(a.k.a. :dfn:`light-weight processes` or :dfn:`tasks`) --- multiple threads of +(also called :dfn:`light-weight processes` or :dfn:`tasks`) --- multiple threads of control sharing their global data space. For synchronization, simple locks -(a.k.a. :dfn:`mutexes` or :dfn:`binary semaphores`) are provided. +(also called :dfn:`mutexes` or :dfn:`binary semaphores`) are provided. +The :mod:`threading` module provides an easier to use and higher-level +threading API built on top of this module. .. index:: single: pthreads Modified: python/trunk/Doc/library/threading.rst ============================================================================== --- python/trunk/Doc/library/threading.rst (original) +++ python/trunk/Doc/library/threading.rst Tue Sep 4 10:16:15 2007 @@ -8,6 +8,7 @@ This module constructs higher-level threading interfaces on top of the lower level :mod:`thread` module. +See also the :mod:`mutex` and :mod:`Queue` modules. The :mod:`dummy_threading` module is provided for situations where :mod:`threading` cannot be used because :mod:`thread` is missing. From python-checkins at python.org Tue Sep 4 10:21:25 2007 From: python-checkins at python.org (georg.brandl) Date: Tue, 4 Sep 2007 10:21:25 +0200 (CEST) Subject: [Python-checkins] r57955 - peps/trunk/pep-3119.txt peps/trunk/pep-3141.txt Message-ID: <20070904082125.8C7A41E400B@bag.python.org> Author: georg.brandl Date: Tue Sep 4 10:21:25 2007 New Revision: 57955 Modified: peps/trunk/pep-3119.txt peps/trunk/pep-3141.txt Log: Two very small fixes. Modified: peps/trunk/pep-3119.txt ============================================================================== --- peps/trunk/pep-3119.txt (original) +++ peps/trunk/pep-3119.txt Tue Sep 4 10:21:25 2007 @@ -771,7 +771,7 @@ from the appropriate base classes; these vary from default implementations for certain functionality to an improved ability to distinguish between mappings and sequences. But there are no sticks. -If ``hasattr(x, __len__)`` works for you, great! ABCs are intended to +If ``hasattr(x, "__len__")`` works for you, great! ABCs are intended to solve problems that don't have a good solution at all in Python 2, such as distinguishing between mappings and sequences. Modified: peps/trunk/pep-3141.txt ============================================================================== --- peps/trunk/pep-3141.txt (original) +++ peps/trunk/pep-3141.txt Tue Sep 4 10:21:25 2007 @@ -553,7 +553,7 @@ Acknowledgements ================ -Thanks to Neil Norwitz for encouraging me to write this PEP in the +Thanks to Neal Norwitz for encouraging me to write this PEP in the first place, to Travis Oliphant for pointing out that the numpy people didn't really care about the algebraic concepts, to Alan Isaac for reminding me that Scheme had already done this, and to Guido van From buildbot at python.org Tue Sep 4 10:46:37 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 08:46:37 +0000 Subject: [Python-checkins] buildbot warnings in hppa Ubuntu dapper 3.0 Message-ID: <20070904084637.E0B0F1E400A@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu dapper 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20dapper%203.0/builds/50 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From nnorwitz at gmail.com Tue Sep 4 11:38:59 2007 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 4 Sep 2007 05:38:59 -0400 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20070904093859.GA13165@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_buffer test_bufio test_bz2 test_cProfile test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd_line test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test test_ftplib failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_ftplib.py", line 53, in testTimeoutValue ftp = ftplib.FTP("localhost", timeout=30) File "/tmp/python-test/local/lib/python2.6/ftplib.py", line 114, in __init__ self.connect(host) File "/tmp/python-test/local/lib/python2.6/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/tmp/python-test/local/lib/python2.6/socket.py", line 462, in create_connection raise error, msg error: (111, 'Connection refused') test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_plistlib skipped -- No module named plistlib test_poll test_popen [7356 refs] [7356 refs] [7356 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [7731 refs] [7731 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:97: DeprecationWarning: socket.ssl() is deprecated. Use ssl.sslsocket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:63: DeprecationWarning: socket.ssl() is deprecated. Use ssl.sslsocket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:133: DeprecationWarning: socket.ssl() is deprecated. Use ssl.sslsocket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:147: DeprecationWarning: socket.ssl() is deprecated. Use ssl.sslsocket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl /tmp/python-test/local/lib/python2.6/test/test_ssl.py:60: DeprecationWarning: socket.ssl() is deprecated. Use ssl.sslsocket() instead. ssl_sock = socket.ssl(s) test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7351 refs] [7349 refs] [7351 refs] [7351 refs] [7351 refs] [7351 refs] [7351 refs] [7351 refs] [7351 refs] [7351 refs] [7349 refs] [8897 refs] [7567 refs] [7352 refs] [7351 refs] [7351 refs] [7351 refs] [7351 refs] [7351 refs] . [7351 refs] [7351 refs] this bit of output is from a test of stdout in a different process ... [7351 refs] [7351 refs] [7567 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7351 refs] [7351 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7355 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 305 tests OK. 1 test failed: test_ftplib 21 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_plistlib test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl warning: DBTxn aborted in destructor. No prior commit() or abort(). [505755 refs] From python-checkins at python.org Tue Sep 4 11:51:57 2007 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 4 Sep 2007 11:51:57 +0200 (CEST) Subject: [Python-checkins] r57958 - python/trunk/Modules/posixmodule.c Message-ID: <20070904095157.8734A1E400A@bag.python.org> Author: martin.v.loewis Date: Tue Sep 4 11:51:57 2007 New Revision: 57958 Modified: python/trunk/Modules/posixmodule.c Log: Document that we rely on the OS to release the crypto context. Fixes #1626801. Modified: python/trunk/Modules/posixmodule.c ============================================================================== --- python/trunk/Modules/posixmodule.c (original) +++ python/trunk/Modules/posixmodule.c Tue Sep 4 11:51:57 2007 @@ -8074,6 +8074,8 @@ BYTE *pbBuffer ); static CRYPTGENRANDOM pCryptGenRandom = NULL; +/* This handle is never explicitly released. Instead, the operating + system will release it when the process terminates. */ static HCRYPTPROV hCryptProv = 0; static PyObject* From buildbot at python.org Tue Sep 4 12:00:26 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 10:00:26 +0000 Subject: [Python-checkins] buildbot warnings in amd64 XP 3.0 Message-ID: <20070904100027.340881E401A@bag.python.org> The Buildbot has detected a new failure of amd64 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%203.0/builds/95 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl,martin.v.loewis,thomas.wouters Build had warnings: warnings test Excerpt from the test logfile: 21 tests failed: test_bigaddrspace test_csv test_doctest test_dumbdbm test_file test_fileinput test_format test_getargs2 test_gettext test_index test_io test_itertools test_largefile test_mailbox test_netrc test_operator test_pep277 test_subprocess test_tempfile test_uuid test_winsound ====================================================================== FAIL: test_concat (test.test_bigaddrspace.StrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_support.py", line 495, in wrapper return f(self) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_bigaddrspace.py", line 14, in test_concat self.assertRaises(OverflowError, operator.add, s1, '?') AssertionError: OverflowError not raised by add ====================================================================== FAIL: test_optimized_concat (test.test_bigaddrspace.StrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_support.py", line 495, in wrapper return f(self) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_bigaddrspace.py", line 24, in test_optimized_concat self.fail("should have raised OverflowError") AssertionError: should have raised OverflowError ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None Traceback (most recent call last): File "../lib/test/regrtest.py", line 586, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 48, in testboth("%.*d", (sys.maxint,1)) # expect overflow File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 43, in testboth testformat(str8(formatstr), *args) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 22, in testformat result = formatstr % args MemoryError ====================================================================== ERROR: test_n (test.test_getargs2.Signed_TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_getargs2.py", line 190, in test_n self.failUnlessEqual(99, getargs_n(Long())) TypeError: 'Long' object cannot be interpreted as an integer ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_getitem (test.test_index.OverflowTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_index.py", line 190, in test_getitem (0, maxsize, 1)) AssertionError: (-1, -1, 1) != (0, -1, 1) ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_islice (test.test_itertools.TestBasicOps) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_itertools.py", line 343, in test_islice self.assertEqual(len(list(islice(count(), 1, 10, maxsize))), 1) ValueError: Step for islice() must be a positive integer or None. ====================================================================== FAIL: test_count (test.test_itertools.TestBasicOps) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_itertools.py", line 60, in test_count self.assertRaises(OverflowError, list, islice(count(maxsize-5), 10)) AssertionError: OverflowError not raised by list ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== FAIL: test_delslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 147, in test_delslice self.assertEqual(a, []) AssertionError: [9] != [] ====================================================================== FAIL: test_getslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 171, in test_getslice self.assertEqual(b, a) AssertionError: [0, 1, 2, 3, 4, 5, 6, 7, 8] != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ====================================================================== FAIL: test_setslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 308, in test_setslice self.assertEqual(a, []) AssertionError: [3] != [] ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ipconfig_getnode (test.test_uuid.TestUUID) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_uuid.py", line 323, in test_ipconfig_getnode node = uuid._ipconfig_getnode() File "C:\buildbot\3.0.heller-windows-amd64\build\lib\uuid.py", line 376, in _ipconfig_getnode for line in pipe: TypeError: '_wrap_close' object is not iterable ====================================================================== ERROR: test_extremes (test.test_winsound.BeepTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 18, in test_extremes winsound.Beep(37, 75) RuntimeError: Failed to beep ====================================================================== ERROR: test_increasingfrequency (test.test_winsound.BeepTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 23, in test_increasingfrequency winsound.Beep(i, 75) RuntimeError: Failed to beep ====================================================================== ERROR: test_alias_asterisk (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 64, in test_alias_asterisk winsound.PlaySound('SystemAsterisk', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_exclamation (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 74, in test_alias_exclamation winsound.PlaySound('SystemExclamation', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_exit (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 84, in test_alias_exit winsound.PlaySound('SystemExit', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_hand (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 94, in test_alias_hand winsound.PlaySound('SystemHand', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_question (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 104, in test_alias_question winsound.PlaySound('SystemQuestion', winsound.SND_ALIAS) RuntimeError: Failed to play sound sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 12:21:36 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 10:21:36 +0000 Subject: [Python-checkins] buildbot warnings in x86 FreeBSD 3.0 Message-ID: <20070904102137.093FF1E400A@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/8 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl,martin.v.loewis,thomas.wouters Build had warnings: warnings test Excerpt from the test logfile: 4 tests failed: test_asynchat test_doctest test_email test_xmlrpc ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) ====================================================================== FAIL: test_introspection1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 354, in test_introspection1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection2 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 365, in test_introspection2 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection3 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 378, in test_introspection3 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_multicall (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 395, in test_multicall self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_simple1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 341, in test_simple1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_basic (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 447, in test_basic self.fail("%s\n%s" % (e, e.headers)) AssertionError: sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 12:37:25 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 10:37:25 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070904103725.57F111E400C@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/3 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: mark.summerfield,martin.v.loewis BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 13:19:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 11:19:56 +0000 Subject: [Python-checkins] buildbot warnings in hppa Ubuntu dapper trunk Message-ID: <20070904111956.5469A1E4002@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu dapper trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20dapper%20trunk/builds/111 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: mark.summerfield,martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Tue Sep 4 15:13:15 2007 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 4 Sep 2007 15:13:15 +0200 (CEST) Subject: [Python-checkins] r57960 - in python/trunk: Doc/library/readline.rst Misc/ACKS Misc/NEWS Modules/readline.c configure configure.in pyconfig.h.in Message-ID: <20070904131315.9C7EB1E4002@bag.python.org> Author: martin.v.loewis Date: Tue Sep 4 15:13:14 2007 New Revision: 57960 Modified: python/trunk/Doc/library/readline.rst python/trunk/Misc/ACKS python/trunk/Misc/NEWS python/trunk/Modules/readline.c python/trunk/configure python/trunk/configure.in python/trunk/pyconfig.h.in Log: Patch #1388440: Add set_completion_display_matches_hook and get_completion_type to readline. Modified: python/trunk/Doc/library/readline.rst ============================================================================== --- python/trunk/Doc/library/readline.rst (original) +++ python/trunk/Doc/library/readline.rst Tue Sep 4 15:13:14 2007 @@ -142,6 +142,12 @@ .. versionadded:: 2.3 +.. function:: get_completion_type() + + Get the type of completion being attempted. + + .. versionadded:: 2.6 + .. function:: get_begidx() Get the beginning index of the readline tab-completion scope. @@ -161,6 +167,16 @@ Get the readline word delimiters for tab-completion. +.. function:: set_completion_display_matches_hook([function]) + + Set or remove the completion display function. If *function* is + specified, it will be used as the new completion display function; + if omitted or ``None``, any completion display function already + installed is removed. The completion display function is called as + ``function(substitution, [matches], longest_match_length)`` once + each time matches need to be displayed. + + .. versionadded:: 2.6 .. function:: add_history(line) Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Tue Sep 4 15:13:14 2007 @@ -80,6 +80,7 @@ Peter Bosch Eric Bouck Thierry Bousch +Sebastian Boving Monty Brandenberg Georg Brandl Terrence Brannon Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Sep 4 15:13:14 2007 @@ -746,6 +746,9 @@ Extension Modules ----------------- +- Patch #1388440: Add set_completion_display_matches_hook and + get_completion_type to readline. + - Bug #1649098: Avoid declaration of zero-sized array declaration in structure. Modified: python/trunk/Modules/readline.c ============================================================================== --- python/trunk/Modules/readline.c (original) +++ python/trunk/Modules/readline.c Tue Sep 4 15:13:14 2007 @@ -198,6 +198,7 @@ /* Exported functions to specify hook functions in Python */ +static PyObject *completion_display_matches_hook = NULL; static PyObject *startup_hook = NULL; #ifdef HAVE_RL_PRE_INPUT_HOOK @@ -205,6 +206,20 @@ #endif static PyObject * +set_completion_display_matches_hook(PyObject *self, PyObject *args) +{ + return set_hook("completion_display_matches_hook", + &completion_display_matches_hook, args); +} + +PyDoc_STRVAR(doc_set_completion_display_matches_hook, +"set_completion_display_matches_hook([function]) -> None\n\ +Set or remove the completion display function.\n\ +The function is called as\n\ + function(substitution, [matches], longest_match_length)\n\ +once each time matches need to be displayed."); + +static PyObject * set_startup_hook(PyObject *self, PyObject *args) { return set_hook("startup_hook", &startup_hook, args); @@ -245,6 +260,18 @@ static PyObject *endidx = NULL; +/* Get the completion type for the scope of the tab-completion */ +static PyObject * +get_completion_type(PyObject *self, PyObject *noarg) +{ + return PyInt_FromLong(rl_completion_type); +} + +PyDoc_STRVAR(doc_get_completion_type, +"get_completion_type() -> int\n\ +Get the type of completion being attempted."); + + /* Get the beginning index for the scope of the tab-completion */ static PyObject * @@ -557,6 +584,8 @@ METH_NOARGS, get_history_length_doc}, {"set_completer", set_completer, METH_VARARGS, doc_set_completer}, {"get_completer", get_completer, METH_NOARGS, doc_get_completer}, + {"get_completion_type", get_completion_type, + METH_NOARGS, doc_get_completion_type}, {"get_begidx", get_begidx, METH_NOARGS, doc_get_begidx}, {"get_endidx", get_endidx, METH_NOARGS, doc_get_endidx}, @@ -568,6 +597,8 @@ {"get_completer_delims", get_completer_delims, METH_NOARGS, doc_get_completer_delims}, + {"set_completion_display_matches_hook", set_completion_display_matches_hook, + METH_VARARGS, doc_set_completion_display_matches_hook}, {"set_startup_hook", set_startup_hook, METH_VARARGS, doc_set_startup_hook}, #ifdef HAVE_RL_PRE_INPUT_HOOK @@ -631,6 +662,48 @@ #endif +/* C function to call the Python completion_display_matches */ + +static void +on_completion_display_matches_hook(char **matches, + int num_matches, int max_length) +{ + if (completion_display_matches_hook != NULL) { + int i; + PyObject *m, *s; + PyObject *r; +#ifdef WITH_THREAD + PyGILState_STATE gilstate = PyGILState_Ensure(); +#endif + m = PyList_New(num_matches); + for (i = 0; i < num_matches; i++) { + s = PyString_FromString(matches[i+1]); + PyList_SetItem(m, i, s); + } + + r = PyObject_CallFunction(completion_display_matches_hook, + "sOi", matches[0], m, max_length); + + Py_DECREF(m); + + if (r == NULL || + (r != Py_None && PyInt_AsLong(r) == -1 && PyErr_Occurred())) { + goto error; + } + + Py_DECREF(r); + goto done; + error: + PyErr_Clear(); + Py_XDECREF(r); + done: +#ifdef WITH_THREAD + PyGILState_Release(gilstate); +#endif + } +} + + /* C function to call the Python completer. */ static char * @@ -708,6 +781,10 @@ rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap); rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap); /* Set our hook functions */ +#ifdef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK + rl_completion_display_matches_hook = + (rl_compdisp_func_t *)on_completion_display_matches_hook; +#endif rl_startup_hook = (Function *)on_startup_hook; #ifdef HAVE_RL_PRE_INPUT_HOOK rl_pre_input_hook = (Function *)on_pre_input_hook; Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Tue Sep 4 15:13:14 2007 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 57762 . +# From configure.in Revision: 57904 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.6. # @@ -21699,6 +21699,77 @@ fi +# also in 4.0 +{ echo "$as_me:$LINENO: checking for rl_completion_display_matches_hook in -lreadline" >&5 +echo $ECHO_N "checking for rl_completion_display_matches_hook in -lreadline... $ECHO_C" >&6; } +if test "${ac_cv_lib_readline_rl_completion_display_matches_hook+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lreadline $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char rl_completion_display_matches_hook (); +int +main () +{ +return rl_completion_display_matches_hook (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_readline_rl_completion_display_matches_hook=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_readline_rl_completion_display_matches_hook=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_completion_display_matches_hook" >&5 +echo "${ECHO_T}$ac_cv_lib_readline_rl_completion_display_matches_hook" >&6; } +if test $ac_cv_lib_readline_rl_completion_display_matches_hook = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1 +_ACEOF + +fi + + # check for readline 4.2 { echo "$as_me:$LINENO: checking for rl_completion_matches in -lreadline" >&5 echo $ECHO_N "checking for rl_completion_matches in -lreadline... $ECHO_C" >&6; } Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Tue Sep 4 15:13:14 2007 @@ -3137,6 +3137,11 @@ AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1, [Define if you have readline 4.0]), , ) +# also in 4.0 +AC_CHECK_LIB(readline, rl_completion_display_matches_hook, + AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1, + [Define if you have readline 4.0]), , ) + # check for readline 4.2 AC_CHECK_LIB(readline, rl_completion_matches, AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1, Modified: python/trunk/pyconfig.h.in ============================================================================== --- python/trunk/pyconfig.h.in (original) +++ python/trunk/pyconfig.h.in Tue Sep 4 15:13:14 2007 @@ -432,6 +432,9 @@ /* Define if you have readline 2.2 */ #undef HAVE_RL_COMPLETION_APPEND_CHARACTER +/* Define if you have readline 4.0 */ +#undef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK + /* Define if you have readline 4.2 */ #undef HAVE_RL_COMPLETION_MATCHES From python-checkins at python.org Tue Sep 4 16:19:29 2007 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 4 Sep 2007 16:19:29 +0200 (CEST) Subject: [Python-checkins] r57961 - in python/trunk: Lib/test/test_compiler.py Misc/ACKS Misc/NEWS Parser/parsetok.c Parser/tokenizer.c Parser/tokenizer.h Message-ID: <20070904141929.14D041E4002@bag.python.org> Author: martin.v.loewis Date: Tue Sep 4 16:19:28 2007 New Revision: 57961 Modified: python/trunk/Lib/test/test_compiler.py python/trunk/Misc/ACKS python/trunk/Misc/NEWS python/trunk/Parser/parsetok.c python/trunk/Parser/tokenizer.c python/trunk/Parser/tokenizer.h Log: Patch #1031213: Decode source line in SyntaxErrors back to its original source encoding. Will backport to 2.5. Modified: python/trunk/Lib/test/test_compiler.py ============================================================================== --- python/trunk/Lib/test/test_compiler.py (original) +++ python/trunk/Lib/test/test_compiler.py Tue Sep 4 16:19:28 2007 @@ -155,6 +155,32 @@ self.assertEquals(dct.get('result'), 1) + def _testErrEnc(self, src, text, offset): + try: + compile(src, "", "exec") + except SyntaxError, e: + self.assertEquals(e.offset, offset) + self.assertEquals(e.text, text) + + def testSourceCodeEncodingsError(self): + # Test SyntaxError with encoding definition + sjis = "print '\x83\x70\x83\x43\x83\x5c\x83\x93', '\n" + ascii = "print '12345678', '\n" + encdef = "#! -*- coding: ShiftJIS -*-\n" + + # ascii source without encdef + self._testErrEnc(ascii, ascii, 19) + + # ascii source with encdef + self._testErrEnc(encdef+ascii, ascii, 19) + + # non-ascii source with encdef + self._testErrEnc(encdef+sjis, sjis, 19) + + # ShiftJIS source without encdef + self._testErrEnc(sjis, sjis, 19) + + NOLINENO = (compiler.ast.Module, compiler.ast.Stmt, compiler.ast.Discard) ############################################################################### Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Tue Sep 4 16:19:28 2007 @@ -320,6 +320,7 @@ Tony Ingraldi John Interrante Bob Ippolito +Atsuo Ishimoto Ben Jackson Paul Jackson David Jacobs Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Sep 4 16:19:28 2007 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Patch #1031213: Decode source line in SyntaxErrors back to its original source + encoding. + - Py_ssize_t fields work in structmember when HAVE_LONG_LONG is not defined. - PEP 3123: Provide forward compatibility with Python 3.0, while keeping Modified: python/trunk/Parser/parsetok.c ============================================================================== --- python/trunk/Parser/parsetok.c (original) +++ python/trunk/Parser/parsetok.c Tue Sep 4 16:19:28 2007 @@ -218,16 +218,24 @@ err_ret->error = E_EOF; err_ret->lineno = tok->lineno; if (tok->buf != NULL) { + char *text = NULL; size_t len; assert(tok->cur - tok->buf < INT_MAX); err_ret->offset = (int)(tok->cur - tok->buf); len = tok->inp - tok->buf; - err_ret->text = (char *) PyObject_MALLOC(len + 1); - if (err_ret->text != NULL) { - if (len > 0) - strncpy(err_ret->text, tok->buf, len); - err_ret->text[len] = '\0'; +#ifdef Py_USING_UNICODE + text = PyTokenizer_RestoreEncoding(tok, len, &err_ret->offset); + +#endif + if (text == NULL) { + text = (char *) PyObject_MALLOC(len + 1); + if (text != NULL) { + if (len > 0) + strncpy(text, tok->buf, len); + text[len] = '\0'; + } } + err_ret->text = text; } } else if (tok->encoding != NULL) { node* r = PyNode_New(encoding_decl); Modified: python/trunk/Parser/tokenizer.c ============================================================================== --- python/trunk/Parser/tokenizer.c (original) +++ python/trunk/Parser/tokenizer.c Tue Sep 4 16:19:28 2007 @@ -1522,6 +1522,68 @@ return result; } +/* This function is only called from parsetok. However, it cannot live + there, as it must be empty for PGEN, and we can check for PGEN only + in this file. */ + +#ifdef PGEN +char* +PyTokenizer_RestoreEncoding(struct tok_state* tok, int len, int* offset) +{ + return NULL; +} +#else +static PyObject * +dec_utf8(const char *enc, const char *text, size_t len) { + PyObject *ret = NULL; + PyObject *unicode_text = PyUnicode_DecodeUTF8(text, len, "replace"); + if (unicode_text) { + ret = PyUnicode_AsEncodedString(unicode_text, enc, "replace"); + Py_DECREF(unicode_text); + } + if (!ret) { + PyErr_Print(); + } + return ret; +} + +char * +PyTokenizer_RestoreEncoding(struct tok_state* tok, int len, int *offset) +{ + char *text = NULL; + if (tok->encoding) { + /* convert source to original encondig */ + PyObject *lineobj = dec_utf8(tok->encoding, tok->buf, len); + if (lineobj != NULL) { + int linelen = PyString_Size(lineobj); + const char *line = PyString_AsString(lineobj); + text = PyObject_MALLOC(linelen + 1); + if (text != NULL && line != NULL) { + if (linelen) + strncpy(text, line, linelen); + text[linelen] = '\0'; + } + Py_DECREF(lineobj); + + /* adjust error offset */ + if (*offset > 1) { + PyObject *offsetobj = dec_utf8(tok->encoding, + tok->buf, *offset-1); + if (offsetobj) { + *offset = PyString_Size(offsetobj) + 1; + Py_DECREF(offsetobj); + } + } + + } + } + return text; + +} +#endif + + + #ifdef Py_DEBUG void Modified: python/trunk/Parser/tokenizer.h ============================================================================== --- python/trunk/Parser/tokenizer.h (original) +++ python/trunk/Parser/tokenizer.h Tue Sep 4 16:19:28 2007 @@ -58,6 +58,8 @@ extern struct tok_state *PyTokenizer_FromFile(FILE *, char *, char *); extern void PyTokenizer_Free(struct tok_state *); extern int PyTokenizer_Get(struct tok_state *, char **, char **); +extern char * PyTokenizer_RestoreEncoding(struct tok_state* tok, + int len, int *offset); #ifdef __cplusplus } From python-checkins at python.org Tue Sep 4 16:20:26 2007 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 4 Sep 2007 16:20:26 +0200 (CEST) Subject: [Python-checkins] r57962 - in python/branches/release25-maint: Lib/test/test_compiler.py Misc/NEWS Parser/parsetok.c Parser/tokenizer.c Parser/tokenizer.h Message-ID: <20070904142026.0B1FA1E4002@bag.python.org> Author: martin.v.loewis Date: Tue Sep 4 16:20:25 2007 New Revision: 57962 Modified: python/branches/release25-maint/Lib/test/test_compiler.py python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Parser/parsetok.c python/branches/release25-maint/Parser/tokenizer.c python/branches/release25-maint/Parser/tokenizer.h Log: Patch #1031213: Decode source line in SyntaxErrors back to its original source encoding. Modified: python/branches/release25-maint/Lib/test/test_compiler.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_compiler.py (original) +++ python/branches/release25-maint/Lib/test/test_compiler.py Tue Sep 4 16:20:25 2007 @@ -155,6 +155,32 @@ self.assertEquals(dct.get('result'), 1) + def _testErrEnc(self, src, text, offset): + try: + compile(src, "", "exec") + except SyntaxError, e: + self.assertEquals(e.offset, offset) + self.assertEquals(e.text, text) + + def testSourceCodeEncodingsError(self): + # Test SyntaxError with encoding definition + sjis = "print '\x83\x70\x83\x43\x83\x5c\x83\x93', '\n" + ascii = "print '12345678', '\n" + encdef = "#! -*- coding: ShiftJIS -*-\n" + + # ascii source without encdef + self._testErrEnc(ascii, ascii, 19) + + # ascii source with encdef + self._testErrEnc(encdef+ascii, ascii, 19) + + # non-ascii source with encdef + self._testErrEnc(encdef+sjis, sjis, 19) + + # ShiftJIS source without encdef + self._testErrEnc(sjis, sjis, 19) + + NOLINENO = (compiler.ast.Module, compiler.ast.Stmt, compiler.ast.Discard) ############################################################################### Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Tue Sep 4 16:20:25 2007 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Patch #1031213: Decode source line in SyntaxErrors back to its original source + encoding. + - Patch #1673759: add a missing overflow check when formatting floats with %G. Modified: python/branches/release25-maint/Parser/parsetok.c ============================================================================== --- python/branches/release25-maint/Parser/parsetok.c (original) +++ python/branches/release25-maint/Parser/parsetok.c Tue Sep 4 16:20:25 2007 @@ -216,16 +216,24 @@ err_ret->error = E_EOF; err_ret->lineno = tok->lineno; if (tok->buf != NULL) { + char *text = NULL; size_t len; assert(tok->cur - tok->buf < INT_MAX); err_ret->offset = (int)(tok->cur - tok->buf); len = tok->inp - tok->buf; - err_ret->text = (char *) PyObject_MALLOC(len + 1); - if (err_ret->text != NULL) { - if (len > 0) - strncpy(err_ret->text, tok->buf, len); - err_ret->text[len] = '\0'; +#ifdef Py_USING_UNICODE + text = PyTokenizer_RestoreEncoding(tok, len, &err_ret->offset); + +#endif + if (text == NULL) { + text = (char *) PyObject_MALLOC(len + 1); + if (text != NULL) { + if (len > 0) + strncpy(text, tok->buf, len); + text[len] = '\0'; + } } + err_ret->text = text; } } else if (tok->encoding != NULL) { node* r = PyNode_New(encoding_decl); Modified: python/branches/release25-maint/Parser/tokenizer.c ============================================================================== --- python/branches/release25-maint/Parser/tokenizer.c (original) +++ python/branches/release25-maint/Parser/tokenizer.c Tue Sep 4 16:20:25 2007 @@ -1522,6 +1522,68 @@ return result; } +/* This function is only called from parsetok. However, it cannot live + there, as it must be empty for PGEN, and we can check for PGEN only + in this file. */ + +#ifdef PGEN +char* +PyTokenizer_RestoreEncoding(struct tok_state* tok, int len, int* offset) +{ + return NULL; +} +#else +static PyObject * +dec_utf8(const char *enc, const char *text, size_t len) { + PyObject *ret = NULL; + PyObject *unicode_text = PyUnicode_DecodeUTF8(text, len, "replace"); + if (unicode_text) { + ret = PyUnicode_AsEncodedString(unicode_text, enc, "replace"); + Py_DECREF(unicode_text); + } + if (!ret) { + PyErr_Print(); + } + return ret; +} + +char * +PyTokenizer_RestoreEncoding(struct tok_state* tok, int len, int *offset) +{ + char *text = NULL; + if (tok->encoding) { + /* convert source to original encondig */ + PyObject *lineobj = dec_utf8(tok->encoding, tok->buf, len); + if (lineobj != NULL) { + int linelen = PyString_Size(lineobj); + const char *line = PyString_AsString(lineobj); + text = PyObject_MALLOC(linelen + 1); + if (text != NULL && line != NULL) { + if (linelen) + strncpy(text, line, linelen); + text[linelen] = '\0'; + } + Py_DECREF(lineobj); + + /* adjust error offset */ + if (*offset > 1) { + PyObject *offsetobj = dec_utf8(tok->encoding, + tok->buf, *offset-1); + if (offsetobj) { + *offset = PyString_Size(offsetobj) + 1; + Py_DECREF(offsetobj); + } + } + + } + } + return text; + +} +#endif + + + #ifdef Py_DEBUG void Modified: python/branches/release25-maint/Parser/tokenizer.h ============================================================================== --- python/branches/release25-maint/Parser/tokenizer.h (original) +++ python/branches/release25-maint/Parser/tokenizer.h Tue Sep 4 16:20:25 2007 @@ -58,6 +58,8 @@ extern struct tok_state *PyTokenizer_FromFile(FILE *, char *, char *); extern void PyTokenizer_Free(struct tok_state *); extern int PyTokenizer_Get(struct tok_state *, char **, char **); +extern char * PyTokenizer_RestoreEncoding(struct tok_state* tok, + int len, int *offset); #ifdef __cplusplus } From python-checkins at python.org Tue Sep 4 17:53:19 2007 From: python-checkins at python.org (phillip.eby) Date: Tue, 4 Sep 2007 17:53:19 +0200 (CEST) Subject: [Python-checkins] r57964 - in sandbox/trunk/setuptools: EasyInstall.txt README.txt ez_setup.py setup.py setuptools.txt setuptools/command/easy_install.py setuptools/command/upload.py setuptools/package_index.py Message-ID: <20070904155319.82C2B1E400D@bag.python.org> Author: phillip.eby Date: Tue Sep 4 17:53:18 2007 New Revision: 57964 Modified: sandbox/trunk/setuptools/EasyInstall.txt sandbox/trunk/setuptools/README.txt sandbox/trunk/setuptools/ez_setup.py sandbox/trunk/setuptools/setup.py sandbox/trunk/setuptools/setuptools.txt sandbox/trunk/setuptools/setuptools/command/easy_install.py sandbox/trunk/setuptools/setuptools/command/upload.py sandbox/trunk/setuptools/setuptools/package_index.py Log: Remove all references to the Cheese Shop, and switch to using the new PyPI "/simple" REST API. Modified: sandbox/trunk/setuptools/EasyInstall.txt ============================================================================== --- sandbox/trunk/setuptools/EasyInstall.txt (original) +++ sandbox/trunk/setuptools/EasyInstall.txt Tue Sep 4 17:53:18 2007 @@ -64,7 +64,7 @@ If you can't use APS, or don't have internet access at all, you will need to first download the appropriate ``.egg`` file from the `setuptools PyPI page -`_ using a computer with internet +`_ using a computer with internet access. Place the egg in the same directory as ``ez_setup.py`` on the target computer before running it. @@ -794,9 +794,9 @@ installed package to work, like manually adding it to ``PYTHONPATH`` or to ``sys.path`` at runtime. -``--index-url=URL, -i URL`` (New in 0.4a1) +``--index-url=URL, -i URL`` (New in 0.4a1; default changed in 0.6c7) Specifies the base URL of the Python Package Index. The default is - http://www.python.org/pypi if not specified. When a package is requested + http://pypi.python.org/simple if not specified. When a package is requested that is not locally available or linked from a ``--find-links`` download page, the package index will be searched for download pages for the needed package, and those download pages will be searched for links to download Modified: sandbox/trunk/setuptools/README.txt ============================================================================== --- sandbox/trunk/setuptools/README.txt (original) +++ sandbox/trunk/setuptools/README.txt Tue Sep 4 17:53:18 2007 @@ -88,9 +88,9 @@ ========= All setuptools downloads can be found at `the project's home page in the Python -Cheese Shop`_. Scroll to the very bottom of the page to find the links. +Package Index`_. Scroll to the very bottom of the page to find the links. -.. _the project's home page in the Python Cheese Shop: http://cheeseshop.python.org/pypi/setuptools +.. _the project's home page in the Python Package Index: http://pypi.python.org/pypi/setuptools In addition to the PyPI downloads, the development version of ``setuptools`` is available from the `Python SVN sandbox`_, and in-development versions of the Modified: sandbox/trunk/setuptools/ez_setup.py ============================================================================== --- sandbox/trunk/setuptools/ez_setup.py (original) +++ sandbox/trunk/setuptools/ez_setup.py Tue Sep 4 17:53:18 2007 @@ -15,7 +15,7 @@ """ import sys DEFAULT_VERSION = "0.7a1" -DEFAULT_URL = "http://cheeseshop.python.org/packages/%s/s/setuptools/" % sys.version[:3] +DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3] md5_data = { 'setuptools-0.6a10-py2.3.egg': '162d8357f1aff2b0349c6c247ee62987', Modified: sandbox/trunk/setuptools/setup.py ============================================================================== --- sandbox/trunk/setuptools/setup.py (original) +++ sandbox/trunk/setuptools/setup.py Tue Sep 4 17:53:18 2007 @@ -27,7 +27,7 @@ license="PSF or ZPL", long_description = open('README.txt').read(), keywords = "CPAN PyPI distutils eggs package management", - url = "http://cheeseshop.python.org/pypi/setuptools", + url = "http://pypi.python.org/pypi/setuptools", test_suite = 'setuptools.tests', packages = find_packages(), package_data = {'setuptools':['*.exe','site-patch.py']}, Modified: sandbox/trunk/setuptools/setuptools.txt ============================================================================== --- sandbox/trunk/setuptools/setuptools.txt (original) +++ sandbox/trunk/setuptools/setuptools.txt Tue Sep 4 17:53:18 2007 @@ -2332,7 +2332,7 @@ ``--repository=URL, -r URL`` The URL of the repository to upload to. Defaults to - http://www.python.org/pypi (i.e., the main PyPI installation). + http://pypi.python.org/pypi (i.e., the main PyPI installation). ------------------------------------ Modified: sandbox/trunk/setuptools/setuptools/command/easy_install.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/easy_install.py (original) +++ sandbox/trunk/setuptools/setuptools/command/easy_install.py Tue Sep 4 17:53:18 2007 @@ -156,7 +156,7 @@ else: self.all_site_dirs.append(normalize_path(d)) if not self.editable: self.check_site_dir() - self.index_url = self.index_url or "http://cheeseshop.python.org/pypi" + self.index_url = self.index_url or "http://pypi.python.org/simple" self.shadow_path = self.all_site_dirs[:] for path_item in self.install_dir, normalize_path(self.script_dir): if path_item not in self.shadow_path: Modified: sandbox/trunk/setuptools/setuptools/command/upload.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/upload.py (original) +++ sandbox/trunk/setuptools/setuptools/command/upload.py Tue Sep 4 17:53:18 2007 @@ -20,7 +20,7 @@ description = "upload binary package to PyPI" - DEFAULT_REPOSITORY = 'http://www.python.org/pypi' + DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi' user_options = [ ('repository=', 'r', Modified: sandbox/trunk/setuptools/setuptools/package_index.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/package_index.py (original) +++ sandbox/trunk/setuptools/setuptools/package_index.py Tue Sep 4 17:53:18 2007 @@ -149,7 +149,7 @@ class PackageIndex(Environment): """A distribution index that scans web pages for download URLs""" - def __init__(self, index_url="http://www.python.org/pypi", hosts=('*',), + def __init__(self, index_url="http://pypi.python.org/simple", hosts=('*',), *args, **kw ): Environment.__init__(self,*args,**kw) From python-checkins at python.org Tue Sep 4 17:56:34 2007 From: python-checkins at python.org (phillip.eby) Date: Tue, 4 Sep 2007 17:56:34 +0200 (CEST) Subject: [Python-checkins] r57965 - in sandbox/branches/setuptools-0.6: EasyInstall.txt README.txt ez_setup.py setup.py setuptools.txt setuptools/command/easy_install.py setuptools/command/upload.py setuptools/package_index.py Message-ID: <20070904155634.DCE871E400A@bag.python.org> Author: phillip.eby Date: Tue Sep 4 17:56:34 2007 New Revision: 57965 Modified: sandbox/branches/setuptools-0.6/EasyInstall.txt sandbox/branches/setuptools-0.6/README.txt sandbox/branches/setuptools-0.6/ez_setup.py sandbox/branches/setuptools-0.6/setup.py sandbox/branches/setuptools-0.6/setuptools.txt sandbox/branches/setuptools-0.6/setuptools/command/easy_install.py sandbox/branches/setuptools-0.6/setuptools/command/upload.py sandbox/branches/setuptools-0.6/setuptools/package_index.py Log: The default ``--index-url`` is now ``http://pypi.python.org/simple``, to use the Python Package Index's new simpler (and faster!) REST API. (backport from trunk) Modified: sandbox/branches/setuptools-0.6/EasyInstall.txt ============================================================================== --- sandbox/branches/setuptools-0.6/EasyInstall.txt (original) +++ sandbox/branches/setuptools-0.6/EasyInstall.txt Tue Sep 4 17:56:34 2007 @@ -64,7 +64,7 @@ If you can't use APS, or don't have internet access at all, you will need to first download the appropriate ``.egg`` file from the `setuptools PyPI page -`_ using a computer with internet +`_ using a computer with internet access. Place the egg in the same directory as ``ez_setup.py`` on the target computer before running it. @@ -794,9 +794,9 @@ installed package to work, like manually adding it to ``PYTHONPATH`` or to ``sys.path`` at runtime. -``--index-url=URL, -i URL`` (New in 0.4a1) +``--index-url=URL, -i URL`` (New in 0.4a1; default changed in 0.6c7) Specifies the base URL of the Python Package Index. The default is - http://www.python.org/pypi if not specified. When a package is requested + http://pypi.python.org/simple if not specified. When a package is requested that is not locally available or linked from a ``--find-links`` download page, the package index will be searched for download pages for the needed package, and those download pages will be searched for links to download @@ -1236,6 +1236,9 @@ 0.6c7 * ``ftp:`` download URLs now work correctly. + * The default ``--index-url`` is now ``http://pypi.python.org/simple``, to use + the Python Package Index's new simpler (and faster!) REST API. + 0.6c6 * EasyInstall no longer aborts the installation process if a URL it wants to retrieve can't be downloaded, unless the URL is an actual package download. Modified: sandbox/branches/setuptools-0.6/README.txt ============================================================================== --- sandbox/branches/setuptools-0.6/README.txt (original) +++ sandbox/branches/setuptools-0.6/README.txt Tue Sep 4 17:56:34 2007 @@ -88,9 +88,9 @@ ========= All setuptools downloads can be found at `the project's home page in the Python -Cheese Shop`_. Scroll to the very bottom of the page to find the links. +Package Index`_. Scroll to the very bottom of the page to find the links. -.. _the project's home page in the Python Cheese Shop: http://cheeseshop.python.org/pypi/setuptools +.. _the project's home page in the Python Package Index: http://pypi.python.org/pypi/setuptools In addition to the PyPI downloads, the development version of ``setuptools`` is available from the `Python SVN sandbox`_, and in-development versions of the Modified: sandbox/branches/setuptools-0.6/ez_setup.py ============================================================================== --- sandbox/branches/setuptools-0.6/ez_setup.py (original) +++ sandbox/branches/setuptools-0.6/ez_setup.py Tue Sep 4 17:56:34 2007 @@ -15,7 +15,7 @@ """ import sys DEFAULT_VERSION = "0.6c7" -DEFAULT_URL = "http://cheeseshop.python.org/packages/%s/s/setuptools/" % sys.version[:3] +DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3] md5_data = { 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca', Modified: sandbox/branches/setuptools-0.6/setup.py ============================================================================== --- sandbox/branches/setuptools-0.6/setup.py (original) +++ sandbox/branches/setuptools-0.6/setup.py Tue Sep 4 17:56:34 2007 @@ -23,7 +23,7 @@ license="PSF or ZPL", long_description = open('README.txt').read(), keywords = "CPAN PyPI distutils eggs package management", - url = "http://cheeseshop.python.org/pypi/setuptools", + url = "http://pypi.python.org/pypi/setuptools", test_suite = 'setuptools.tests', packages = find_packages(), package_data = {'setuptools':['*.exe']}, Modified: sandbox/branches/setuptools-0.6/setuptools.txt ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools.txt (original) +++ sandbox/branches/setuptools-0.6/setuptools.txt Tue Sep 4 17:56:34 2007 @@ -2354,7 +2354,7 @@ ``--repository=URL, -r URL`` The URL of the repository to upload to. Defaults to - http://www.python.org/pypi (i.e., the main PyPI installation). + http://pypi.python.org/pypi (i.e., the main PyPI installation). ------------------------------------ Modified: sandbox/branches/setuptools-0.6/setuptools/command/easy_install.py ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools/command/easy_install.py (original) +++ sandbox/branches/setuptools-0.6/setuptools/command/easy_install.py Tue Sep 4 17:56:34 2007 @@ -156,7 +156,7 @@ else: self.all_site_dirs.append(normalize_path(d)) if not self.editable: self.check_site_dir() - self.index_url = self.index_url or "http://cheeseshop.python.org/pypi" + self.index_url = self.index_url or "http://pypi.python.org/simple" self.shadow_path = self.all_site_dirs[:] for path_item in self.install_dir, normalize_path(self.script_dir): if path_item not in self.shadow_path: Modified: sandbox/branches/setuptools-0.6/setuptools/command/upload.py ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools/command/upload.py (original) +++ sandbox/branches/setuptools-0.6/setuptools/command/upload.py Tue Sep 4 17:56:34 2007 @@ -20,7 +20,7 @@ description = "upload binary package to PyPI" - DEFAULT_REPOSITORY = 'http://www.python.org/pypi' + DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi' user_options = [ ('repository=', 'r', Modified: sandbox/branches/setuptools-0.6/setuptools/package_index.py ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools/package_index.py (original) +++ sandbox/branches/setuptools-0.6/setuptools/package_index.py Tue Sep 4 17:56:34 2007 @@ -149,7 +149,7 @@ class PackageIndex(Environment): """A distribution index that scans web pages for download URLs""" - def __init__(self, index_url="http://www.python.org/pypi", hosts=('*',), + def __init__(self, index_url="http://pypi.python.org/simple", hosts=('*',), *args, **kw ): Environment.__init__(self,*args,**kw) From python-checkins at python.org Tue Sep 4 18:51:04 2007 From: python-checkins at python.org (phillip.eby) Date: Tue, 4 Sep 2007 18:51:04 +0200 (CEST) Subject: [Python-checkins] r57967 - sandbox/branches/setuptools-0.6/ez_setup.py sandbox/branches/setuptools-0.6/setuptools.txt Message-ID: <20070904165104.B821F1E4002@bag.python.org> Author: phillip.eby Date: Tue Sep 4 18:51:04 2007 New Revision: 57967 Modified: sandbox/branches/setuptools-0.6/ez_setup.py sandbox/branches/setuptools-0.6/setuptools.txt Log: 0.6c7 release Modified: sandbox/branches/setuptools-0.6/ez_setup.py ============================================================================== --- sandbox/branches/setuptools-0.6/ez_setup.py (original) +++ sandbox/branches/setuptools-0.6/ez_setup.py Tue Sep 4 18:51:04 2007 @@ -39,6 +39,12 @@ 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167', 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64', 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d', + 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20', + 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab', + 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53', + 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2', + 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e', + 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372', } import sys, os Modified: sandbox/branches/setuptools-0.6/setuptools.txt ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools.txt (original) +++ sandbox/branches/setuptools-0.6/setuptools.txt Tue Sep 4 18:51:04 2007 @@ -2612,7 +2612,6 @@ ---------------------------- 0.6c7 - * Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and ``egg_info`` command failing on new, uncommitted SVN directories. From python-checkins at python.org Tue Sep 4 20:17:36 2007 From: python-checkins at python.org (matthias.klose) Date: Tue, 4 Sep 2007 20:17:36 +0200 (CEST) Subject: [Python-checkins] r57972 - in python/trunk: Makefile.pre.in Misc/NEWS Message-ID: <20070904181736.AB7961E400A@bag.python.org> Author: matthias.klose Date: Tue Sep 4 20:17:36 2007 New Revision: 57972 Modified: python/trunk/Makefile.pre.in python/trunk/Misc/NEWS Log: - Makefile.pre.in(buildbottest): Run an optional script pybuildbot.identify to include some information about the build environment. Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Tue Sep 4 20:17:36 2007 @@ -601,7 +601,11 @@ # Like testall, but with a single pass only +# run an optional script to include some information about the build environment buildbottest: all platform + - at if which pybuildbot.identify >/dev/null 2>&1; then \ + pybuildbot.identify "CC=$(CC)" "CXX=$(CXX)"; \ + fi $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall -rw QUICKTESTOPTS= $(TESTOPTS) -x test_thread test_signal test_strftime \ Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Sep 4 20:17:36 2007 @@ -996,6 +996,9 @@ - Allow Emacs 22 for building the documentation in info format. +- Makefile.pre.in(buildbottest): Run an optional script pybuildbot.identify + to include some information about the build environment. + C API ----- From buildbot at python.org Tue Sep 4 20:24:28 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 18:24:28 +0000 Subject: [Python-checkins] buildbot warnings in x86 gentoo trunk Message-ID: <20070904182428.A05661E4002@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/2435 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Error 127 sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 20:24:35 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 18:24:35 +0000 Subject: [Python-checkins] buildbot warnings in PPC64 Debian trunk Message-ID: <20070904182435.D48721E4002@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/172 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Error 127 sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 20:25:11 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 18:25:11 +0000 Subject: [Python-checkins] buildbot warnings in x86 mvlgcc trunk Message-ID: <20070904182511.6FA0B1E400C@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/774 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Error 127 sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 20:27:22 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 18:27:22 +0000 Subject: [Python-checkins] buildbot warnings in x86 FreeBSD trunk Message-ID: <20070904182723.0761D1E4016@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/6 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 20:27:57 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 18:27:57 +0000 Subject: [Python-checkins] buildbot warnings in g4 osx.4 trunk Message-ID: <20070904182758.0668A1E400E@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2254 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Error 127 sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 20:44:04 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 18:44:04 +0000 Subject: [Python-checkins] buildbot warnings in MIPS Debian trunk Message-ID: <20070904184404.39D301E4002@bag.python.org> The Buildbot has detected a new failure of MIPS Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%20trunk/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Error 127 sincerely, -The Buildbot From python-checkins at python.org Tue Sep 4 21:05:38 2007 From: python-checkins at python.org (matthias.klose) Date: Tue, 4 Sep 2007 21:05:38 +0200 (CEST) Subject: [Python-checkins] r57973 - python/trunk/Makefile.pre.in Message-ID: <20070904190538.C87251E4002@bag.python.org> Author: matthias.klose Date: Tue Sep 4 21:05:38 2007 New Revision: 57973 Modified: python/trunk/Makefile.pre.in Log: - Makefile.pre.in(buildbottest): Remove whitespace at eol. Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Tue Sep 4 21:05:38 2007 @@ -603,9 +603,9 @@ # Like testall, but with a single pass only # run an optional script to include some information about the build environment buildbottest: all platform - - at if which pybuildbot.identify >/dev/null 2>&1; then \ - pybuildbot.identify "CC=$(CC)" "CXX=$(CXX)"; \ - fi + - at if which pybuildbot.identify >/dev/null 2>&1; then \ + pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \ + fi $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall -rw QUICKTESTOPTS= $(TESTOPTS) -x test_thread test_signal test_strftime \ From buildbot at python.org Tue Sep 4 21:12:40 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 19:12:40 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP trunk Message-ID: <20070904191240.6C31A1E4002@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/627 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings failed slave lost sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 21:21:03 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 19:21:03 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070904192103.3B0841E4018@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/7 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Tue Sep 4 22:46:03 2007 From: python-checkins at python.org (matthias.klose) Date: Tue, 4 Sep 2007 22:46:03 +0200 (CEST) Subject: [Python-checkins] r57975 - in python/trunk: Misc/NEWS Modules/_ctypes/libffi/configure Modules/_ctypes/libffi/configure.ac Message-ID: <20070904204603.373A21E4002@bag.python.org> Author: matthias.klose Date: Tue Sep 4 22:46:02 2007 New Revision: 57975 Modified: python/trunk/Misc/NEWS python/trunk/Modules/_ctypes/libffi/configure python/trunk/Modules/_ctypes/libffi/configure.ac Log: - Fix libffi configure for hppa*-*-linux* | parisc*-*-linux*. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Sep 4 22:46:02 2007 @@ -852,6 +852,8 @@ - Fix an off-by-one bug in locale.strxfrm(). +- Fix libffi configure for hppa*-*-linux* | parisc*-*-linux*. + Tests ----- Modified: python/trunk/Modules/_ctypes/libffi/configure ============================================================================== --- python/trunk/Modules/_ctypes/libffi/configure (original) +++ python/trunk/Modules/_ctypes/libffi/configure Tue Sep 4 22:46:02 2007 @@ -3533,7 +3533,7 @@ sh-*-linux* | sh[34]*-*-linux*) TARGET=SH; TARGETDIR=sh;; sh-*-rtems*) TARGET=SH; TARGETDIR=sh;; sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; -hppa-*-linux* | parisc-*-linux*) TARGET=PA; TARGETDIR=pa;; +hppa*-*-linux* | parisc*-*-linux*) TARGET=PA; TARGETDIR=pa;; esac if test $TARGETDIR = unknown; then Modified: python/trunk/Modules/_ctypes/libffi/configure.ac ============================================================================== --- python/trunk/Modules/_ctypes/libffi/configure.ac (original) +++ python/trunk/Modules/_ctypes/libffi/configure.ac Tue Sep 4 22:46:02 2007 @@ -71,7 +71,7 @@ sh-*-linux* | sh[[34]]*-*-linux*) TARGET=SH; TARGETDIR=sh;; sh-*-rtems*) TARGET=SH; TARGETDIR=sh;; sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; -hppa-*-linux* | parisc-*-linux*) TARGET=PA; TARGETDIR=pa;; +hppa*-*-linux* | parisc*-*-linux*) TARGET=PA; TARGETDIR=pa;; esac if test $TARGETDIR = unknown; then From buildbot at python.org Tue Sep 4 23:21:23 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 21:21:23 +0000 Subject: [Python-checkins] buildbot warnings in PPC64 Debian trunk Message-ID: <20070904212124.2809F1E400E@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/174 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Tue Sep 4 23:41:28 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 04 Sep 2007 21:41:28 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP trunk Message-ID: <20070904214128.845891E4002@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/629 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: matthias.klose Build had warnings: warnings failed slave lost sincerely, -The Buildbot From python-checkins at python.org Wed Sep 5 01:47:17 2007 From: python-checkins at python.org (matthias.klose) Date: Wed, 5 Sep 2007 01:47:17 +0200 (CEST) Subject: [Python-checkins] r57977 - in python/branches/release25-maint: Misc/NEWS Modules/_ctypes/libffi/configure Modules/_ctypes/libffi/configure.ac Message-ID: <20070904234717.586861E4016@bag.python.org> Author: matthias.klose Date: Wed Sep 5 01:47:16 2007 New Revision: 57977 Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Modules/_ctypes/libffi/configure python/branches/release25-maint/Modules/_ctypes/libffi/configure.ac Log: - Fix libffi configure for hppa*-*-linux* | parisc*-*-linux*. Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Wed Sep 5 01:47:16 2007 @@ -108,6 +108,8 @@ - Added support for linking the bsddb module against BerkeleyDB 4.6.x. +- Fix libffi configure for hppa*-*-linux* | parisc*-*-linux*. + Documentation ------------- Modified: python/branches/release25-maint/Modules/_ctypes/libffi/configure ============================================================================== --- python/branches/release25-maint/Modules/_ctypes/libffi/configure (original) +++ python/branches/release25-maint/Modules/_ctypes/libffi/configure Wed Sep 5 01:47:16 2007 @@ -3520,7 +3520,7 @@ sh-*-linux* | sh[34]*-*-linux*) TARGET=SH; TARGETDIR=sh;; sh-*-rtems*) TARGET=SH; TARGETDIR=sh;; sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; -hppa-*-linux* | parisc-*-linux*) TARGET=PA; TARGETDIR=pa;; +hppa*-*-linux* | parisc*-*-linux*) TARGET=PA; TARGETDIR=pa;; esac if test $TARGETDIR = unknown; then Modified: python/branches/release25-maint/Modules/_ctypes/libffi/configure.ac ============================================================================== --- python/branches/release25-maint/Modules/_ctypes/libffi/configure.ac (original) +++ python/branches/release25-maint/Modules/_ctypes/libffi/configure.ac Wed Sep 5 01:47:16 2007 @@ -71,7 +71,7 @@ sh-*-linux* | sh[[34]]*-*-linux*) TARGET=SH; TARGETDIR=sh;; sh-*-rtems*) TARGET=SH; TARGETDIR=sh;; sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; -hppa-*-linux* | parisc-*-linux*) TARGET=PA; TARGETDIR=pa;; +hppa*-*-linux* | parisc*-*-linux*) TARGET=PA; TARGETDIR=pa;; esac if test $TARGETDIR = unknown; then From buildbot at python.org Wed Sep 5 02:00:28 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 00:00:28 +0000 Subject: [Python-checkins] buildbot warnings in hppa Ubuntu dapper 3.0 Message-ID: <20070905000031.4FA131E4002@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu dapper 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20dapper%203.0/builds/54 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: eric.smith Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Unknown signal 37 sincerely, -The Buildbot From python-checkins at python.org Wed Sep 5 02:26:10 2007 From: python-checkins at python.org (brett.cannon) Date: Wed, 5 Sep 2007 02:26:10 +0200 (CEST) Subject: [Python-checkins] r57978 - peps/trunk/pep-3118.txt Message-ID: <20070905002610.CCA751E4002@bag.python.org> Author: brett.cannon Date: Wed Sep 5 02:26:10 2007 New Revision: 57978 Modified: peps/trunk/pep-3118.txt Log: Fix a minor grammar problem. Modified: peps/trunk/pep-3118.txt ============================================================================== --- peps/trunk/pep-3118.txt (original) +++ peps/trunk/pep-3118.txt Wed Sep 5 02:26:10 2007 @@ -130,8 +130,8 @@ Specification ============= -While the new specification allows for complicated memory sharing. -Simple contiguous buffers of bytes can still be obtained from an +While the new specification allows for complicated memory sharing, +simple contiguous buffers of bytes can still be obtained from an object. In fact, the new protocol allows a standard mechanism for doing this even if the original object is not represented as a contiguous chunk of memory. From python-checkins at python.org Wed Sep 5 02:38:28 2007 From: python-checkins at python.org (brett.cannon) Date: Wed, 5 Sep 2007 02:38:28 +0200 (CEST) Subject: [Python-checkins] r57979 - peps/trunk/pep-3121.txt Message-ID: <20070905003828.060641E400A@bag.python.org> Author: brett.cannon Date: Wed Sep 5 02:38:27 2007 New Revision: 57979 Modified: peps/trunk/pep-3121.txt Log: Make something plural. Modified: peps/trunk/pep-3121.txt ============================================================================== --- peps/trunk/pep-3121.txt (original) +++ peps/trunk/pep-3121.txt Wed Sep 5 02:38:27 2007 @@ -79,7 +79,7 @@ In addition to the initialization function, a module may implement a number of additional callback -function, which are invoked when the module's +functions, which are invoked when the module's tp_traverse, tp_clear, and tp_free functions are invoked, and when the module is reloaded. From python-checkins at python.org Wed Sep 5 02:46:28 2007 From: python-checkins at python.org (bill.janssen) Date: Wed, 5 Sep 2007 02:46:28 +0200 (CEST) Subject: [Python-checkins] r57980 - in python/trunk: Doc/library/ssl.rst Lib/test/test_ssl.py Modules/_ssl.c Message-ID: <20070905004628.3DC181E400F@bag.python.org> Author: bill.janssen Date: Wed Sep 5 02:46:27 2007 New Revision: 57980 Modified: python/trunk/Doc/library/ssl.rst python/trunk/Lib/test/test_ssl.py python/trunk/Modules/_ssl.c Log: SSL certificate distinguished names should be represented by tuples Modified: python/trunk/Doc/library/ssl.rst ============================================================================== --- python/trunk/Doc/library/ssl.rst (original) +++ python/trunk/Doc/library/ssl.rst Wed Sep 5 02:46:27 2007 @@ -173,6 +173,8 @@ Some "standard" root certificates are available at http://www.thawte.com/roots/ (for Thawte roots) and http://www.verisign.com/support/roots.html (for Verisign roots). +See also :rfc:`4158` for more discussion of the way in which +certification chains can be built. sslsocket Objects @@ -242,23 +244,23 @@ the certificate), ``notBefore`` (the time before which the certificate should not be trusted), and ``notAfter`` (the time after which the certificate should not be trusted) filled in. - The "subject" and "issuer" fields are themselves dictionaries containing the fields given - in the certificate's data structure for each principal:: + The "subject" and "issuer" fields are tuples containing the name-value fields + given in the certificate's data structure for each principal:: - {'issuer': {'commonName': u'somemachine.python.org', - 'countryName': u'US', - 'localityName': u'Wilmington', - 'organizationName': u'Python Software Foundation', - 'organizationalUnitName': u'SSL', - 'stateOrProvinceName': u'Delaware'}, - 'subject': {'commonName': u'somemachine.python.org', - 'countryName': u'US', - 'localityName': u'Wilmington', - 'organizationName': u'Python Software Foundation', - 'organizationalUnitName': u'SSL', - 'stateOrProvinceName': u'Delaware'}, - 'notAfter': 'Sep 4 21:54:26 2007 GMT', - 'notBefore': 'Aug 25 21:54:26 2007 GMT', + {'issuer': (('countryName', u'US'), + ('stateOrProvinceName', u'Delaware'), + ('localityName', u'Wilmington'), + ('organizationName', u'Python Software Foundation'), + ('organizationalUnitName', u'SSL'), + ('commonName', u'somemachine.python.org')), + 'notAfter': 'Feb 16 16:54:50 2013 GMT', + 'notBefore': 'Aug 27 16:54:50 2007 GMT', + 'subject': (('countryName', u'US'), + ('stateOrProvinceName', u'Delaware'), + ('localityName', u'Wilmington'), + ('organizationName', u'Python Software Foundation'), + ('organizationalUnitName', u'SSL'), + ('commonName', u'somemachine.python.org')), 'version': 2} This certificate is said to be *self-signed*, because the subject @@ -314,27 +316,32 @@ # note that closing the sslsocket will also close the underlying socket ssl_sock.close() -As of August 25, 2007, the certificate printed by this program +As of September 4, 2007, the certificate printed by this program looked like this:: - {'issuer': {'commonName': u'VeriSign Class 3 Extended Validation SSL SGC CA', - 'countryName': u'US', - 'organizationName': u'VeriSign, Inc.', - 'organizationalUnitName': u'Terms of use at https://www.verisign.com/rpa (c)06'}, - 'subject': {'1.3.6.1.4.1.311.60.2.1.2': u'Delaware', - '1.3.6.1.4.1.311.60.2.1.3': u'US', - 'commonName': u'www.verisign.com', - 'countryName': u'US', - 'localityName': u'Mountain View', - 'organizationName': u'VeriSign, Inc.', - 'organizationalUnitName': u'Terms of use at www.verisign.com/rpa (c)06', - 'postalCode': u'94043', - 'serialNumber': u'2497886', - 'stateOrProvinceName': u'California', - 'streetAddress': u'487 East Middlefield Road'}, - 'notAfter': 'May 8 23:59:59 2009 GMT', - 'notBefore': 'May 9 00:00:00 2007 GMT', - 'version': 2} + {'issuer': (('countryName', u'US'), + ('organizationName', u'VeriSign, Inc.'), + ('organizationalUnitName', u'VeriSign Trust Network'), + ('organizationalUnitName', + u'Terms of use at https://www.verisign.com/rpa (c)06'), + ('commonName', + u'VeriSign Class 3 Extended Validation SSL SGC CA')), + 'notAfter': 'May 8 23:59:59 2009 GMT', + 'notBefore': 'May 9 00:00:00 2007 GMT', + 'subject': (('serialNumber', u'2497886'), + ('1.3.6.1.4.1.311.60.2.1.3', u'US'), + ('1.3.6.1.4.1.311.60.2.1.2', u'Delaware'), + ('countryName', u'US'), + ('postalCode', u'94043'), + ('stateOrProvinceName', u'California'), + ('localityName', u'Mountain View'), + ('streetAddress', u'487 East Middlefield Road'), + ('organizationName', u'VeriSign, Inc.'), + ('organizationalUnitName', u'Production Security Services'), + ('organizationalUnitName', + u'Terms of use at www.verisign.com/rpa (c)06'), + ('commonName', u'www.verisign.com')), + 'version': 2} Server-side operation ^^^^^^^^^^^^^^^^^^^^^ @@ -386,3 +393,5 @@ `Introducing SSL and Certificates using OpenSSL `_, by Frederick J. Hirsch `Privacy Enhancement for Internet Electronic Mail: Part II: Certificate-Based Key Management`, :rfc:`1422`, by Steve Kent + +`Internet X.509 Public Key Infrastructure Certificate and CRL Profile`, :rfc:`3280`, Housley et. al. Modified: python/trunk/Lib/test/test_ssl.py ============================================================================== --- python/trunk/Lib/test/test_ssl.py (original) +++ python/trunk/Lib/test/test_ssl.py Wed Sep 5 02:46:27 2007 @@ -137,18 +137,15 @@ cert = c2.getpeercert() if not cert: raise test_support.TestFailed("Can't get peer certificate.") + if test_support.verbose: + sys.stdout.write(pprint.pformat(cert) + '\n') if not cert.has_key('subject'): raise test_support.TestFailed( "No subject field in certificate: %s." % pprint.pformat(cert)) - if not (cert['subject'].has_key('organizationName')): - raise test_support.TestFailed( - "No 'organizationName' field in certificate subject: %s." % - pprint.pformat(cert)) - if (cert['subject']['organizationName'] != - "Python Software Foundation"): + if not ('organizationName', 'Python Software Foundation') in cert['subject']: raise test_support.TestFailed( - "Invalid 'organizationName' field in certificate subject; " + "Missing or invalid 'organizationName' field in certificate subject; " "should be 'Python Software Foundation'."); c2.close() @@ -336,7 +333,7 @@ def test_main(verbose=False): if skip_expected: - raise test_support.TestSkipped("socket module has no ssl support") + raise test_support.TestSkipped("No SSL support") global CERTFILE CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir, Modified: python/trunk/Modules/_ssl.c ============================================================================== --- python/trunk/Modules/_ssl.c (original) +++ python/trunk/Modules/_ssl.c Wed Sep 5 02:46:27 2007 @@ -437,12 +437,15 @@ } static PyObject * -_create_dict_for_X509_NAME (X509_NAME *xname) +_create_tuple_for_X509_NAME (X509_NAME *xname) { - PyObject *pd = PyDict_New(); + PyObject *pt = NULL; + PyObject *entry_tuple = NULL; + int entry_count = X509_NAME_entry_count(xname); int index_counter; - if (pd == NULL) + pt = PyTuple_New(entry_count); + if (pt == NULL) return NULL; for (index_counter = 0; @@ -480,18 +483,20 @@ Py_DECREF(name_obj); goto fail0; } - if (PyDict_SetItem(pd, name_obj, value_obj) < 0) { + entry_tuple = PyTuple_New(2); + if (entry_tuple == NULL) { Py_DECREF(name_obj); Py_DECREF(value_obj); goto fail0; } - Py_DECREF(name_obj); - Py_DECREF(value_obj); + PyTuple_SET_ITEM(entry_tuple, 0, name_obj); + PyTuple_SET_ITEM(entry_tuple, 1, value_obj); + PyTuple_SET_ITEM(pt, index_counter, entry_tuple); } - return pd; + return pt; fail0: - Py_XDECREF(pd); + Py_XDECREF(pt); return NULL; } @@ -520,7 +525,7 @@ if ((verification & SSL_VERIFY_PEER) == 0) return retval; - peer = _create_dict_for_X509_NAME( + peer = _create_tuple_for_X509_NAME( X509_get_subject_name(self->peer_cert)); if (peer == NULL) goto fail0; @@ -530,7 +535,7 @@ } Py_DECREF(peer); - issuer = _create_dict_for_X509_NAME( + issuer = _create_tuple_for_X509_NAME( X509_get_issuer_name(self->peer_cert)); if (issuer == NULL) goto fail0; From python-checkins at python.org Wed Sep 5 02:49:19 2007 From: python-checkins at python.org (brett.cannon) Date: Wed, 5 Sep 2007 02:49:19 +0200 (CEST) Subject: [Python-checkins] r57981 - peps/trunk/pep-3121.txt Message-ID: <20070905004919.8297F1E4002@bag.python.org> Author: brett.cannon Date: Wed Sep 5 02:49:19 2007 New Revision: 57981 Modified: peps/trunk/pep-3121.txt Log: Fix missing quotation mark. Modified: peps/trunk/pep-3121.txt ============================================================================== --- peps/trunk/pep-3121.txt (original) +++ peps/trunk/pep-3121.txt Wed Sep 5 02:49:19 2007 @@ -169,7 +169,7 @@ { PyObject *res = PyModule_New("xx", &xxmodule); if (!res) return NULL; - xxstate(res)->ErrorObject = PyErr_NewException("xx.error, NULL, NULL); + xxstate(res)->ErrorObject = PyErr_NewException("xx.error", NULL, NULL); if (!xxstate(res)->ErrorObject) { Py_DECREF(res); return NULL; From buildbot at python.org Wed Sep 5 02:53:29 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 00:53:29 +0000 Subject: [Python-checkins] buildbot failure in x86 XP trunk Message-ID: <20070905005330.123721E4002@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/631 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 04:40:17 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 02:40:17 +0000 Subject: [Python-checkins] buildbot warnings in MIPS Debian 3.0 Message-ID: <20070905024017.E06761E4002@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%203.0/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: fred.drake,georg.brandl,guido.van.rossum Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Wed Sep 5 08:39:02 2007 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 5 Sep 2007 08:39:02 +0200 (CEST) Subject: [Python-checkins] r57984 - python/branches/release25-maint/PCbuild8/readme.txt Message-ID: <20070905063902.B9D3D1E400A@bag.python.org> Author: martin.v.loewis Date: Wed Sep 5 08:39:02 2007 New Revision: 57984 Modified: python/branches/release25-maint/PCbuild8/readme.txt Log: Patch #1105: Explain that one needs to build the solution to get dependencies right. Modified: python/branches/release25-maint/PCbuild8/readme.txt ============================================================================== --- python/branches/release25-maint/PCbuild8/readme.txt (original) +++ python/branches/release25-maint/PCbuild8/readme.txt Wed Sep 5 08:39:02 2007 @@ -90,6 +90,13 @@ large tables of Unicode data winsound play sounds (typically .wav files) under Windows + +Note: Check the dependencies of subprojects when building a subproject. You +need to manually build each of the dependencies, in order, first. A good +example of this is the pythoncore subproject. It is dependent on both the +make_versioninfo and the make_buildinfo subprojects. You can check the build +order by right clicking on the project name, in the solution explorer, and +selecting the project build order item. The following subprojects will generally NOT build out of the box. They wrap code Python doesn't control, and you'll need to download the base From python-checkins at python.org Wed Sep 5 08:39:17 2007 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 5 Sep 2007 08:39:17 +0200 (CEST) Subject: [Python-checkins] r57985 - python/trunk/PCbuild8/readme.txt Message-ID: <20070905063917.D4FD01E400A@bag.python.org> Author: martin.v.loewis Date: Wed Sep 5 08:39:17 2007 New Revision: 57985 Modified: python/trunk/PCbuild8/readme.txt Log: Patch #1105: Explain that one needs to build the solution to get dependencies right. Modified: python/trunk/PCbuild8/readme.txt ============================================================================== --- python/trunk/PCbuild8/readme.txt (original) +++ python/trunk/PCbuild8/readme.txt Wed Sep 5 08:39:17 2007 @@ -90,6 +90,13 @@ large tables of Unicode data winsound play sounds (typically .wav files) under Windows + +Note: Check the dependencies of subprojects when building a subproject. You +need to manually build each of the dependencies, in order, first. A good +example of this is the pythoncore subproject. It is dependent on both the +make_versioninfo and the make_buildinfo subprojects. You can check the build +order by right clicking on the project name, in the solution explorer, and +selecting the project build order item. The following subprojects will generally NOT build out of the box. They wrap code Python doesn't control, and you'll need to download the base From python-checkins at python.org Wed Sep 5 08:45:57 2007 From: python-checkins at python.org (matthias.klose) Date: Wed, 5 Sep 2007 08:45:57 +0200 (CEST) Subject: [Python-checkins] r57986 - in python/branches/release25-maint: Makefile.pre.in Misc/NEWS Message-ID: <20070905064557.A86C21E400A@bag.python.org> Author: matthias.klose Date: Wed Sep 5 08:45:57 2007 New Revision: 57986 Modified: python/branches/release25-maint/Makefile.pre.in python/branches/release25-maint/Misc/NEWS Log: - Makefile.pre.in(buildbottest): Run an optional script pybuildbot.identify to include some information about the build environment. Modified: python/branches/release25-maint/Makefile.pre.in ============================================================================== --- python/branches/release25-maint/Makefile.pre.in (original) +++ python/branches/release25-maint/Makefile.pre.in Wed Sep 5 08:45:57 2007 @@ -597,7 +597,11 @@ # Like testall, but with a single pass only +# run an optional script to include some information about the build environment buildbottest: all platform + - at if which pybuildbot.identify >/dev/null 2>&1; then \ + pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \ + fi $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall -rw QUICKTESTOPTS= $(TESTOPTS) -x test_thread test_signal test_strftime \ Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Wed Sep 5 08:45:57 2007 @@ -133,6 +133,8 @@ - Allow Emacs 22 for building the documentation in info format. +- Makefile.pre.in(buildbottest): Run an optional script pybuildbot.identify + to include some information about the build environment. What's New in Python 2.5.1? ============================= From buildbot at python.org Wed Sep 5 08:52:03 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 06:52:03 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP 2.5 Message-ID: <20070905065203.C967F1E400F@bag.python.org> The Buildbot has detected a new failure of x86 XP 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%202.5/builds/284 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: martin.v.loewis Build had warnings: warnings failed slave lost sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 08:54:52 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 06:54:52 +0000 Subject: [Python-checkins] buildbot failure in x86 XP 2.5 Message-ID: <20070905065452.406591E400A@bag.python.org> The Buildbot has detected a new failure of x86 XP 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%202.5/builds/285 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: matthias.klose BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 09:23:24 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 07:23:24 +0000 Subject: [Python-checkins] buildbot warnings in sparc solaris10 gcc 2.5 Message-ID: <20070905072324.5826D1E400A@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%202.5/builds/400 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_urllib2net sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 09:46:25 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 07:46:25 +0000 Subject: [Python-checkins] buildbot warnings in alpha Tru64 5.1 2.5 Message-ID: <20070905074626.053B01E401F@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/311 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_socket ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/2.5.norwitz-tru64/build/Lib/test/test_socket.py", line 879, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place sincerely, -The Buildbot From python-checkins at python.org Wed Sep 5 09:51:22 2007 From: python-checkins at python.org (armin.rigo) Date: Wed, 5 Sep 2007 09:51:22 +0200 (CEST) Subject: [Python-checkins] r57987 - python/trunk/Lib/test/crashers/borrowed_ref_3.py Message-ID: <20070905075122.3DFD51E400F@bag.python.org> Author: armin.rigo Date: Wed Sep 5 09:51:21 2007 New Revision: 57987 Added: python/trunk/Lib/test/crashers/borrowed_ref_3.py (contents, props changed) Log: PyDict_GetItem() returns a borrowed reference. There are probably a number of places that are open to attacks such as the following one, in bltinmodule.c:min_max(). Added: python/trunk/Lib/test/crashers/borrowed_ref_3.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/crashers/borrowed_ref_3.py Wed Sep 5 09:51:21 2007 @@ -0,0 +1,14 @@ +""" +PyDict_GetItem() returns a borrowed reference. +There are probably a number of places that are open to attacks +such as the following one, in bltinmodule.c:min_max(). +""" + +class KeyFunc(object): + def __call__(self, n): + del d['key'] + return 1 + + +d = {'key': KeyFunc()} +min(range(10), **d) From buildbot at python.org Wed Sep 5 09:51:46 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 07:51:46 +0000 Subject: [Python-checkins] buildbot warnings in alpha Tru64 5.1 trunk Message-ID: <20070905075147.1AF121E401A@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/1844 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 09:55:36 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 07:55:36 +0000 Subject: [Python-checkins] buildbot warnings in hppa Ubuntu 2.5 Message-ID: <20070905075537.0FC051E400E@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%202.5/builds/34 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 09:58:38 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 07:58:38 +0000 Subject: [Python-checkins] buildbot failure in x86 XP trunk Message-ID: <20070905075838.BCD561E400A@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/633 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: armin.rigo BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 12:22:32 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 10:22:32 +0000 Subject: [Python-checkins] buildbot warnings in MIPS Debian 2.5 Message-ID: <20070905102232.D9DDF1E4011@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%202.5/builds/1 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_resource Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/2.5.klose-debian-mips/build/Lib/test/test_resource.py", line 42, in f.close() IOError: [Errno 27] File too large make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Wed Sep 5 12:49:12 2007 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 5 Sep 2007 12:49:12 +0200 (CEST) Subject: [Python-checkins] r57989 - peps/trunk/pep-3121.txt Message-ID: <20070905104912.477611E4019@bag.python.org> Author: martin.v.loewis Date: Wed Sep 5 12:49:12 2007 New Revision: 57989 Modified: peps/trunk/pep-3121.txt Log: Rename PyModule_GetData to PyModule_GetState. Modified: peps/trunk/pep-3121.txt ============================================================================== --- peps/trunk/pep-3121.txt (original) +++ peps/trunk/pep-3121.txt Wed Sep 5 12:49:12 2007 @@ -104,7 +104,7 @@ as the first parameter. To access the module data, a function:: - void* PyModule_GetData(PyObject*); + void* PyModule_GetState(PyObject*); will be provided. In addition, to lookup a module more efficiently than going through sys.modules, From python-checkins at python.org Wed Sep 5 13:47:23 2007 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 5 Sep 2007 13:47:23 +0200 (CEST) Subject: [Python-checkins] r57990 - in python/branches/release25-maint: Makefile.pre.in Misc/NEWS Modules/makesetup Message-ID: <20070905114723.4C0601E4003@bag.python.org> Author: martin.v.loewis Date: Wed Sep 5 13:47:22 2007 New Revision: 57990 Modified: python/branches/release25-maint/Makefile.pre.in python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Modules/makesetup Log: Patch #786737: Allow building in a tree of symlinks pointing to a readonly source. Modified: python/branches/release25-maint/Makefile.pre.in ============================================================================== --- python/branches/release25-maint/Makefile.pre.in (original) +++ python/branches/release25-maint/Makefile.pre.in Wed Sep 5 13:47:22 2007 @@ -61,7 +61,7 @@ # Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to # be able to build extension modules using the directories specified in the # environment variables -CPPFLAGS= -I. -I$(srcdir)/Include @CPPFLAGS@ +CPPFLAGS= -I. -IInclude -I$(srcdir)/Include @CPPFLAGS@ LDFLAGS= @LDFLAGS@ LDLAST= @LDLAST@ SGI_ABI= @SGI_ABI@ @@ -470,6 +470,7 @@ $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) + -@ mkdir Include -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) $(PGEN): $(PGENOBJS) Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Wed Sep 5 13:47:22 2007 @@ -122,6 +122,9 @@ Build ----- +- Patch #786737: Allow building in a tree of symlinks pointing to + a readonly source. + - Bug #1737210: Change Manufacturer of Windows installer to PSF. - Bug #1746880: Correctly install DLLs into system32 folder on Win64. Modified: python/branches/release25-maint/Modules/makesetup ============================================================================== --- python/branches/release25-maint/Modules/makesetup (original) +++ python/branches/release25-maint/Modules/makesetup Wed Sep 5 13:47:22 2007 @@ -238,7 +238,7 @@ no) SHAREDMODS="$SHAREDMODS $file";; esac rule="$file: $objs" - rule="$rule; \$(LDSHARED) $objs $libs $ExtraLibs -o $file" + rule="$rule; \$(BLDSHARED) $objs $libs $ExtraLibs -o $file" echo "$rule" >>$rulesf done done From python-checkins at python.org Wed Sep 5 13:47:35 2007 From: python-checkins at python.org (martin.v.loewis) Date: Wed, 5 Sep 2007 13:47:35 +0200 (CEST) Subject: [Python-checkins] r57991 - in python/trunk: Makefile.pre.in Misc/NEWS Modules/makesetup Message-ID: <20070905114735.100621E4003@bag.python.org> Author: martin.v.loewis Date: Wed Sep 5 13:47:34 2007 New Revision: 57991 Modified: python/trunk/Makefile.pre.in python/trunk/Misc/NEWS python/trunk/Modules/makesetup Log: Patch #786737: Allow building in a tree of symlinks pointing to a readonly source. Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Wed Sep 5 13:47:34 2007 @@ -61,7 +61,7 @@ # Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to # be able to build extension modules using the directories specified in the # environment variables -CPPFLAGS= -I. -I$(srcdir)/Include @CPPFLAGS@ +CPPFLAGS= -I. -IInclude -I$(srcdir)/Include @CPPFLAGS@ LDFLAGS= @LDFLAGS@ LDLAST= @LDLAST@ SGI_ABI= @SGI_ABI@ @@ -471,6 +471,7 @@ $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) + -@ mkdir Include -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) $(PGEN): $(PGENOBJS) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Sep 5 13:47:34 2007 @@ -960,6 +960,9 @@ Build ----- +- Patch #786737: Allow building in a tree of symlinks pointing to + a readonly source. + - Bug #1737210: Change Manufacturer of Windows installer to PSF. - Bug #1746880: Correctly install DLLs into system32 folder on Win64. Modified: python/trunk/Modules/makesetup ============================================================================== --- python/trunk/Modules/makesetup (original) +++ python/trunk/Modules/makesetup Wed Sep 5 13:47:34 2007 @@ -238,7 +238,7 @@ no) SHAREDMODS="$SHAREDMODS $file";; esac rule="$file: $objs" - rule="$rule; \$(LDSHARED) $objs $libs $ExtraLibs -o $file" + rule="$rule; \$(BLDSHARED) $objs $libs $ExtraLibs -o $file" echo "$rule" >>$rulesf done done From buildbot at python.org Wed Sep 5 13:55:02 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 11:55:02 +0000 Subject: [Python-checkins] buildbot failure in amd64 XP 2.5 Message-ID: <20070905115502.74BBA1E4003@bag.python.org> The Buildbot has detected a new failure of amd64 XP 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%202.5/builds/44 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 15:29:49 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 13:29:49 +0000 Subject: [Python-checkins] buildbot warnings in x86 FreeBSD trunk Message-ID: <20070905132949.9A2621E400A@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/12 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: (35, 'Resource temporarily unavailable') Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: (35, 'Resource temporarily unavailable') 1 test failed: test_threading sincerely, -The Buildbot From buildbot at python.org Wed Sep 5 15:31:32 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 13:31:32 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP-3 trunk Message-ID: <20070905133132.5ED4F1E4019@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/209 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Wed Sep 5 15:36:44 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 5 Sep 2007 15:36:44 +0200 (CEST) Subject: [Python-checkins] r57993 - python/trunk/Doc/reference/datamodel.rst Message-ID: <20070905133644.5DDD21E4012@bag.python.org> Author: georg.brandl Date: Wed Sep 5 15:36:44 2007 New Revision: 57993 Modified: python/trunk/Doc/reference/datamodel.rst Log: Backport from Py3k: Bug #1684991: explain lookup semantics for __special__ methods (new-style classes only). Modified: python/trunk/Doc/reference/datamodel.rst ============================================================================== --- python/trunk/Doc/reference/datamodel.rst (original) +++ python/trunk/Doc/reference/datamodel.rst Wed Sep 5 15:36:44 2007 @@ -1147,6 +1147,21 @@ ``x.__getitem__(i)``. Except where mentioned, attempts to execute an operation raise an exception when no appropriate method is defined. +For new-style classes, special methods are only guaranteed to work if defined in +an object's class, not in the object's instance dictionary. That explains why +this won't work:: + + >>> class C: + ... pass + ... + >>> c = C() + >>> c.__len__ = lambda: 5 + >>> len(c) + Traceback (most recent call last): + File "", line 1, in + TypeError: object of type 'C' has no len() + + When implementing a class that emulates any built-in type, it is important that the emulation only be implemented to the degree that it makes sense for the object being modelled. For example, some sequences may work well with retrieval From buildbot at python.org Wed Sep 5 16:41:42 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 14:41:42 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP trunk Message-ID: <20070905144142.79C4B1E400A@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/635 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: The web-page 'force build' button was pressed by 'alanmcintyre': test run after closing debugger on earlier failed run Build Source Stamp: [branch trunk] HEAD Blamelist: Build had warnings: warnings failed slave lost sincerely, -The Buildbot From python-checkins at python.org Wed Sep 5 22:00:17 2007 From: python-checkins at python.org (brett.cannon) Date: Wed, 5 Sep 2007 22:00:17 +0200 (CEST) Subject: [Python-checkins] r57994 - peps/trunk/pep-3123.txt Message-ID: <20070905200017.B8DEC1E4012@bag.python.org> Author: brett.cannon Date: Wed Sep 5 22:00:17 2007 New Revision: 57994 Modified: peps/trunk/pep-3123.txt Log: Slight rewording to be less awkward. Modified: peps/trunk/pep-3123.txt ============================================================================== --- peps/trunk/pep-3123.txt (original) +++ peps/trunk/pep-3123.txt Wed Sep 5 22:00:17 2007 @@ -85,7 +85,7 @@ #define PyObject_VAR_HEAD PyVarObject ob_base; Types defined as fixed-size structure will then include PyObject -as its first field; variable-sized objects PyVarObject. E.g.:: +as its first field, PyVarObject for variable-sized objects. E.g.:: typedef struct { PyObject ob_base; From buildbot at python.org Wed Sep 5 22:57:21 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 05 Sep 2007 20:57:21 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD 3.0 Message-ID: <20070905205721.AC0701E4004@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/14 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: brett.cannon,georg.brandl,mark.summerfield BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Thu Sep 6 00:54:10 2007 From: python-checkins at python.org (brett.cannon) Date: Thu, 6 Sep 2007 00:54:10 +0200 (CEST) Subject: [Python-checkins] r57996 - peps/trunk/pep-0352.txt Message-ID: <20070905225410.C68271E4004@bag.python.org> Author: brett.cannon Date: Thu Sep 6 00:54:10 2007 New Revision: 57996 Modified: peps/trunk/pep-0352.txt Log: Update the PEP on what has been implemented so far. Modified: peps/trunk/pep-0352.txt ============================================================================== --- peps/trunk/pep-0352.txt (original) +++ peps/trunk/pep-0352.txt Thu Sep 6 00:54:10 2007 @@ -221,19 +221,20 @@ * Python 2.5 [done] - - all standard exceptions become new-style classes + - all standard exceptions become new-style classes [done] - - introduce BaseException + - introduce BaseException [done] - - Exception, KeyboardInterrupt, and SystemExit inherit from BaseException + - Exception, KeyboardInterrupt, and SystemExit inherit from + BaseException [done] - - deprecate raising string exceptions + - deprecate raising string exceptions [done] -* Python 2.6 +* Python 2.6 [done] - deprecate catching string exceptions [done] - - deprecate ``message`` attribute (see `Retracted Ideas`_) + - deprecate ``message`` attribute (see `Retracted Ideas`_) [done] * Python 2.7 @@ -249,7 +250,7 @@ - deprecate ``__getitem__`` (optional) -* Python 3.0 +* Python 3.0 [done] - drop everything that was deprecated above: @@ -257,7 +258,7 @@ + all exceptions must inherit from BaseException [done] - + drop ``__getitem__``, ``message`` + + drop ``__getitem__``, ``message`` [done] Retracted Ideas From buildbot at python.org Thu Sep 6 06:07:02 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 04:07:02 +0000 Subject: [Python-checkins] buildbot failure in amd64 XP 3.0 Message-ID: <20070906040702.E333C1E4004@bag.python.org> The Buildbot has detected a new failure of amd64 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%203.0/builds/102 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: guido.van.rossum BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 06:28:33 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 04:28:33 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc 3.0 Message-ID: <20070906042834.21D5C1E4004@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%203.0/builds/118 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: kurt.kaiser BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 06:30:04 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 04:30:04 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 3.0 Message-ID: <20070906043005.1E19F1E4004@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%203.0/builds/87 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: kurt.kaiser BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 06:41:23 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 04:41:23 +0000 Subject: [Python-checkins] buildbot warnings in MIPS Debian 3.0 Message-ID: <20070906044123.C47851E4004@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%203.0/builds/2 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: brett.cannon,georg.brandl,mark.summerfield Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 06:58:33 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 04:58:33 +0000 Subject: [Python-checkins] buildbot warnings in x86 FreeBSD 3.0 Message-ID: <20070906045834.09F961E4004@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/15 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: guido.van.rossum Build had warnings: warnings test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 522, in __init__ self.handle() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 330, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 313, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 366, in nreadahead readahead = self.peek(1, unsafe=True) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 758, in peek current = self.raw.read(to_read) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: (35, 'Resource temporarily unavailable') 3 tests failed: test_asynchat test_email test_xmlrpc ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 522, in __init__ self.handle() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 330, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 313, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 366, in nreadahead readahead = self.peek(1, unsafe=True) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 758, in peek current = self.raw.read(to_read) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: (35, 'Resource temporarily unavailable') Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 522, in __init__ self.handle() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 330, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 313, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 366, in nreadahead readahead = self.peek(1, unsafe=True) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 758, in peek current = self.raw.read(to_read) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: (35, 'Resource temporarily unavailable') ====================================================================== ERROR: test_introspection1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 346, in test_introspection1 meth = p.system.listMethods() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1091, in __call__ return self.__send(self.__name, args) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1349, in __request verbose=self.__verbose File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1121, in request resp = http_conn.getresponse() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 954, in getresponse response.begin() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 395, in begin version, status, reason = self._read_status() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 357, in _read_status raise BadStatusLine(line) httplib.BadStatusLine ====================================================================== ERROR: test_fail_no_info (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 455, in test_fail_no_info p.pow(6,8) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1091, in __call__ return self.__send(self.__name, args) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1349, in __request verbose=self.__verbose File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1121, in request resp = http_conn.getresponse() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 954, in getresponse response.begin() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 395, in begin version, status, reason = self._read_status() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 357, in _read_status raise BadStatusLine(line) httplib.BadStatusLine ====================================================================== FAIL: test_introspection2 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 365, in test_introspection2 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection3 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 378, in test_introspection3 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_multicall (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 395, in test_multicall self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_simple1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 341, in test_simple1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_basic (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 447, in test_basic self.fail("%s\n%s" % (e, e.headers)) AssertionError: sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 07:11:28 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 05:11:28 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD 3.0 Message-ID: <20070906051129.2CA001E4013@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/16 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: kurt.kaiser BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Thu Sep 6 07:13:04 2007 From: python-checkins at python.org (collin.winter) Date: Thu, 6 Sep 2007 07:13:04 +0200 (CEST) Subject: [Python-checkins] r57999 - in sandbox/trunk/2to3: fixes/fix_filter.py fixes/fix_map.py tests/test_fixers.py Message-ID: <20070906051304.7BAF11E4005@bag.python.org> Author: collin.winter Date: Thu Sep 6 07:13:04 2007 New Revision: 57999 Modified: sandbox/trunk/2to3/fixes/fix_filter.py sandbox/trunk/2to3/fixes/fix_map.py sandbox/trunk/2to3/tests/test_fixers.py Log: Slightly extend the set of lambda statements that fix_map and fix_filter can convert into listcomps. Modified: sandbox/trunk/2to3/fixes/fix_filter.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_filter.py (original) +++ sandbox/trunk/2to3/fixes/fix_filter.py Thu Sep 6 07:13:04 2007 @@ -28,7 +28,9 @@ trailer< '(' arglist< - lambdef< 'lambda' fp=NAME ':' xp=any > + lambdef< 'lambda' + (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any + > ',' it=any > Modified: sandbox/trunk/2to3/fixes/fix_map.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_map.py (original) +++ sandbox/trunk/2to3/fixes/fix_map.py Thu Sep 6 07:13:04 2007 @@ -38,7 +38,9 @@ trailer< '(' arglist< - lambdef< 'lambda' fp=NAME ':' xp=any > + lambdef< 'lambda' + (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any + > ',' it=any > Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Thu Sep 6 07:13:04 2007 @@ -2209,6 +2209,11 @@ a = """x = [x for x in range(10) if x%2 == 0]""" self.check(b, a) + # Note the parens around x + b = """x = filter(lambda (x): x%2 == 0, range(10))""" + a = """x = [x for x in range(10) if x%2 == 0]""" + self.check(b, a) + # XXX This (rare) case is not supported ## b = """x = filter(f, 'abc')[0]""" ## a = """x = list(filter(f, 'abc'))[0]""" @@ -2284,6 +2289,11 @@ a = """x = [x+1 for x in range(4)]""" self.check(b, a) + # Note the parens around x + b = """x = map(lambda (x): x+1, range(4))""" + a = """x = [x+1 for x in range(4)]""" + self.check(b, a) + b = """ foo() # foo From python-checkins at python.org Thu Sep 6 07:13:40 2007 From: python-checkins at python.org (collin.winter) Date: Thu, 6 Sep 2007 07:13:40 +0200 (CEST) Subject: [Python-checkins] r58000 - sandbox/trunk/2to3/fixes/fix_tuple_params.py Message-ID: <20070906051340.81F521E400D@bag.python.org> Author: collin.winter Date: Thu Sep 6 07:13:40 2007 New Revision: 58000 Modified: sandbox/trunk/2to3/fixes/fix_tuple_params.py Log: Typo fix in fix_tuple_params's docstring. Modified: sandbox/trunk/2to3/fixes/fix_tuple_params.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_tuple_params.py (original) +++ sandbox/trunk/2to3/fixes/fix_tuple_params.py Thu Sep 6 07:13:40 2007 @@ -11,7 +11,7 @@ It will also support lambdas: - lambda (x, y): x + y -> lambda: t: t[0] + t[1] + lambda (x, y): x + y -> lambda t: t[0] + t[1] """ # Author: Collin Winter From python-checkins at python.org Thu Sep 6 07:16:31 2007 From: python-checkins at python.org (collin.winter) Date: Thu, 6 Sep 2007 07:16:31 +0200 (CEST) Subject: [Python-checkins] r58001 - in sandbox/trunk/2to3: fixes/fix_tuple_params.py tests/test_fixers.py Message-ID: <20070906051631.5C4581E4004@bag.python.org> Author: collin.winter Date: Thu Sep 6 07:16:31 2007 New Revision: 58001 Modified: sandbox/trunk/2to3/fixes/fix_tuple_params.py sandbox/trunk/2to3/tests/test_fixers.py Log: Fix an overly-greedy pattern in fix_tuple_params, add tests. Modified: sandbox/trunk/2to3/fixes/fix_tuple_params.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_tuple_params.py (original) +++ sandbox/trunk/2to3/fixes/fix_tuple_params.py Thu Sep 6 07:16:31 2007 @@ -30,7 +30,7 @@ funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | - lambda=lambdef< 'lambda' args=vfpdef< any+ > ':' body=any >""" + lambda=lambdef< 'lambda' args=vfpdef< '(' vfplist< any+ > ')' > ':' body=any >""" def transform(self, node, results): if "lambda" in results: Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Thu Sep 6 07:16:31 2007 @@ -1527,11 +1527,20 @@ s = """lambda x: x + 5""" self.unchanged(s) + # Note the parens around x + s = """lambda (x): x + 5""" + self.unchanged(s) + def test_lambda_simple(self): b = """lambda (x, y): x + f(y)""" a = """lambda x_y: x_y[0] + f(x_y[1])""" self.check(b, a) + def test_lambda_one_tuple(self): + b = """lambda (x,): x + f(x)""" + a = """lambda x1: x1[0] + f(x1[0])""" + self.check(b, a) + def test_lambda_simple_multi_use(self): b = """lambda (x, y): x + x + f(x) + x""" a = """lambda x_y: x_y[0] + x_y[0] + f(x_y[0]) + x_y[0]""" From python-checkins at python.org Thu Sep 6 07:21:15 2007 From: python-checkins at python.org (collin.winter) Date: Thu, 6 Sep 2007 07:21:15 +0200 (CEST) Subject: [Python-checkins] r58002 - in sandbox/trunk/2to3: pygram.py refactor.py tests/test_all_fixers.py tests/test_fixers.py tests/test_refactor.py Message-ID: <20070906052115.3F00C1E4004@bag.python.org> Author: collin.winter Date: Thu Sep 6 07:21:14 2007 New Revision: 58002 Modified: sandbox/trunk/2to3/pygram.py sandbox/trunk/2to3/refactor.py sandbox/trunk/2to3/tests/test_all_fixers.py sandbox/trunk/2to3/tests/test_fixers.py sandbox/trunk/2to3/tests/test_refactor.py Log: Restore the -p option (revert r57916, most of r57914); there turned out to be some corner cases in the print grammar that didn't play nicely with print autodetection/fix_print idempotence. Fixing those edge cases is too much work, given that the -p flag is really only used by Guido and me. Modified: sandbox/trunk/2to3/pygram.py ============================================================================== --- sandbox/trunk/2to3/pygram.py (original) +++ sandbox/trunk/2to3/pygram.py Thu Sep 6 07:21:14 2007 @@ -29,8 +29,6 @@ python_grammar = driver.load_grammar(_GRAMMAR_FILE) python_symbols = Symbols(python_grammar) -printless_python_grammar = driver.load_grammar(_GRAMMAR_FILE) -del printless_python_grammar.keywords["print"] def parenthesize(node): Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Thu Sep 6 07:21:14 2007 @@ -23,8 +23,6 @@ import pytree import patcomp from pgen2 import driver -from pgen2 import parse -from pgen2 import token from pgen2 import tokenize import fixes import pygram @@ -54,6 +52,8 @@ help="Each FIX specifies a transformation; default all") parser.add_option("-l", "--list-fixes", action="store_true", help="List available transformations (fixes/fix_*.py)") + parser.add_option("-p", "--print-function", action="store_true", + help="Modify the grammar so that print() is a function") parser.add_option("-v", "--verbose", action="store_true", help="More verbose logging") parser.add_option("-w", "--write", action="store_true", @@ -106,14 +106,11 @@ self.options = options self.errors = [] self.logger = logging.getLogger("RefactoringTool") - # Set up two parser drivers: one that expects print statements and a - # second that expects print functions. + if self.options.print_function: + del pygram.python_grammar.keywords["print"] self.driver = driver.Driver(pygram.python_grammar, convert=pytree.convert, logger=self.logger) - self.printless_driver = driver.Driver(pygram.printless_python_grammar, - convert=pytree.convert, - logger=self.logger) self.pre_order, self.post_order = self.get_fixers() self.files = [] # List of files that were or should be modified @@ -243,13 +240,7 @@ there were errors during the parse. """ try: - try: - tree = self.driver.parse_string(data) - except parse.ParseError, e: - if e.type == token.EQUAL: - tree = self.printless_driver.parse_string(data) - else: - raise + tree = self.driver.parse_string(data) except Exception, err: self.log_error("Can't parse %s: %s: %s", name, err.__class__.__name__, err) Modified: sandbox/trunk/2to3/tests/test_all_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_all_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_all_fixers.py Thu Sep 6 07:21:14 2007 @@ -24,17 +24,17 @@ for k, v in kwargs.items(): setattr(self, k, v) self.verbose = False - self.doctests_only = False class Test_all(support.TestCase): def setUp(self): - options = Options(fix=["all", "idioms", "ws_comma"], write=False) + options = Options(fix=["all", "idioms", "ws_comma"], + print_function=False) self.refactor = refactor.RefactoringTool(options) def test_all_project_files(self): for filepath in support.all_project_files(): print "Fixing %s..." % filepath - self.refactor.refactor_file(filepath) + self.refactor.refactor_string(open(filepath).read(), filepath) if __name__ == "__main__": Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Thu Sep 6 07:21:14 2007 @@ -358,14 +358,18 @@ self.unchanged(s) def test_idempotency_print_as_function(self): - s = """print(1, 1+1, 1+1+1)""" - self.unchanged(s) + print_stmt = pygram.python_grammar.keywords.pop("print") + try: + s = """print(1, 1+1, 1+1+1)""" + self.unchanged(s) - s = """print()""" - self.unchanged(s) + s = """print()""" + self.unchanged(s) - s = """print('')""" - self.unchanged(s) + s = """print('')""" + self.unchanged(s) + finally: + pygram.python_grammar.keywords["print"] = print_stmt def test_1(self): b = """print 1, 1+1, 1+1+1""" Modified: sandbox/trunk/2to3/tests/test_refactor.py ============================================================================== --- sandbox/trunk/2to3/tests/test_refactor.py (original) +++ sandbox/trunk/2to3/tests/test_refactor.py Thu Sep 6 07:21:14 2007 @@ -1,58 +0,0 @@ -#!/usr/bin/env python2.5 -""" Test suite for refactor.py """ -# Author: Collin Winter - -# Testing imports -try: - from tests import support -except ImportError: - import support - -# Python imports -import unittest - -# Local imports -import refactor - - -class Options: - def __init__(self, **kwargs): - for k, v in kwargs.items(): - setattr(self, k, v) - self.verbose = False - self.doctests_only = False - - -class TestAutomaticPrintDetection(unittest.TestCase): - - def setUp(self): - self.refactor = refactor.RefactoringTool(Options(fix=["print"])) - - def _check(self, before, after): - before = support.reformat(before) - after = support.reformat(after) - tree = self.refactor.refactor_string(before, "") - self.failUnlessEqual(str(tree), after) - return tree - - def check(self, before, after): - tree = self._check(before, after) - self.failUnless(tree.was_changed) - - def unchanged(self, before): - tree = self._check(before, before) - self.failIf(tree.was_changed) - - def test_print_statement(self): - b = """print >>b, c""" - a = """print(c, file=b)""" - self.check(b, a) - - def test_print_function(self): - s = """print(c, file=b)""" - self.unchanged(s) - - -if __name__ == "__main__": - import __main__ - support.run_all_tests(__main__) From python-checkins at python.org Thu Sep 6 07:29:36 2007 From: python-checkins at python.org (collin.winter) Date: Thu, 6 Sep 2007 07:29:36 +0200 (CEST) Subject: [Python-checkins] r58003 - sandbox/trunk/2to3/tests/test_refactor.py Message-ID: <20070906052937.74ED71E4005@bag.python.org> Author: collin.winter Date: Thu Sep 6 07:29:36 2007 New Revision: 58003 Removed: sandbox/trunk/2to3/tests/test_refactor.py Log: Actually delete tests/test_refactor.py, rather than just remove its contents (stupid svn). Deleted: /sandbox/trunk/2to3/tests/test_refactor.py ============================================================================== From python-checkins at python.org Thu Sep 6 10:30:51 2007 From: python-checkins at python.org (armin.rigo) Date: Thu, 6 Sep 2007 10:30:51 +0200 (CEST) Subject: [Python-checkins] r58004 - python/trunk/Modules/_lsprof.c Message-ID: <20070906083051.BC7A81E4008@bag.python.org> Author: armin.rigo Date: Thu Sep 6 10:30:51 2007 New Revision: 58004 Modified: python/trunk/Modules/_lsprof.c Log: Patch #1733973 by peaker: ptrace_enter_call() assumes no exception is currently set. This assumption is broken when throwing into a generator. Modified: python/trunk/Modules/_lsprof.c ============================================================================== --- python/trunk/Modules/_lsprof.c (original) +++ python/trunk/Modules/_lsprof.c Thu Sep 6 10:30:51 2007 @@ -369,11 +369,20 @@ ProfilerEntry *profEntry; ProfilerContext *pContext; + /* In the case of entering a generator expression frame via a + * throw (gen_send_ex(.., 1)), we may already have an + * Exception set here. We must not mess around with this + * exception, and some of the code under here assumes that + * PyErr_* is its own to mess around with, so we have to + * save and restore any current exception. */ + PyObject *last_type, *last_value, *last_tb; + PyErr_Fetch(&last_type, &last_value, &last_tb); + profEntry = getEntry(pObj, key); if (profEntry == NULL) { profEntry = newProfilerEntry(pObj, key, userObj); if (profEntry == NULL) - return; + goto restorePyerr; } /* grab a ProfilerContext out of the free list */ pContext = pObj->freelistProfilerContext; @@ -386,10 +395,13 @@ malloc(sizeof(ProfilerContext)); if (pContext == NULL) { pObj->flags |= POF_NOMEMORY; - return; + goto restorePyerr; } } initContext(pObj, pContext, profEntry); + +restorePyerr: + PyErr_Restore(last_type, last_value, last_tb); } static void From python-checkins at python.org Thu Sep 6 10:35:35 2007 From: python-checkins at python.org (armin.rigo) Date: Thu, 6 Sep 2007 10:35:35 +0200 (CEST) Subject: [Python-checkins] r58005 - python/branches/release25-maint/Modules/_lsprof.c Message-ID: <20070906083535.3333B1E4005@bag.python.org> Author: armin.rigo Date: Thu Sep 6 10:35:34 2007 New Revision: 58005 Modified: python/branches/release25-maint/Modules/_lsprof.c Log: Backport of r58004. Modified: python/branches/release25-maint/Modules/_lsprof.c ============================================================================== --- python/branches/release25-maint/Modules/_lsprof.c (original) +++ python/branches/release25-maint/Modules/_lsprof.c Thu Sep 6 10:35:34 2007 @@ -369,11 +369,20 @@ ProfilerEntry *profEntry; ProfilerContext *pContext; + /* In the case of entering a generator expression frame via a + * throw (gen_send_ex(.., 1)), we may already have an + * Exception set here. We must not mess around with this + * exception, and some of the code under here assumes that + * PyErr_* is its own to mess around with, so we have to + * save and restore any current exception. */ + PyObject *last_type, *last_value, *last_tb; + PyErr_Fetch(&last_type, &last_value, &last_tb); + profEntry = getEntry(pObj, key); if (profEntry == NULL) { profEntry = newProfilerEntry(pObj, key, userObj); if (profEntry == NULL) - return; + goto restorePyerr; } /* grab a ProfilerContext out of the free list */ pContext = pObj->freelistProfilerContext; @@ -386,10 +395,13 @@ malloc(sizeof(ProfilerContext)); if (pContext == NULL) { pObj->flags |= POF_NOMEMORY; - return; + goto restorePyerr; } } initContext(pObj, pContext, profEntry); + +restorePyerr: + PyErr_Restore(last_type, last_value, last_tb); } static void From buildbot at python.org Thu Sep 6 11:09:35 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 09:09:35 +0000 Subject: [Python-checkins] buildbot warnings in x86 mvlgcc trunk Message-ID: <20070906090936.11C5B1E4005@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/781 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: armin.rigo,georg.brandl Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_socket_ssl ====================================================================== ERROR: test_978833 (test.test_socket_ssl.BasicTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socket_ssl.py", line 126, in test_978833 raise test_support.TestFailed("Failed to close socket") File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/contextlib.py", line 29, in __exit__ self.gen.throw(type, value, traceback) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/contextlib.py", line 113, in nested yield vars File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socket_ssl.py", line 116, in test_978833 s.connect(("www.sf.net", 443)) File "", line 1, in connect error: (110, 'Connection timed out') ====================================================================== ERROR: testBasic (test.test_socket_ssl.ConnectedTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socket_ssl.py", line 30, in testBasic f = urllib.urlopen('https://sf.net') File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/urllib.py", line 82, in urlopen return opener.open(url) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/urllib.py", line 426, in open_https h.endheaders() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/httplib.py", line 849, in endheaders self._send_output() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/httplib.py", line 721, in _send_output self.send(msg) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/httplib.py", line 680, in send self.connect() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/httplib.py", line 1053, in connect sock = socket.create_connection((self.host, self.port), self.timeout) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno socket error] (110, 'Connection timed out') make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 11:12:07 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 09:12:07 +0000 Subject: [Python-checkins] buildbot warnings in PPC64 Debian trunk Message-ID: <20070906091207.AD2661E401B@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/179 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: armin.rigo,georg.brandl Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_xmlrpc ====================================================================== ERROR: test_fail_no_info (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_xmlrpc.py", line 497, in test_fail_no_info p.pow(6,8) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1157, in __call__ return self.__send(self.__name, args) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1447, in __request verbose=self.__verbose File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1195, in request errcode, errmsg, headers = h.getreply() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 1005, in getreply response = self._conn.getresponse() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 931, in getresponse response.begin() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 415, in begin self.msg = HTTPMessage(self.fp, 0) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/mimetools.py", line 16, in __init__ rfc822.Message.__init__(self, fp, seekable) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/rfc822.py", line 104, in __init__ self.readheaders() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 271, in readheaders line = self.fp.readline() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/socket.py", line 351, in readline data = recv(1) error: (104, 'Connection reset by peer') ====================================================================== ERROR: test_fail_with_info (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_xmlrpc.py", line 517, in test_fail_with_info p.pow(6,8) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1157, in __call__ return self.__send(self.__name, args) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1447, in __request verbose=self.__verbose File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1195, in request errcode, errmsg, headers = h.getreply() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 1005, in getreply response = self._conn.getresponse() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 931, in getresponse response.begin() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 415, in begin self.msg = HTTPMessage(self.fp, 0) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/mimetools.py", line 16, in __init__ rfc822.Message.__init__(self, fp, seekable) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/rfc822.py", line 104, in __init__ self.readheaders() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 271, in readheaders line = self.fp.readline() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/socket.py", line 351, in readline data = recv(1) error: (104, 'Connection reset by peer') make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Thu Sep 6 11:30:38 2007 From: python-checkins at python.org (armin.rigo) Date: Thu, 6 Sep 2007 11:30:38 +0200 (CEST) Subject: [Python-checkins] r58006 - python/trunk/Lib/test/crashers/borrowed_ref_4.py Message-ID: <20070906093038.EFEB91E400D@bag.python.org> Author: armin.rigo Date: Thu Sep 6 11:30:38 2007 New Revision: 58006 Added: python/trunk/Lib/test/crashers/borrowed_ref_4.py (contents, props changed) Log: PyDict_GetItem() returns a borrowed reference. This attack is against ceval.c:IMPORT_NAME, which calls an object (__builtin__.__import__) without holding a reference to it. Added: python/trunk/Lib/test/crashers/borrowed_ref_4.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/crashers/borrowed_ref_4.py Thu Sep 6 11:30:38 2007 @@ -0,0 +1,28 @@ +""" +PyDict_GetItem() returns a borrowed reference. +This attack is against ceval.c:IMPORT_NAME, which calls an +object (__builtin__.__import__) without holding a reference to it. +""" + +import types +import __builtin__ + + +class X(object): + def __getattr__(self, name): + # this is called with name == '__bases__' by PyObject_IsInstance() + # during the unbound method call -- it frees the unbound method + # itself before it invokes its im_func. + del __builtin__.__import__ + return () + +pseudoclass = X() + +class Y(object): + def __call__(self, *args): + # 'self' was freed already + print self, args + +# make an unbound method +__builtin__.__import__ = types.MethodType(Y(), None, (pseudoclass, str)) +import spam From g.brandl at gmx.net Thu Sep 6 15:51:51 2007 From: g.brandl at gmx.net (Georg Brandl) Date: Thu, 06 Sep 2007 15:51:51 +0200 Subject: [Python-checkins] r58001 - in sandbox/trunk/2to3: fixes/fix_tuple_params.py tests/test_fixers.py In-Reply-To: <20070906051631.5C4581E4004@bag.python.org> References: <20070906051631.5C4581E4004@bag.python.org> Message-ID: collin.winter schrieb: > Author: collin.winter > Date: Thu Sep 6 07:16:31 2007 > New Revision: 58001 > > Modified: > sandbox/trunk/2to3/fixes/fix_tuple_params.py > sandbox/trunk/2to3/tests/test_fixers.py > Log: > Fix an overly-greedy pattern in fix_tuple_params, add tests. This doesn't seem to fix #1107... lambda (x): x is now left intact, while it is a SyntaxError in 3k. Georg -- Thus spake the Lord: Thou shalt indent with four spaces. No more, no less. Four shall be the number of spaces thou shalt indent, and the number of thy indenting shall be four. Eight shalt thou not indent, nor either indent thou two, excepting that thou then proceed to four. Tabs are right out. From python-checkins at python.org Thu Sep 6 16:13:08 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 6 Sep 2007 16:13:08 +0200 (CEST) Subject: [Python-checkins] r58009 - doctools/trunk/sphinx/builder.py Message-ID: <20070906141308.8F22F1E4005@bag.python.org> Author: georg.brandl Date: Thu Sep 6 16:13:08 2007 New Revision: 58009 Modified: doctools/trunk/sphinx/builder.py Log: Patch #1119 from Lars: correctly handle pruning the search index. Modified: doctools/trunk/sphinx/builder.py ============================================================================== --- doctools/trunk/sphinx/builder.py (original) +++ doctools/trunk/sphinx/builder.py Thu Sep 6 16:13:08 2007 @@ -230,6 +230,7 @@ for tocfilename in self.env.files_to_rebuild.get(filename, []): filenames_set.add(tocfilename) filenames_set.add('contents.rst') + import pdb; pdb.set_trace() else: # build all filenames_set = set(self.env.all_files) @@ -498,7 +499,7 @@ except (IOError, OSError): pass # delete all entries for files that will be rebuilt - self.indexer.prune(set(self.env.all_files) - set(filenames)) + self.indexer.prune([fn[:-4] for fn in set(self.env.all_files) - set(filenames)]) def index_file(self, filename, doctree, title): # only index pages with title From martin at v.loewis.de Thu Sep 6 16:16:15 2007 From: martin at v.loewis.de (=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=) Date: Thu, 06 Sep 2007 16:16:15 +0200 Subject: [Python-checkins] r58009 - doctools/trunk/sphinx/builder.py In-Reply-To: <20070906141308.8F22F1E4005@bag.python.org> References: <20070906141308.8F22F1E4005@bag.python.org> Message-ID: <46E00BAF.4030406@v.loewis.de> > + import pdb; pdb.set_trace() Ist das wirklich so gemeint? Ciao, Martin From buildbot at python.org Thu Sep 6 16:21:59 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 14:21:59 +0000 Subject: [Python-checkins] buildbot warnings in x86 gentoo trunk Message-ID: <20070906142159.B07A31E4008@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/2443 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: armin.rigo Build had warnings: warnings failed slave lost sincerely, -The Buildbot From python-checkins at python.org Thu Sep 6 16:46:38 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 6 Sep 2007 16:46:38 +0200 (CEST) Subject: [Python-checkins] r58010 - doctools/trunk/sphinx/builder.py Message-ID: <20070906144638.80F9A1E4011@bag.python.org> Author: georg.brandl Date: Thu Sep 6 16:46:38 2007 New Revision: 58010 Modified: doctools/trunk/sphinx/builder.py Log: Oops. Modified: doctools/trunk/sphinx/builder.py ============================================================================== --- doctools/trunk/sphinx/builder.py (original) +++ doctools/trunk/sphinx/builder.py Thu Sep 6 16:46:38 2007 @@ -230,7 +230,6 @@ for tocfilename in self.env.files_to_rebuild.get(filename, []): filenames_set.add(tocfilename) filenames_set.add('contents.rst') - import pdb; pdb.set_trace() else: # build all filenames_set = set(self.env.all_files) From python-checkins at python.org Thu Sep 6 16:49:56 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 6 Sep 2007 16:49:56 +0200 (CEST) Subject: [Python-checkins] r58013 - python/trunk/Doc/extending/extending.rst Message-ID: <20070906144956.974601E4008@bag.python.org> Author: georg.brandl Date: Thu Sep 6 16:49:56 2007 New Revision: 58013 Modified: python/trunk/Doc/extending/extending.rst Log: Backport from 3k: #1116: fix reference to old filename. Modified: python/trunk/Doc/extending/extending.rst ============================================================================== --- python/trunk/Doc/extending/extending.rst (original) +++ python/trunk/Doc/extending/extending.rst Thu Sep 6 16:49:56 2007 @@ -423,7 +423,7 @@ standard interface to call a Python function. (I won't dwell on how to call the Python parser with a particular string as input --- if you're interested, have a look at the implementation of the :option:`-c` command line option in -:file:`Python/pythonmain.c` from the Python source code.) +:file:`Modules/main.c` from the Python source code.) Calling a Python function is easy. First, the Python program must somehow pass you the Python function object. You should provide a function (or some other From python-checkins at python.org Thu Sep 6 17:02:33 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 6 Sep 2007 17:02:33 +0200 (CEST) Subject: [Python-checkins] r58014 - doctools/trunk/sphinx/environment.py Message-ID: <20070906150233.14F591E400A@bag.python.org> Author: georg.brandl Date: Thu Sep 6 17:02:32 2007 New Revision: 58014 Modified: doctools/trunk/sphinx/environment.py Log: Fix wrong invalidation of parent files. Modified: doctools/trunk/sphinx/environment.py ============================================================================== --- doctools/trunk/sphinx/environment.py (original) +++ doctools/trunk/sphinx/environment.py Thu Sep 6 17:02:32 2007 @@ -197,7 +197,7 @@ # (don't show if it's only one item) self.toctree_relations = {} # filename -> ["parent", "previous", "next"] filename # for navigating in the toctree - self.files_to_rebuild = {} # filename -> list of files (containing its TOCs) + self.files_to_rebuild = {} # filename -> set of files (containing its TOCs) # to rebuild too # X-ref target inventory @@ -234,8 +234,9 @@ self.titles.pop(filename, None) self.tocs.pop(filename, None) self.toc_num_entries.pop(filename, None) - self.files_to_rebuild.pop(filename, None) + for subfn, fnset in self.files_to_rebuild.iteritems(): + fnset.discard(filename) for fullname, (fn, _) in self.descrefs.items(): if fn == filename: del self.descrefs[fullname] From python-checkins at python.org Thu Sep 6 17:07:23 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 6 Sep 2007 17:07:23 +0200 (CEST) Subject: [Python-checkins] r58015 - doctools/trunk/TODO Message-ID: <20070906150723.0985C1E400A@bag.python.org> Author: georg.brandl Date: Thu Sep 6 17:07:22 2007 New Revision: 58015 Modified: doctools/trunk/TODO Log: New todo item. Modified: doctools/trunk/TODO ============================================================================== --- doctools/trunk/TODO (original) +++ doctools/trunk/TODO Thu Sep 6 17:07:22 2007 @@ -1,11 +1,13 @@ Global TODO =========== +- "seealso" links to external examples, see http://svn.python.org/projects/sandbox/trunk/seealso/ and http://effbot.org/zone/idea-seealso.htm - "often used" combo box in sidebar - discuss and debug comments system - write new Makefile, handle automatic checkout - write a "printable" builder (export to latex, most probably) - prepare for databases other than sqlite for comments - look at the old tools/ scripts, what functionality should be rewritten +- source file cross-references? - add search via Xapian? - optionally have a contents tree view in the sidebar (AJAX based)? From collinw at gmail.com Thu Sep 6 18:44:42 2007 From: collinw at gmail.com (Collin Winter) Date: Thu, 6 Sep 2007 09:44:42 -0700 Subject: [Python-checkins] r58001 - in sandbox/trunk/2to3: fixes/fix_tuple_params.py tests/test_fixers.py In-Reply-To: References: <20070906051631.5C4581E4004@bag.python.org> Message-ID: <43aa6ff70709060944j2ac7b159sef806045911c6ca8@mail.gmail.com> On 9/6/07, Georg Brandl wrote: > collin.winter schrieb: > > Author: collin.winter > > Date: Thu Sep 6 07:16:31 2007 > > New Revision: 58001 > > > > Modified: > > sandbox/trunk/2to3/fixes/fix_tuple_params.py > > sandbox/trunk/2to3/tests/test_fixers.py > > Log: > > Fix an overly-greedy pattern in fix_tuple_params, add tests. > > This doesn't seem to fix #1107... lambda (x): x is now left intact, > while it is a SyntaxError in 3k. I was actually fixing a bug Guido had pointed out, where the (x) was treated as a 1-tuple. I'll fix #1107 sometime today. Collin From buildbot at python.org Thu Sep 6 19:01:02 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 17:01:02 +0000 Subject: [Python-checkins] buildbot warnings in x86 mvlgcc 3.0 Message-ID: <20070906170103.0A2791E400A@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%203.0/builds/119 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl,guido.van.rossum,skip.montanaro Build had warnings: warnings test Excerpt from the test logfile: 2 tests failed: test_email test_pwd ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) ====================================================================== ERROR: test_errors (test.test_pwd.PwdTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/test/test_pwd.py", line 54, in test_errors for (n, p, u, g, gecos, d, s) in pwd.getpwall(): UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1-6: unsupported Unicode code range ====================================================================== ERROR: test_values (test.test_pwd.PwdTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/test/test_pwd.py", line 9, in test_values entries = pwd.getpwall() UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1-6: unsupported Unicode code range make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 19:14:02 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 17:14:02 +0000 Subject: [Python-checkins] buildbot warnings in amd64 XP 3.0 Message-ID: <20070906171403.09B1D1E400A@bag.python.org> The Buildbot has detected a new failure of amd64 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%203.0/builds/104 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl,guido.van.rossum,skip.montanaro Build had warnings: warnings test Excerpt from the test logfile: 19 tests failed: test_bigaddrspace test_csv test_dumbdbm test_file test_fileinput test_format test_getargs2 test_gettext test_index test_io test_itertools test_largefile test_mailbox test_netrc test_operator test_pep277 test_subprocess test_tempfile test_winsound ====================================================================== FAIL: test_concat (test.test_bigaddrspace.StrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_support.py", line 495, in wrapper return f(self) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_bigaddrspace.py", line 14, in test_concat self.assertRaises(OverflowError, operator.add, s1, '?') AssertionError: OverflowError not raised by add ====================================================================== FAIL: test_optimized_concat (test.test_bigaddrspace.StrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_support.py", line 495, in wrapper return f(self) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_bigaddrspace.py", line 24, in test_optimized_concat self.fail("should have raised OverflowError") AssertionError: should have raised OverflowError ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None Traceback (most recent call last): File "../lib/test/regrtest.py", line 586, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 48, in testboth("%.*d", (sys.maxint,1)) # expect overflow File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 43, in testboth testformat(str8(formatstr), *args) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 22, in testformat result = formatstr % args MemoryError ====================================================================== ERROR: test_n (test.test_getargs2.Signed_TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_getargs2.py", line 190, in test_n self.failUnlessEqual(99, getargs_n(Long())) TypeError: 'Long' object cannot be interpreted as an integer ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_getitem (test.test_index.OverflowTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_index.py", line 190, in test_getitem (0, maxsize, 1)) AssertionError: (-1, -1, 1) != (0, -1, 1) ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_islice (test.test_itertools.TestBasicOps) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_itertools.py", line 343, in test_islice self.assertEqual(len(list(islice(count(), 1, 10, maxsize))), 1) ValueError: Step for islice() must be a positive integer or None. ====================================================================== FAIL: test_count (test.test_itertools.TestBasicOps) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_itertools.py", line 60, in test_count self.assertRaises(OverflowError, list, islice(count(maxsize-5), 10)) AssertionError: OverflowError not raised by list ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== FAIL: test_delslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 147, in test_delslice self.assertEqual(a, []) AssertionError: [9] != [] ====================================================================== FAIL: test_getslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 171, in test_getslice self.assertEqual(b, a) AssertionError: [0, 1, 2, 3, 4, 5, 6, 7, 8] != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ====================================================================== FAIL: test_setslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 308, in test_setslice self.assertEqual(a, []) AssertionError: [3] != [] ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_extremes (test.test_winsound.BeepTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 18, in test_extremes winsound.Beep(37, 75) RuntimeError: Failed to beep ====================================================================== ERROR: test_increasingfrequency (test.test_winsound.BeepTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 23, in test_increasingfrequency winsound.Beep(i, 75) RuntimeError: Failed to beep ====================================================================== ERROR: test_alias_asterisk (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 64, in test_alias_asterisk winsound.PlaySound('SystemAsterisk', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_exclamation (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 74, in test_alias_exclamation winsound.PlaySound('SystemExclamation', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_exit (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 84, in test_alias_exit winsound.PlaySound('SystemExit', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_hand (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 94, in test_alias_hand winsound.PlaySound('SystemHand', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_question (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 104, in test_alias_question winsound.PlaySound('SystemQuestion', winsound.SND_ALIAS) RuntimeError: Failed to play sound sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 19:16:35 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 17:16:35 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP-3 3.0 Message-ID: <20070906171635.B81901E4013@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%203.0/builds/88 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl,guido.van.rossum,skip.montanaro Build had warnings: warnings test Excerpt from the test logfile: 12 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot\work\3.0.heller-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot\work\3.0.heller-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot\work\3.0.heller-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot\work\3.0.heller-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\work\3.0.heller-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot\work\3.0.heller-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\work\3.0.heller-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' sincerely, -The Buildbot From buildbot at python.org Thu Sep 6 19:30:53 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 17:30:53 +0000 Subject: [Python-checkins] buildbot warnings in x86 FreeBSD 3.0 Message-ID: <20070906173053.5A10E1E401C@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/17 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl,guido.van.rossum,skip.montanaro Build had warnings: warnings test Excerpt from the test logfile: 4 tests failed: test_asynchat test_email test_urllib2net test_xmlrpc ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 522, in __init__ self.handle() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 330, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 313, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 366, in nreadahead readahead = self.peek(1, unsafe=True) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 758, in peek current = self.raw.read(to_read) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: (35, 'Resource temporarily unavailable') ====================================================================== ERROR: test_simple1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 336, in test_simple1 self.assertEqual(p.pow(6,8), 6**8) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1091, in __call__ return self.__send(self.__name, args) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1349, in __request verbose=self.__verbose File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1121, in request resp = http_conn.getresponse() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 954, in getresponse response.begin() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 395, in begin version, status, reason = self._read_status() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 357, in _read_status raise BadStatusLine(line) httplib.BadStatusLine ====================================================================== FAIL: test_introspection1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 354, in test_introspection1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection2 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 365, in test_introspection2 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection3 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 378, in test_introspection3 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_multicall (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 395, in test_multicall self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_basic (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 447, in test_basic self.fail("%s\n%s" % (e, e.headers)) AssertionError: sincerely, -The Buildbot From python-checkins at python.org Thu Sep 6 21:35:56 2007 From: python-checkins at python.org (brett.cannon) Date: Thu, 6 Sep 2007 21:35:56 +0200 (CEST) Subject: [Python-checkins] r58018 - in python/branches/bcannon-objcap: Doc Doc/Makefile Doc/howto Doc/howto/functional.rst Doc/howto/unicode.rst Doc/howto/urllib2.rst Doc/tools Doc/whatsnew Include/abstract.h Include/boolobject.h Include/bufferobject.h Include/cStringIO.h Include/cellobject.h Include/cobject.h Include/code.h Include/complexobject.h Include/datetime.h Include/descrobject.h Include/dictobject.h Include/fileobject.h Include/floatobject.h Include/funcobject.h Include/genobject.h Include/iterobject.h Include/listobject.h Include/longobject.h Include/methodobject.h Include/moduleobject.h Include/object.h Include/objimpl.h Include/opcode.h Include/py_curses.h Include/rangeobject.h Include/setobject.h Include/sliceobject.h Include/stringobject.h Include/structmember.h Include/symtable.h Include/traceback.h Include/tupleobject.h Include/unicodeobject.h Include/weakrefobject.h Lib/SimpleXMLRPCServer.py Lib/UserString.py Lib/bsddb/__init__.py Lib/bsddb/test/test_1413192.py Lib/calendar.py Lib/contextlib.py Lib/ctypes/__init__.py Lib/ctypes/test/test_arrays.py Lib/ctypes/test/test_buffers.py Lib/ctypes/test/test_cast.py Lib/ctypes/test/test_find.py Lib/ctypes/test/test_memfunctions.py Lib/ctypes/test/test_slicing.py Lib/ctypes/test/test_strings.py Lib/ctypes/test/test_structures.py Lib/ctypes/test/test_unicode.py Lib/ctypes/test/test_win32.py Lib/decimal.py Lib/distutils/command/bdist_msi.py Lib/distutils/command/register.py Lib/distutils/command/upload.py Lib/distutils/util.py Lib/email/test/test_email.py Lib/email/test/test_email_renamed.py Lib/encodings/aliases.py Lib/encodings/quopri_codec.py Lib/encodings/uu_codec.py Lib/functools.py Lib/httplib.py Lib/idlelib/macosxSupport.py Lib/imaplib.py Lib/inspect.py Lib/logging/__init__.py Lib/mailbox.py Lib/ntpath.py Lib/pipes.py Lib/poplib.py Lib/posixpath.py Lib/robotparser.py Lib/runpy.py Lib/sgmllib.py Lib/smtplib.py Lib/socket.py Lib/sre_compile.py Lib/tarfile.py Lib/test/cjkencodings_test.py Lib/test/list_tests.py Lib/test/output/test_class Lib/test/output/test_frozen Lib/test/output/test_linuxaudiodev Lib/test/output/test_ossaudiodev Lib/test/output/test_pkg Lib/test/output/test_rgbimg Lib/test/output/test_signal Lib/test/output/test_winreg Lib/test/regrtest.py Lib/test/string_tests.py Lib/test/test_StringIO.py Lib/test/test_array.py Lib/test/test_asynchat.py Lib/test/test_bsddb.py Lib/test/test_calendar.py Lib/test/test_class.py Lib/test/test_cmd_line.py Lib/test/test_codeccallbacks.py Lib/test/test_codecencodings_kr.py Lib/test/test_codecmaps_cn.py Lib/test/test_codecmaps_kr.py Lib/test/test_codecs.py Lib/test/test_compiler.py Lib/test/test_datetime.py Lib/test/test_exceptions.py Lib/test/test_float.py Lib/test/test_format.py Lib/test/test_frozen.py Lib/test/test_httplib.py Lib/test/test_import.py Lib/test/test_linuxaudiodev.py Lib/test/test_macostools.py Lib/test/test_mailbox.py Lib/test/test_math.py Lib/test/test_mmap.py Lib/test/test_multibytecodec_support.py Lib/test/test_os.py Lib/test/test_ossaudiodev.py Lib/test/test_parser.py Lib/test/test_pep352.py Lib/test/test_pkg.py Lib/test/test_pow.py Lib/test/test_random.py Lib/test/test_re.py Lib/test/test_resource.py Lib/test/test_robotparser.py Lib/test/test_runpy.py Lib/test/test_signal.py Lib/test/test_smtplib.py Lib/test/test_socket_ssl.py Lib/test/test_socketserver.py Lib/test/test_struct.py Lib/test/test_structmembers.py Lib/test/test_structseq.py Lib/test/test_sundry.py Lib/test/test_support.py Lib/test/test_tarfile.py Lib/test/test_unicode.py Lib/test/test_unicodedata.py Lib/test/test_urllib2.py Lib/test/test_urllib2_localnet.py Lib/test/test_userstring.py Lib/test/test_warnings.py Lib/test/test_winreg.py Lib/test/test_xmlrpc.py Lib/test/test_zipfile.py Lib/threading.py Lib/urllib.py Lib/urllib2.py Lib/uuid.py Lib/webbrowser.py Lib/zipfile.py Makefile.pre.in Misc/ACKS Misc/BeOS-NOTES Misc/NEWS Misc/build.sh Misc/developers.txt Modules/_bsddb.c Modules/_codecsmodule.c Modules/_collectionsmodule.c Modules/_csv.c Modules/_ctypes/_ctypes.c Modules/_ctypes/callbacks.c Modules/_ctypes/callproc.c Modules/_ctypes/cfield.c Modules/_ctypes/ctypes.h Modules/_ctypes/libffi/configure Modules/_ctypes/libffi/configure.ac Modules/_ctypes/stgdict.c Modules/_curses_panel.c Modules/_cursesmodule.c Modules/_elementtree.c Modules/_functoolsmodule.c Modules/_hashopenssl.c Modules/_hotshot.c Modules/_lsprof.c Modules/_randommodule.c Modules/_sqlite/cache.c Modules/_sqlite/connection.c Modules/_sqlite/cursor.c Modules/_sqlite/prepare_protocol.c Modules/_sqlite/row.c Modules/_sqlite/statement.c Modules/_sre.c Modules/_ssl.c Modules/_struct.c Modules/_testcapimodule.c Modules/_tkinter.c Modules/_typesmodule.c Modules/_weakref.c Modules/arraymodule.c Modules/bz2module.c Modules/cPickle.c Modules/cStringIO.c Modules/cjkcodecs/_codecs_cn.c Modules/cjkcodecs/_codecs_kr.c Modules/cjkcodecs/multibytecodec.c Modules/datetimemodule.c Modules/dbmmodule.c Modules/dlmodule.c Modules/gcmodule.c Modules/gdbmmodule.c Modules/itertoolsmodule.c Modules/linuxaudiodev.c Modules/main.c Modules/makesetup Modules/md5module.c Modules/mmapmodule.c Modules/operator.c Modules/ossaudiodev.c Modules/parsermodule.c Modules/posixmodule.c Modules/pyexpat.c Modules/readline.c Modules/selectmodule.c Modules/sha256module.c Modules/sha512module.c Modules/shamodule.c Modules/socketmodule.c Modules/sunaudiodev.c Modules/threadmodule.c Modules/unicodedata.c Modules/xxmodule.c Modules/xxsubtype.c Modules/zipimport.c Modules/zlibmodule.c Objects/boolobject.c Objects/bufferobject.c Objects/cellobject.c Objects/cobject.c Objects/codeobject.c Objects/complexobject.c Objects/descrobject.c Objects/dictobject.c Objects/enumobject.c Objects/exceptions.c Objects/fileobject.c Objects/floatobject.c Objects/frameobject.c Objects/funcobject.c Objects/genobject.c Objects/intobject.c Objects/iterobject.c Objects/listobject.c Objects/longobject.c Objects/methodobject.c Objects/moduleobject.c Objects/object.c Objects/obmalloc.c Objects/setobject.c Objects/sliceobject.c Objects/stringobject.c Objects/structseq.c Objects/tupleobject.c Objects/typeobject.c Objects/unicodeobject.c Objects/weakrefobject.c PC/_msi.c PC/_winreg.c PC/pyconfig.h PCbuild8/build.bat PCbuild8/readme.txt Parser/parsetok.c Parser/tokenizer.c Parser/tokenizer.h Python/ast.c Python/ceval.c Python/compile.c Python/import.c Python/structmember.c Python/symtable.c Python/traceback.c Tools/msi/msi.py Tools/msi/msilib.py Tools/scripts/setup.py Tools/ssl configure configure.in pyconfig.h.in setup.py Message-ID: <20070906193556.170081E400F@bag.python.org> Author: brett.cannon Date: Thu Sep 6 21:35:45 2007 New Revision: 58018 Added: python/branches/bcannon-objcap/Doc/ (props changed) - copied from r57993, python/trunk/Doc/ python/branches/bcannon-objcap/Doc/Makefile - copied unchanged from r57993, python/trunk/Doc/Makefile python/branches/bcannon-objcap/Doc/howto/ - copied from r57993, python/trunk/Doc/howto/ python/branches/bcannon-objcap/Doc/howto/functional.rst - copied unchanged from r57993, python/trunk/Doc/howto/functional.rst python/branches/bcannon-objcap/Doc/howto/unicode.rst - copied unchanged from r57993, python/trunk/Doc/howto/unicode.rst python/branches/bcannon-objcap/Doc/howto/urllib2.rst - copied unchanged from r57993, python/trunk/Doc/howto/urllib2.rst python/branches/bcannon-objcap/Doc/tools/ (props changed) - copied from r57993, python/trunk/Doc/tools/ python/branches/bcannon-objcap/Doc/whatsnew/ - copied from r57993, python/trunk/Doc/whatsnew/ python/branches/bcannon-objcap/Tools/ssl/ - copied from r57993, python/trunk/Tools/ssl/ Removed: python/branches/bcannon-objcap/Lib/test/output/test_class python/branches/bcannon-objcap/Lib/test/output/test_frozen python/branches/bcannon-objcap/Lib/test/output/test_linuxaudiodev python/branches/bcannon-objcap/Lib/test/output/test_ossaudiodev python/branches/bcannon-objcap/Lib/test/output/test_pkg python/branches/bcannon-objcap/Lib/test/output/test_rgbimg python/branches/bcannon-objcap/Lib/test/output/test_signal python/branches/bcannon-objcap/Lib/test/output/test_winreg Modified: python/branches/bcannon-objcap/ (props changed) python/branches/bcannon-objcap/Include/abstract.h python/branches/bcannon-objcap/Include/boolobject.h python/branches/bcannon-objcap/Include/bufferobject.h python/branches/bcannon-objcap/Include/cStringIO.h python/branches/bcannon-objcap/Include/cellobject.h python/branches/bcannon-objcap/Include/cobject.h python/branches/bcannon-objcap/Include/code.h python/branches/bcannon-objcap/Include/complexobject.h python/branches/bcannon-objcap/Include/datetime.h python/branches/bcannon-objcap/Include/descrobject.h python/branches/bcannon-objcap/Include/dictobject.h python/branches/bcannon-objcap/Include/fileobject.h python/branches/bcannon-objcap/Include/floatobject.h python/branches/bcannon-objcap/Include/funcobject.h python/branches/bcannon-objcap/Include/genobject.h python/branches/bcannon-objcap/Include/iterobject.h python/branches/bcannon-objcap/Include/listobject.h python/branches/bcannon-objcap/Include/longobject.h python/branches/bcannon-objcap/Include/methodobject.h python/branches/bcannon-objcap/Include/moduleobject.h python/branches/bcannon-objcap/Include/object.h python/branches/bcannon-objcap/Include/objimpl.h python/branches/bcannon-objcap/Include/opcode.h python/branches/bcannon-objcap/Include/py_curses.h python/branches/bcannon-objcap/Include/rangeobject.h python/branches/bcannon-objcap/Include/setobject.h python/branches/bcannon-objcap/Include/sliceobject.h python/branches/bcannon-objcap/Include/stringobject.h python/branches/bcannon-objcap/Include/structmember.h python/branches/bcannon-objcap/Include/symtable.h python/branches/bcannon-objcap/Include/traceback.h python/branches/bcannon-objcap/Include/tupleobject.h python/branches/bcannon-objcap/Include/unicodeobject.h python/branches/bcannon-objcap/Include/weakrefobject.h python/branches/bcannon-objcap/Lib/SimpleXMLRPCServer.py python/branches/bcannon-objcap/Lib/UserString.py python/branches/bcannon-objcap/Lib/bsddb/__init__.py python/branches/bcannon-objcap/Lib/bsddb/test/test_1413192.py python/branches/bcannon-objcap/Lib/calendar.py python/branches/bcannon-objcap/Lib/contextlib.py python/branches/bcannon-objcap/Lib/ctypes/__init__.py python/branches/bcannon-objcap/Lib/ctypes/test/test_arrays.py python/branches/bcannon-objcap/Lib/ctypes/test/test_buffers.py python/branches/bcannon-objcap/Lib/ctypes/test/test_cast.py python/branches/bcannon-objcap/Lib/ctypes/test/test_find.py python/branches/bcannon-objcap/Lib/ctypes/test/test_memfunctions.py python/branches/bcannon-objcap/Lib/ctypes/test/test_slicing.py python/branches/bcannon-objcap/Lib/ctypes/test/test_strings.py python/branches/bcannon-objcap/Lib/ctypes/test/test_structures.py python/branches/bcannon-objcap/Lib/ctypes/test/test_unicode.py python/branches/bcannon-objcap/Lib/ctypes/test/test_win32.py python/branches/bcannon-objcap/Lib/decimal.py python/branches/bcannon-objcap/Lib/distutils/command/bdist_msi.py python/branches/bcannon-objcap/Lib/distutils/command/register.py python/branches/bcannon-objcap/Lib/distutils/command/upload.py python/branches/bcannon-objcap/Lib/distutils/util.py python/branches/bcannon-objcap/Lib/email/test/test_email.py python/branches/bcannon-objcap/Lib/email/test/test_email_renamed.py python/branches/bcannon-objcap/Lib/encodings/aliases.py python/branches/bcannon-objcap/Lib/encodings/quopri_codec.py python/branches/bcannon-objcap/Lib/encodings/uu_codec.py python/branches/bcannon-objcap/Lib/functools.py python/branches/bcannon-objcap/Lib/httplib.py python/branches/bcannon-objcap/Lib/idlelib/macosxSupport.py python/branches/bcannon-objcap/Lib/imaplib.py python/branches/bcannon-objcap/Lib/inspect.py python/branches/bcannon-objcap/Lib/logging/__init__.py python/branches/bcannon-objcap/Lib/mailbox.py python/branches/bcannon-objcap/Lib/ntpath.py python/branches/bcannon-objcap/Lib/pipes.py python/branches/bcannon-objcap/Lib/poplib.py python/branches/bcannon-objcap/Lib/posixpath.py python/branches/bcannon-objcap/Lib/robotparser.py python/branches/bcannon-objcap/Lib/runpy.py python/branches/bcannon-objcap/Lib/sgmllib.py python/branches/bcannon-objcap/Lib/smtplib.py python/branches/bcannon-objcap/Lib/socket.py python/branches/bcannon-objcap/Lib/sre_compile.py python/branches/bcannon-objcap/Lib/tarfile.py python/branches/bcannon-objcap/Lib/test/cjkencodings_test.py python/branches/bcannon-objcap/Lib/test/list_tests.py python/branches/bcannon-objcap/Lib/test/regrtest.py python/branches/bcannon-objcap/Lib/test/string_tests.py python/branches/bcannon-objcap/Lib/test/test_StringIO.py python/branches/bcannon-objcap/Lib/test/test_array.py python/branches/bcannon-objcap/Lib/test/test_asynchat.py python/branches/bcannon-objcap/Lib/test/test_bsddb.py python/branches/bcannon-objcap/Lib/test/test_calendar.py python/branches/bcannon-objcap/Lib/test/test_class.py python/branches/bcannon-objcap/Lib/test/test_cmd_line.py python/branches/bcannon-objcap/Lib/test/test_codeccallbacks.py python/branches/bcannon-objcap/Lib/test/test_codecencodings_kr.py python/branches/bcannon-objcap/Lib/test/test_codecmaps_cn.py python/branches/bcannon-objcap/Lib/test/test_codecmaps_kr.py python/branches/bcannon-objcap/Lib/test/test_codecs.py python/branches/bcannon-objcap/Lib/test/test_compiler.py python/branches/bcannon-objcap/Lib/test/test_datetime.py python/branches/bcannon-objcap/Lib/test/test_exceptions.py python/branches/bcannon-objcap/Lib/test/test_float.py python/branches/bcannon-objcap/Lib/test/test_format.py python/branches/bcannon-objcap/Lib/test/test_frozen.py python/branches/bcannon-objcap/Lib/test/test_httplib.py python/branches/bcannon-objcap/Lib/test/test_import.py python/branches/bcannon-objcap/Lib/test/test_linuxaudiodev.py python/branches/bcannon-objcap/Lib/test/test_macostools.py python/branches/bcannon-objcap/Lib/test/test_mailbox.py python/branches/bcannon-objcap/Lib/test/test_math.py python/branches/bcannon-objcap/Lib/test/test_mmap.py python/branches/bcannon-objcap/Lib/test/test_multibytecodec_support.py python/branches/bcannon-objcap/Lib/test/test_os.py python/branches/bcannon-objcap/Lib/test/test_ossaudiodev.py python/branches/bcannon-objcap/Lib/test/test_parser.py python/branches/bcannon-objcap/Lib/test/test_pep352.py python/branches/bcannon-objcap/Lib/test/test_pkg.py python/branches/bcannon-objcap/Lib/test/test_pow.py python/branches/bcannon-objcap/Lib/test/test_random.py python/branches/bcannon-objcap/Lib/test/test_re.py python/branches/bcannon-objcap/Lib/test/test_resource.py python/branches/bcannon-objcap/Lib/test/test_robotparser.py python/branches/bcannon-objcap/Lib/test/test_runpy.py python/branches/bcannon-objcap/Lib/test/test_signal.py python/branches/bcannon-objcap/Lib/test/test_smtplib.py python/branches/bcannon-objcap/Lib/test/test_socket_ssl.py python/branches/bcannon-objcap/Lib/test/test_socketserver.py python/branches/bcannon-objcap/Lib/test/test_struct.py python/branches/bcannon-objcap/Lib/test/test_structmembers.py python/branches/bcannon-objcap/Lib/test/test_structseq.py python/branches/bcannon-objcap/Lib/test/test_sundry.py python/branches/bcannon-objcap/Lib/test/test_support.py python/branches/bcannon-objcap/Lib/test/test_tarfile.py python/branches/bcannon-objcap/Lib/test/test_unicode.py python/branches/bcannon-objcap/Lib/test/test_unicodedata.py python/branches/bcannon-objcap/Lib/test/test_urllib2.py python/branches/bcannon-objcap/Lib/test/test_urllib2_localnet.py python/branches/bcannon-objcap/Lib/test/test_userstring.py python/branches/bcannon-objcap/Lib/test/test_warnings.py python/branches/bcannon-objcap/Lib/test/test_winreg.py python/branches/bcannon-objcap/Lib/test/test_xmlrpc.py python/branches/bcannon-objcap/Lib/test/test_zipfile.py python/branches/bcannon-objcap/Lib/threading.py python/branches/bcannon-objcap/Lib/urllib.py python/branches/bcannon-objcap/Lib/urllib2.py python/branches/bcannon-objcap/Lib/uuid.py python/branches/bcannon-objcap/Lib/webbrowser.py python/branches/bcannon-objcap/Lib/zipfile.py python/branches/bcannon-objcap/Makefile.pre.in python/branches/bcannon-objcap/Misc/ACKS python/branches/bcannon-objcap/Misc/BeOS-NOTES python/branches/bcannon-objcap/Misc/NEWS python/branches/bcannon-objcap/Misc/build.sh python/branches/bcannon-objcap/Misc/developers.txt python/branches/bcannon-objcap/Modules/_bsddb.c python/branches/bcannon-objcap/Modules/_codecsmodule.c python/branches/bcannon-objcap/Modules/_collectionsmodule.c python/branches/bcannon-objcap/Modules/_csv.c python/branches/bcannon-objcap/Modules/_ctypes/_ctypes.c python/branches/bcannon-objcap/Modules/_ctypes/callbacks.c python/branches/bcannon-objcap/Modules/_ctypes/callproc.c python/branches/bcannon-objcap/Modules/_ctypes/cfield.c python/branches/bcannon-objcap/Modules/_ctypes/ctypes.h python/branches/bcannon-objcap/Modules/_ctypes/libffi/configure python/branches/bcannon-objcap/Modules/_ctypes/libffi/configure.ac python/branches/bcannon-objcap/Modules/_ctypes/stgdict.c python/branches/bcannon-objcap/Modules/_curses_panel.c python/branches/bcannon-objcap/Modules/_cursesmodule.c python/branches/bcannon-objcap/Modules/_elementtree.c python/branches/bcannon-objcap/Modules/_functoolsmodule.c python/branches/bcannon-objcap/Modules/_hashopenssl.c python/branches/bcannon-objcap/Modules/_hotshot.c python/branches/bcannon-objcap/Modules/_lsprof.c python/branches/bcannon-objcap/Modules/_randommodule.c python/branches/bcannon-objcap/Modules/_sqlite/cache.c python/branches/bcannon-objcap/Modules/_sqlite/connection.c python/branches/bcannon-objcap/Modules/_sqlite/cursor.c python/branches/bcannon-objcap/Modules/_sqlite/prepare_protocol.c python/branches/bcannon-objcap/Modules/_sqlite/row.c python/branches/bcannon-objcap/Modules/_sqlite/statement.c python/branches/bcannon-objcap/Modules/_sre.c python/branches/bcannon-objcap/Modules/_ssl.c python/branches/bcannon-objcap/Modules/_struct.c python/branches/bcannon-objcap/Modules/_testcapimodule.c python/branches/bcannon-objcap/Modules/_tkinter.c python/branches/bcannon-objcap/Modules/_typesmodule.c python/branches/bcannon-objcap/Modules/_weakref.c python/branches/bcannon-objcap/Modules/arraymodule.c python/branches/bcannon-objcap/Modules/bz2module.c python/branches/bcannon-objcap/Modules/cPickle.c python/branches/bcannon-objcap/Modules/cStringIO.c python/branches/bcannon-objcap/Modules/cjkcodecs/_codecs_cn.c python/branches/bcannon-objcap/Modules/cjkcodecs/_codecs_kr.c python/branches/bcannon-objcap/Modules/cjkcodecs/multibytecodec.c python/branches/bcannon-objcap/Modules/datetimemodule.c python/branches/bcannon-objcap/Modules/dbmmodule.c python/branches/bcannon-objcap/Modules/dlmodule.c python/branches/bcannon-objcap/Modules/gcmodule.c python/branches/bcannon-objcap/Modules/gdbmmodule.c python/branches/bcannon-objcap/Modules/itertoolsmodule.c python/branches/bcannon-objcap/Modules/linuxaudiodev.c python/branches/bcannon-objcap/Modules/main.c python/branches/bcannon-objcap/Modules/makesetup python/branches/bcannon-objcap/Modules/md5module.c python/branches/bcannon-objcap/Modules/mmapmodule.c python/branches/bcannon-objcap/Modules/operator.c python/branches/bcannon-objcap/Modules/ossaudiodev.c python/branches/bcannon-objcap/Modules/parsermodule.c python/branches/bcannon-objcap/Modules/posixmodule.c python/branches/bcannon-objcap/Modules/pyexpat.c python/branches/bcannon-objcap/Modules/readline.c python/branches/bcannon-objcap/Modules/selectmodule.c python/branches/bcannon-objcap/Modules/sha256module.c python/branches/bcannon-objcap/Modules/sha512module.c python/branches/bcannon-objcap/Modules/shamodule.c python/branches/bcannon-objcap/Modules/socketmodule.c python/branches/bcannon-objcap/Modules/sunaudiodev.c python/branches/bcannon-objcap/Modules/threadmodule.c python/branches/bcannon-objcap/Modules/unicodedata.c python/branches/bcannon-objcap/Modules/xxmodule.c python/branches/bcannon-objcap/Modules/xxsubtype.c python/branches/bcannon-objcap/Modules/zipimport.c python/branches/bcannon-objcap/Modules/zlibmodule.c python/branches/bcannon-objcap/Objects/boolobject.c python/branches/bcannon-objcap/Objects/bufferobject.c python/branches/bcannon-objcap/Objects/cellobject.c python/branches/bcannon-objcap/Objects/cobject.c python/branches/bcannon-objcap/Objects/codeobject.c python/branches/bcannon-objcap/Objects/complexobject.c python/branches/bcannon-objcap/Objects/descrobject.c python/branches/bcannon-objcap/Objects/dictobject.c python/branches/bcannon-objcap/Objects/enumobject.c python/branches/bcannon-objcap/Objects/exceptions.c python/branches/bcannon-objcap/Objects/fileobject.c python/branches/bcannon-objcap/Objects/floatobject.c python/branches/bcannon-objcap/Objects/frameobject.c python/branches/bcannon-objcap/Objects/funcobject.c python/branches/bcannon-objcap/Objects/genobject.c python/branches/bcannon-objcap/Objects/intobject.c python/branches/bcannon-objcap/Objects/iterobject.c python/branches/bcannon-objcap/Objects/listobject.c python/branches/bcannon-objcap/Objects/longobject.c python/branches/bcannon-objcap/Objects/methodobject.c python/branches/bcannon-objcap/Objects/moduleobject.c python/branches/bcannon-objcap/Objects/object.c python/branches/bcannon-objcap/Objects/obmalloc.c python/branches/bcannon-objcap/Objects/setobject.c python/branches/bcannon-objcap/Objects/sliceobject.c python/branches/bcannon-objcap/Objects/stringobject.c python/branches/bcannon-objcap/Objects/structseq.c python/branches/bcannon-objcap/Objects/tupleobject.c python/branches/bcannon-objcap/Objects/typeobject.c python/branches/bcannon-objcap/Objects/unicodeobject.c python/branches/bcannon-objcap/Objects/weakrefobject.c python/branches/bcannon-objcap/PC/_msi.c python/branches/bcannon-objcap/PC/_winreg.c python/branches/bcannon-objcap/PC/pyconfig.h python/branches/bcannon-objcap/PCbuild8/build.bat python/branches/bcannon-objcap/PCbuild8/readme.txt python/branches/bcannon-objcap/Parser/parsetok.c python/branches/bcannon-objcap/Parser/tokenizer.c python/branches/bcannon-objcap/Parser/tokenizer.h python/branches/bcannon-objcap/Python/ast.c python/branches/bcannon-objcap/Python/ceval.c python/branches/bcannon-objcap/Python/compile.c python/branches/bcannon-objcap/Python/import.c python/branches/bcannon-objcap/Python/structmember.c python/branches/bcannon-objcap/Python/symtable.c python/branches/bcannon-objcap/Python/traceback.c python/branches/bcannon-objcap/Tools/msi/msi.py python/branches/bcannon-objcap/Tools/msi/msilib.py python/branches/bcannon-objcap/Tools/scripts/setup.py python/branches/bcannon-objcap/configure python/branches/bcannon-objcap/configure.in python/branches/bcannon-objcap/pyconfig.h.in python/branches/bcannon-objcap/setup.py Log: Merged revisions 56058-57998 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk Modified: python/branches/bcannon-objcap/Include/abstract.h ============================================================================== --- python/branches/bcannon-objcap/Include/abstract.h (original) +++ python/branches/bcannon-objcap/Include/abstract.h Thu Sep 6 21:35:45 2007 @@ -1064,7 +1064,7 @@ */ #define PySequence_ITEM(o, i)\ - ( o->ob_type->tp_as_sequence->sq_item(o, i) ) + ( Py_Type(o)->tp_as_sequence->sq_item(o, i) ) /* Assume tp_as_sequence and sq_item exist and that i does not need to be corrected for a negative index */ Modified: python/branches/bcannon-objcap/Include/boolobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/boolobject.h (original) +++ python/branches/bcannon-objcap/Include/boolobject.h Thu Sep 6 21:35:45 2007 @@ -11,7 +11,7 @@ PyAPI_DATA(PyTypeObject) PyBool_Type; -#define PyBool_Check(x) ((x)->ob_type == &PyBool_Type) +#define PyBool_Check(x) (Py_Type(x) == &PyBool_Type) /* Py_False and Py_True are the only two bools in existence. Don't forget to apply Py_INCREF() when returning either!!! */ Modified: python/branches/bcannon-objcap/Include/bufferobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/bufferobject.h (original) +++ python/branches/bcannon-objcap/Include/bufferobject.h Thu Sep 6 21:35:45 2007 @@ -12,7 +12,7 @@ PyAPI_DATA(PyTypeObject) PyBuffer_Type; -#define PyBuffer_Check(op) ((op)->ob_type == &PyBuffer_Type) +#define PyBuffer_Check(op) (Py_Type(op) == &PyBuffer_Type) #define Py_END_OF_BUFFER (-1) Modified: python/branches/bcannon-objcap/Include/cStringIO.h ============================================================================== --- python/branches/bcannon-objcap/Include/cStringIO.h (original) +++ python/branches/bcannon-objcap/Include/cStringIO.h Thu Sep 6 21:35:45 2007 @@ -60,9 +60,9 @@ /* These can be used to test if you have one */ #define PycStringIO_InputCheck(O) \ - ((O)->ob_type==PycStringIO->InputType) + (Py_Type(O)==PycStringIO->InputType) #define PycStringIO_OutputCheck(O) \ - ((O)->ob_type==PycStringIO->OutputType) + (Py_Type(O)==PycStringIO->OutputType) #ifdef __cplusplus } Modified: python/branches/bcannon-objcap/Include/cellobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/cellobject.h (original) +++ python/branches/bcannon-objcap/Include/cellobject.h Thu Sep 6 21:35:45 2007 @@ -13,7 +13,7 @@ PyAPI_DATA(PyTypeObject) PyCell_Type; -#define PyCell_Check(op) ((op)->ob_type == &PyCell_Type) +#define PyCell_Check(op) (Py_Type(op) == &PyCell_Type) PyAPI_FUNC(PyObject *) PyCell_New(PyObject *); PyAPI_FUNC(PyObject *) PyCell_Get(PyObject *); Modified: python/branches/bcannon-objcap/Include/cobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/cobject.h (original) +++ python/branches/bcannon-objcap/Include/cobject.h Thu Sep 6 21:35:45 2007 @@ -16,7 +16,7 @@ PyAPI_DATA(PyTypeObject) PyCObject_Type; -#define PyCObject_Check(op) ((op)->ob_type == &PyCObject_Type) +#define PyCObject_Check(op) (Py_Type(op) == &PyCObject_Type) /* Create a PyCObject from a pointer to a C object and an optional destructor function. If the second argument is non-null, then it Modified: python/branches/bcannon-objcap/Include/code.h ============================================================================== --- python/branches/bcannon-objcap/Include/code.h (original) +++ python/branches/bcannon-objcap/Include/code.h Thu Sep 6 21:35:45 2007 @@ -60,7 +60,7 @@ PyAPI_DATA(PyTypeObject) PyCode_Type; -#define PyCode_Check(op) ((op)->ob_type == &PyCode_Type) +#define PyCode_Check(op) (Py_Type(op) == &PyCode_Type) #define PyCode_GetNumFree(op) (PyTuple_GET_SIZE((op)->co_freevars)) /* Public interface */ @@ -72,7 +72,7 @@ /* for internal use only */ #define _PyCode_GETCODEPTR(co, pp) \ - ((*(co)->co_code->ob_type->tp_as_buffer->bf_getreadbuffer) \ + ((*Py_Type((co)->co_code)->tp_as_buffer->bf_getreadbuffer) \ ((co)->co_code, 0, (void **)(pp))) typedef struct _addr_pair { Modified: python/branches/bcannon-objcap/Include/complexobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/complexobject.h (original) +++ python/branches/bcannon-objcap/Include/complexobject.h Thu Sep 6 21:35:45 2007 @@ -43,7 +43,7 @@ PyAPI_DATA(PyTypeObject) PyComplex_Type; #define PyComplex_Check(op) PyObject_TypeCheck(op, &PyComplex_Type) -#define PyComplex_CheckExact(op) ((op)->ob_type == &PyComplex_Type) +#define PyComplex_CheckExact(op) (Py_Type(op) == &PyComplex_Type) PyAPI_FUNC(PyObject *) PyComplex_FromCComplex(Py_complex); PyAPI_FUNC(PyObject *) PyComplex_FromDoubles(double real, double imag); Modified: python/branches/bcannon-objcap/Include/datetime.h ============================================================================== --- python/branches/bcannon-objcap/Include/datetime.h (original) +++ python/branches/bcannon-objcap/Include/datetime.h Thu Sep 6 21:35:45 2007 @@ -166,19 +166,19 @@ /* Macros for type checking when building the Python core. */ #define PyDate_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateType) -#define PyDate_CheckExact(op) ((op)->ob_type == &PyDateTime_DateType) +#define PyDate_CheckExact(op) (Py_Type(op) == &PyDateTime_DateType) #define PyDateTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateTimeType) -#define PyDateTime_CheckExact(op) ((op)->ob_type == &PyDateTime_DateTimeType) +#define PyDateTime_CheckExact(op) (Py_Type(op) == &PyDateTime_DateTimeType) #define PyTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_TimeType) -#define PyTime_CheckExact(op) ((op)->ob_type == &PyDateTime_TimeType) +#define PyTime_CheckExact(op) (Py_Type(op) == &PyDateTime_TimeType) #define PyDelta_Check(op) PyObject_TypeCheck(op, &PyDateTime_DeltaType) -#define PyDelta_CheckExact(op) ((op)->ob_type == &PyDateTime_DeltaType) +#define PyDelta_CheckExact(op) (Py_Type(op) == &PyDateTime_DeltaType) #define PyTZInfo_Check(op) PyObject_TypeCheck(op, &PyDateTime_TZInfoType) -#define PyTZInfo_CheckExact(op) ((op)->ob_type == &PyDateTime_TZInfoType) +#define PyTZInfo_CheckExact(op) (Py_Type(op) == &PyDateTime_TZInfoType) #else @@ -198,19 +198,19 @@ /* Macros for type checking when not building the Python core. */ #define PyDate_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateType) -#define PyDate_CheckExact(op) ((op)->ob_type == PyDateTimeAPI->DateType) +#define PyDate_CheckExact(op) (Py_Type(op) == PyDateTimeAPI->DateType) #define PyDateTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateTimeType) -#define PyDateTime_CheckExact(op) ((op)->ob_type == PyDateTimeAPI->DateTimeType) +#define PyDateTime_CheckExact(op) (Py_Type(op) == PyDateTimeAPI->DateTimeType) #define PyTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TimeType) -#define PyTime_CheckExact(op) ((op)->ob_type == PyDateTimeAPI->TimeType) +#define PyTime_CheckExact(op) (Py_Type(op) == PyDateTimeAPI->TimeType) #define PyDelta_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DeltaType) -#define PyDelta_CheckExact(op) ((op)->ob_type == PyDateTimeAPI->DeltaType) +#define PyDelta_CheckExact(op) (Py_Type(op) == PyDateTimeAPI->DeltaType) #define PyTZInfo_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TZInfoType) -#define PyTZInfo_CheckExact(op) ((op)->ob_type == PyDateTimeAPI->TZInfoType) +#define PyTZInfo_CheckExact(op) (Py_Type(op) == PyDateTimeAPI->TZInfoType) /* Macros for accessing constructors in a simplified fashion. */ #define PyDate_FromDate(year, month, day) \ Modified: python/branches/bcannon-objcap/Include/descrobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/descrobject.h (original) +++ python/branches/bcannon-objcap/Include/descrobject.h Thu Sep 6 21:35:45 2007 @@ -77,7 +77,7 @@ struct PyGetSetDef *); PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *, struct wrapperbase *, void *); -#define PyDescr_IsData(d) ((d)->ob_type->tp_descr_set != NULL) +#define PyDescr_IsData(d) (Py_Type(d)->tp_descr_set != NULL) PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *); PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *); Modified: python/branches/bcannon-objcap/Include/dictobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/dictobject.h (original) +++ python/branches/bcannon-objcap/Include/dictobject.h Thu Sep 6 21:35:45 2007 @@ -91,8 +91,8 @@ PyAPI_DATA(PyTypeObject) PyDict_Type; #define PyDict_Check(op) \ - PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_DICT_SUBCLASS) -#define PyDict_CheckExact(op) ((op)->ob_type == &PyDict_Type) + PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_DICT_SUBCLASS) +#define PyDict_CheckExact(op) (Py_Type(op) == &PyDict_Type) PyAPI_FUNC(PyObject *) PyDict_New(void); PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key); Modified: python/branches/bcannon-objcap/Include/fileobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/fileobject.h (original) +++ python/branches/bcannon-objcap/Include/fileobject.h Thu Sep 6 21:35:45 2007 @@ -30,7 +30,7 @@ PyAPI_DATA(PyTypeObject) PyFile_Type; #define PyFile_Check(op) PyObject_TypeCheck(op, &PyFile_Type) -#define PyFile_CheckExact(op) ((op)->ob_type == &PyFile_Type) +#define PyFile_CheckExact(op) (Py_Type(op) == &PyFile_Type) PyAPI_FUNC(PyObject *) PyFile_FromString(char *, char *); PyAPI_FUNC(void) PyFile_SetBufSize(PyObject *, int); Modified: python/branches/bcannon-objcap/Include/floatobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/floatobject.h (original) +++ python/branches/bcannon-objcap/Include/floatobject.h Thu Sep 6 21:35:45 2007 @@ -19,7 +19,7 @@ PyAPI_DATA(PyTypeObject) PyFloat_Type; #define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type) -#define PyFloat_CheckExact(op) ((op)->ob_type == &PyFloat_Type) +#define PyFloat_CheckExact(op) (Py_Type(op) == &PyFloat_Type) /* Return Python float from string PyObject. Second argument ignored on input, and, if non-NULL, NULL is stored into *junk (this tried to serve a Modified: python/branches/bcannon-objcap/Include/funcobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/funcobject.h (original) +++ python/branches/bcannon-objcap/Include/funcobject.h Thu Sep 6 21:35:45 2007 @@ -39,7 +39,7 @@ PyAPI_DATA(PyTypeObject) PyFunction_Type; -#define PyFunction_Check(op) ((op)->ob_type == &PyFunction_Type) +#define PyFunction_Check(op) (Py_Type(op) == &PyFunction_Type) PyAPI_FUNC(PyObject *) PyFunction_New(PyObject *, PyObject *); PyAPI_FUNC(PyObject *) PyFunction_GetCode(PyObject *); Modified: python/branches/bcannon-objcap/Include/genobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/genobject.h (original) +++ python/branches/bcannon-objcap/Include/genobject.h Thu Sep 6 21:35:45 2007 @@ -26,7 +26,7 @@ PyAPI_DATA(PyTypeObject) PyGen_Type; #define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type) -#define PyGen_CheckExact(op) ((op)->ob_type == &PyGen_Type) +#define PyGen_CheckExact(op) (Py_Type(op) == &PyGen_Type) PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *); PyAPI_FUNC(int) PyGen_NeedsFinalizing(PyGenObject *); Modified: python/branches/bcannon-objcap/Include/iterobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/iterobject.h (original) +++ python/branches/bcannon-objcap/Include/iterobject.h Thu Sep 6 21:35:45 2007 @@ -7,13 +7,13 @@ PyAPI_DATA(PyTypeObject) PySeqIter_Type; -#define PySeqIter_Check(op) ((op)->ob_type == &PySeqIter_Type) +#define PySeqIter_Check(op) (Py_Type(op) == &PySeqIter_Type) PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *); PyAPI_DATA(PyTypeObject) PyCallIter_Type; -#define PyCallIter_Check(op) ((op)->ob_type == &PyCallIter_Type) +#define PyCallIter_Check(op) (Py_Type(op) == &PyCallIter_Type) PyAPI_FUNC(PyObject *) PyCallIter_New(PyObject *, PyObject *); #ifdef __cplusplus Modified: python/branches/bcannon-objcap/Include/listobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/listobject.h (original) +++ python/branches/bcannon-objcap/Include/listobject.h Thu Sep 6 21:35:45 2007 @@ -41,8 +41,8 @@ PyAPI_DATA(PyTypeObject) PyList_Type; #define PyList_Check(op) \ - PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_LIST_SUBCLASS) -#define PyList_CheckExact(op) ((op)->ob_type == &PyList_Type) + PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_LIST_SUBCLASS) +#define PyList_CheckExact(op) (Py_Type(op) == &PyList_Type) PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size); PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *); @@ -60,7 +60,7 @@ /* Macro, trading safety for speed */ #define PyList_GET_ITEM(op, i) (((PyListObject *)(op))->ob_item[i]) #define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v)) -#define PyList_GET_SIZE(op) (((PyListObject *)(op))->ob_size) +#define PyList_GET_SIZE(op) Py_Size(op) #ifdef __cplusplus } Modified: python/branches/bcannon-objcap/Include/longobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/longobject.h (original) +++ python/branches/bcannon-objcap/Include/longobject.h Thu Sep 6 21:35:45 2007 @@ -12,8 +12,8 @@ PyAPI_DATA(PyTypeObject) PyLong_Type; #define PyLong_Check(op) \ - PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_LONG_SUBCLASS) -#define PyLong_CheckExact(op) ((op)->ob_type == &PyLong_Type) + PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_LONG_SUBCLASS) +#define PyLong_CheckExact(op) (Py_Type(op) == &PyLong_Type) PyAPI_FUNC(PyObject *) PyLong_FromLong(long); PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long); Modified: python/branches/bcannon-objcap/Include/methodobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/methodobject.h (original) +++ python/branches/bcannon-objcap/Include/methodobject.h Thu Sep 6 21:35:45 2007 @@ -13,7 +13,7 @@ PyAPI_DATA(PyTypeObject) PyCFunction_Type; -#define PyCFunction_Check(op) ((op)->ob_type == &PyCFunction_Type) +#define PyCFunction_Check(op) (Py_Type(op) == &PyCFunction_Type) typedef PyObject *(*PyCFunction)(PyObject *, PyObject *); typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *, Modified: python/branches/bcannon-objcap/Include/moduleobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/moduleobject.h (original) +++ python/branches/bcannon-objcap/Include/moduleobject.h Thu Sep 6 21:35:45 2007 @@ -10,7 +10,7 @@ PyAPI_DATA(PyTypeObject) PyModule_Type; #define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type) -#define PyModule_CheckExact(op) ((op)->ob_type == &PyModule_Type) +#define PyModule_CheckExact(op) (Py_Type(op) == &PyModule_Type) PyAPI_FUNC(PyObject *) PyModule_New(const char *); PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *); Modified: python/branches/bcannon-objcap/Include/object.h ============================================================================== --- python/branches/bcannon-objcap/Include/object.h (original) +++ python/branches/bcannon-objcap/Include/object.h Thu Sep 6 21:35:45 2007 @@ -84,6 +84,9 @@ _PyObject_EXTRA_INIT \ 1, type, +#define PyVarObject_HEAD_INIT(type, size) \ + PyObject_HEAD_INIT(type) size, + /* PyObject_VAR_HEAD defines the initial segment of all variable-size * container objects. These end with a declaration of an array with 1 * element, but enough space is malloc'ed so that the array actually @@ -108,6 +111,9 @@ PyObject_VAR_HEAD } PyVarObject; +#define Py_Refcnt(ob) (((PyObject*)(ob))->ob_refcnt) +#define Py_Type(ob) (((PyObject*)(ob))->ob_type) +#define Py_Size(ob) (((PyVarObject*)(ob))->ob_size) /* Type objects contain a string containing the type name (to help somewhat @@ -364,21 +370,21 @@ /* access macro to the members which are floating "behind" the object */ #define PyHeapType_GET_MEMBERS(etype) \ - ((PyMemberDef *)(((char *)etype) + (etype)->ht_type.ob_type->tp_basicsize)) + ((PyMemberDef *)(((char *)etype) + Py_Type(etype)->tp_basicsize)) /* Generic type check */ PyAPI_FUNC(int) PyType_IsSubtype(PyTypeObject *, PyTypeObject *); #define PyObject_TypeCheck(ob, tp) \ - ((ob)->ob_type == (tp) || PyType_IsSubtype((ob)->ob_type, (tp))) + (Py_Type(ob) == (tp) || PyType_IsSubtype(Py_Type(ob), (tp))) PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */ PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */ PyAPI_DATA(PyTypeObject) PySuper_Type; /* built-in 'super' */ #define PyType_Check(op) \ - PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_TYPE_SUBCLASS) -#define PyType_CheckExact(op) ((op)->ob_type == &PyType_Type) + PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_TYPE_SUBCLASS) +#define PyType_CheckExact(op) (Py_Type(op) == &PyType_Type) PyAPI_FUNC(int) PyType_Ready(PyTypeObject *); PyAPI_FUNC(PyObject *) PyType_GenericAlloc(PyTypeObject *, Py_ssize_t); @@ -599,7 +605,7 @@ #define _Py_DEC_REFTOTAL _Py_RefTotal-- #define _Py_REF_DEBUG_COMMA , #define _Py_CHECK_REFCNT(OP) \ -{ if ((OP)->ob_refcnt < 0) \ +{ if (((PyObject*)OP)->ob_refcnt < 0) \ _Py_NegativeRefcount(__FILE__, __LINE__, \ (PyObject *)(OP)); \ } @@ -613,9 +619,9 @@ #ifdef COUNT_ALLOCS PyAPI_FUNC(void) inc_count(PyTypeObject *); PyAPI_FUNC(void) dec_count(PyTypeObject *); -#define _Py_INC_TPALLOCS(OP) inc_count((OP)->ob_type) -#define _Py_INC_TPFREES(OP) dec_count((OP)->ob_type) -#define _Py_DEC_TPFREES(OP) (OP)->ob_type->tp_frees-- +#define _Py_INC_TPALLOCS(OP) inc_count(Py_Type(OP)) +#define _Py_INC_TPFREES(OP) dec_count(Py_Type(OP)) +#define _Py_DEC_TPFREES(OP) Py_Type(OP)->tp_frees-- #define _Py_COUNT_ALLOCS_COMMA , #else #define _Py_INC_TPALLOCS(OP) @@ -640,22 +646,22 @@ #define _Py_NewReference(op) ( \ _Py_INC_TPALLOCS(op) _Py_COUNT_ALLOCS_COMMA \ _Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \ - (op)->ob_refcnt = 1) + Py_Refcnt(op) = 1) #define _Py_ForgetReference(op) _Py_INC_TPFREES(op) #define _Py_Dealloc(op) ( \ _Py_INC_TPFREES(op) _Py_COUNT_ALLOCS_COMMA \ - (*(op)->ob_type->tp_dealloc)((PyObject *)(op))) + (*Py_Type(op)->tp_dealloc)((PyObject *)(op))) #endif /* !Py_TRACE_REFS */ #define Py_INCREF(op) ( \ _Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \ - (op)->ob_refcnt++) + ((PyObject*)(op))->ob_refcnt++) #define Py_DECREF(op) \ if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \ - --(op)->ob_refcnt != 0) \ + --((PyObject*)(op))->ob_refcnt != 0) \ _Py_CHECK_REFCNT(op) \ else \ _Py_Dealloc((PyObject *)(op)) Modified: python/branches/bcannon-objcap/Include/objimpl.h ============================================================================== --- python/branches/bcannon-objcap/Include/objimpl.h (original) +++ python/branches/bcannon-objcap/Include/objimpl.h Thu Sep 6 21:35:45 2007 @@ -154,9 +154,9 @@ /* Macros trading binary compatibility for speed. See also pymem.h. Note that these macros expect non-NULL object pointers.*/ #define PyObject_INIT(op, typeobj) \ - ( (op)->ob_type = (typeobj), _Py_NewReference((PyObject *)(op)), (op) ) + ( Py_Type(op) = (typeobj), _Py_NewReference((PyObject *)(op)), (op) ) #define PyObject_INIT_VAR(op, typeobj, size) \ - ( (op)->ob_size = (size), PyObject_INIT((op), (typeobj)) ) + ( Py_Size(op) = (size), PyObject_INIT((op), (typeobj)) ) #define _PyObject_SIZE(typeobj) ( (typeobj)->tp_basicsize ) @@ -231,8 +231,8 @@ #define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC) /* Test if an object has a GC head */ -#define PyObject_IS_GC(o) (PyType_IS_GC((o)->ob_type) && \ - ((o)->ob_type->tp_is_gc == NULL || (o)->ob_type->tp_is_gc(o))) +#define PyObject_IS_GC(o) (PyType_IS_GC(Py_Type(o)) && \ + (Py_Type(o)->tp_is_gc == NULL || Py_Type(o)->tp_is_gc(o))) PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); #define PyObject_GC_Resize(type, op, n) \ @@ -328,7 +328,7 @@ && ((t)->tp_weaklistoffset > 0)) #define PyObject_GET_WEAKREFS_LISTPTR(o) \ - ((PyObject **) (((char *) (o)) + (o)->ob_type->tp_weaklistoffset)) + ((PyObject **) (((char *) (o)) + Py_Type(o)->tp_weaklistoffset)) #ifdef __cplusplus } Modified: python/branches/bcannon-objcap/Include/opcode.h ============================================================================== --- python/branches/bcannon-objcap/Include/opcode.h (original) +++ python/branches/bcannon-objcap/Include/opcode.h Thu Sep 6 21:35:45 2007 @@ -112,7 +112,7 @@ #define LOAD_GLOBAL 116 /* Index in name list */ #define CONTINUE_LOOP 119 /* Start of loop (absolute) */ -#define SETUP_LOOP 120 /* Target address (absolute) */ +#define SETUP_LOOP 120 /* Target address (relative) */ #define SETUP_EXCEPT 121 /* "" */ #define SETUP_FINALLY 122 /* "" */ Modified: python/branches/bcannon-objcap/Include/py_curses.h ============================================================================== --- python/branches/bcannon-objcap/Include/py_curses.h (original) +++ python/branches/bcannon-objcap/Include/py_curses.h Thu Sep 6 21:35:45 2007 @@ -73,7 +73,7 @@ WINDOW *win; } PyCursesWindowObject; -#define PyCursesWindow_Check(v) ((v)->ob_type == &PyCursesWindow_Type) +#define PyCursesWindow_Check(v) (Py_Type(v) == &PyCursesWindow_Type) #ifdef CURSES_MODULE /* This section is used when compiling _cursesmodule.c */ Modified: python/branches/bcannon-objcap/Include/rangeobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/rangeobject.h (original) +++ python/branches/bcannon-objcap/Include/rangeobject.h Thu Sep 6 21:35:45 2007 @@ -20,7 +20,7 @@ PyAPI_DATA(PyTypeObject) PyRange_Type; -#define PyRange_Check(op) ((op)->ob_type == &PyRange_Type) +#define PyRange_Check(op) (Py_Type(op) == &PyRange_Type) #ifdef __cplusplus } Modified: python/branches/bcannon-objcap/Include/setobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/setobject.h (original) +++ python/branches/bcannon-objcap/Include/setobject.h Thu Sep 6 21:35:45 2007 @@ -66,13 +66,13 @@ * hash is -1 */ -#define PyFrozenSet_CheckExact(ob) ((ob)->ob_type == &PyFrozenSet_Type) +#define PyFrozenSet_CheckExact(ob) (Py_Type(ob) == &PyFrozenSet_Type) #define PyAnySet_CheckExact(ob) \ - ((ob)->ob_type == &PySet_Type || (ob)->ob_type == &PyFrozenSet_Type) + (Py_Type(ob) == &PySet_Type || Py_Type(ob) == &PyFrozenSet_Type) #define PyAnySet_Check(ob) \ - ((ob)->ob_type == &PySet_Type || (ob)->ob_type == &PyFrozenSet_Type || \ - PyType_IsSubtype((ob)->ob_type, &PySet_Type) || \ - PyType_IsSubtype((ob)->ob_type, &PyFrozenSet_Type)) + (Py_Type(ob) == &PySet_Type || Py_Type(ob) == &PyFrozenSet_Type || \ + PyType_IsSubtype(Py_Type(ob), &PySet_Type) || \ + PyType_IsSubtype(Py_Type(ob), &PyFrozenSet_Type)) PyAPI_FUNC(PyObject *) PySet_New(PyObject *); PyAPI_FUNC(PyObject *) PyFrozenSet_New(PyObject *); Modified: python/branches/bcannon-objcap/Include/sliceobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/sliceobject.h (original) +++ python/branches/bcannon-objcap/Include/sliceobject.h Thu Sep 6 21:35:45 2007 @@ -26,7 +26,7 @@ PyAPI_DATA(PyTypeObject) PySlice_Type; -#define PySlice_Check(op) ((op)->ob_type == &PySlice_Type) +#define PySlice_Check(op) (Py_Type(op) == &PySlice_Type) PyAPI_FUNC(PyObject *) PySlice_New(PyObject* start, PyObject* stop, PyObject* step); Modified: python/branches/bcannon-objcap/Include/stringobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/stringobject.h (original) +++ python/branches/bcannon-objcap/Include/stringobject.h Thu Sep 6 21:35:45 2007 @@ -56,8 +56,8 @@ PyAPI_DATA(PyTypeObject) PyString_Type; #define PyString_Check(op) \ - PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_STRING_SUBCLASS) -#define PyString_CheckExact(op) ((op)->ob_type == &PyString_Type) + PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_STRING_SUBCLASS) +#define PyString_CheckExact(op) (Py_Type(op) == &PyString_Type) PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t); PyAPI_FUNC(PyObject *) PyString_FromString(const char *); @@ -89,7 +89,7 @@ /* Macro, trading safety for speed */ #define PyString_AS_STRING(op) (((PyStringObject *)(op))->ob_sval) -#define PyString_GET_SIZE(op) (((PyStringObject *)(op))->ob_size) +#define PyString_GET_SIZE(op) Py_Size(op) /* _PyString_Join(sep, x) is like sep.join(x). sep must be PyStringObject*, x must be an iterable object. */ Modified: python/branches/bcannon-objcap/Include/structmember.h ============================================================================== --- python/branches/bcannon-objcap/Include/structmember.h (original) +++ python/branches/bcannon-objcap/Include/structmember.h Thu Sep 6 21:35:45 2007 @@ -68,9 +68,11 @@ #ifdef HAVE_LONG_LONG #define T_LONGLONG 17 #define T_ULONGLONG 18 -#define T_PYSSIZET 19 /* Py_ssize_t */ #endif /* HAVE_LONG_LONG */ +#define T_PYSSIZET 19 /* Py_ssize_t */ + + /* Flags */ #define READONLY 1 #define RO READONLY /* Shorthand */ Modified: python/branches/bcannon-objcap/Include/symtable.h ============================================================================== --- python/branches/bcannon-objcap/Include/symtable.h (original) +++ python/branches/bcannon-objcap/Include/symtable.h Thu Sep 6 21:35:45 2007 @@ -49,7 +49,7 @@ PyAPI_DATA(PyTypeObject) PySTEntry_Type; -#define PySTEntry_Check(op) ((op)->ob_type == &PySTEntry_Type) +#define PySTEntry_Check(op) (Py_Type(op) == &PySTEntry_Type) PyAPI_FUNC(int) PyST_GetScope(PySTEntryObject *, PyObject *); Modified: python/branches/bcannon-objcap/Include/traceback.h ============================================================================== --- python/branches/bcannon-objcap/Include/traceback.h (original) +++ python/branches/bcannon-objcap/Include/traceback.h Thu Sep 6 21:35:45 2007 @@ -22,7 +22,7 @@ /* Reveal traceback type so we can typecheck traceback objects */ PyAPI_DATA(PyTypeObject) PyTraceBack_Type; -#define PyTraceBack_Check(v) ((v)->ob_type == &PyTraceBack_Type) +#define PyTraceBack_Check(v) (Py_Type(v) == &PyTraceBack_Type) #ifdef __cplusplus } Modified: python/branches/bcannon-objcap/Include/tupleobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/tupleobject.h (original) +++ python/branches/bcannon-objcap/Include/tupleobject.h Thu Sep 6 21:35:45 2007 @@ -34,8 +34,8 @@ PyAPI_DATA(PyTypeObject) PyTuple_Type; #define PyTuple_Check(op) \ - PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_TUPLE_SUBCLASS) -#define PyTuple_CheckExact(op) ((op)->ob_type == &PyTuple_Type) + PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_TUPLE_SUBCLASS) +#define PyTuple_CheckExact(op) (Py_Type(op) == &PyTuple_Type) PyAPI_FUNC(PyObject *) PyTuple_New(Py_ssize_t size); PyAPI_FUNC(Py_ssize_t) PyTuple_Size(PyObject *); @@ -47,7 +47,7 @@ /* Macro, trading safety for speed */ #define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i]) -#define PyTuple_GET_SIZE(op) (((PyTupleObject *)(op))->ob_size) +#define PyTuple_GET_SIZE(op) Py_Size(op) /* Macro, *only* to be used to fill in brand new tuples */ #define PyTuple_SET_ITEM(op, i, v) (((PyTupleObject *)(op))->ob_item[i] = v) Modified: python/branches/bcannon-objcap/Include/unicodeobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/unicodeobject.h (original) +++ python/branches/bcannon-objcap/Include/unicodeobject.h Thu Sep 6 21:35:45 2007 @@ -145,6 +145,7 @@ # define PyUnicode_AsEncodedString PyUnicodeUCS2_AsEncodedString # define PyUnicode_AsLatin1String PyUnicodeUCS2_AsLatin1String # define PyUnicode_AsRawUnicodeEscapeString PyUnicodeUCS2_AsRawUnicodeEscapeString +# define PyUnicode_AsUTF32String PyUnicodeUCS2_AsUTF32String # define PyUnicode_AsUTF16String PyUnicodeUCS2_AsUTF16String # define PyUnicode_AsUTF8String PyUnicodeUCS2_AsUTF8String # define PyUnicode_AsUnicode PyUnicodeUCS2_AsUnicode @@ -159,6 +160,8 @@ # define PyUnicode_DecodeCharmap PyUnicodeUCS2_DecodeCharmap # define PyUnicode_DecodeLatin1 PyUnicodeUCS2_DecodeLatin1 # define PyUnicode_DecodeRawUnicodeEscape PyUnicodeUCS2_DecodeRawUnicodeEscape +# define PyUnicode_DecodeUTF32 PyUnicodeUCS2_DecodeUTF32 +# define PyUnicode_DecodeUTF32Stateful PyUnicodeUCS2_DecodeUTF32Stateful # define PyUnicode_DecodeUTF16 PyUnicodeUCS2_DecodeUTF16 # define PyUnicode_DecodeUTF16Stateful PyUnicodeUCS2_DecodeUTF16Stateful # define PyUnicode_DecodeUTF8 PyUnicodeUCS2_DecodeUTF8 @@ -170,6 +173,7 @@ # define PyUnicode_EncodeDecimal PyUnicodeUCS2_EncodeDecimal # define PyUnicode_EncodeLatin1 PyUnicodeUCS2_EncodeLatin1 # define PyUnicode_EncodeRawUnicodeEscape PyUnicodeUCS2_EncodeRawUnicodeEscape +# define PyUnicode_EncodeUTF32 PyUnicodeUCS2_EncodeUTF32 # define PyUnicode_EncodeUTF16 PyUnicodeUCS2_EncodeUTF16 # define PyUnicode_EncodeUTF8 PyUnicodeUCS2_EncodeUTF8 # define PyUnicode_EncodeUnicodeEscape PyUnicodeUCS2_EncodeUnicodeEscape @@ -223,6 +227,7 @@ # define PyUnicode_AsEncodedString PyUnicodeUCS4_AsEncodedString # define PyUnicode_AsLatin1String PyUnicodeUCS4_AsLatin1String # define PyUnicode_AsRawUnicodeEscapeString PyUnicodeUCS4_AsRawUnicodeEscapeString +# define PyUnicode_AsUTF32String PyUnicodeUCS4_AsUTF32String # define PyUnicode_AsUTF16String PyUnicodeUCS4_AsUTF16String # define PyUnicode_AsUTF8String PyUnicodeUCS4_AsUTF8String # define PyUnicode_AsUnicode PyUnicodeUCS4_AsUnicode @@ -237,6 +242,8 @@ # define PyUnicode_DecodeCharmap PyUnicodeUCS4_DecodeCharmap # define PyUnicode_DecodeLatin1 PyUnicodeUCS4_DecodeLatin1 # define PyUnicode_DecodeRawUnicodeEscape PyUnicodeUCS4_DecodeRawUnicodeEscape +# define PyUnicode_DecodeUTF32 PyUnicodeUCS4_DecodeUTF32 +# define PyUnicode_DecodeUTF32Stateful PyUnicodeUCS4_DecodeUTF32Stateful # define PyUnicode_DecodeUTF16 PyUnicodeUCS4_DecodeUTF16 # define PyUnicode_DecodeUTF16Stateful PyUnicodeUCS4_DecodeUTF16Stateful # define PyUnicode_DecodeUTF8 PyUnicodeUCS4_DecodeUTF8 @@ -248,6 +255,7 @@ # define PyUnicode_EncodeDecimal PyUnicodeUCS4_EncodeDecimal # define PyUnicode_EncodeLatin1 PyUnicodeUCS4_EncodeLatin1 # define PyUnicode_EncodeRawUnicodeEscape PyUnicodeUCS4_EncodeRawUnicodeEscape +# define PyUnicode_EncodeUTF32 PyUnicodeUCS4_EncodeUTF32 # define PyUnicode_EncodeUTF16 PyUnicodeUCS4_EncodeUTF16 # define PyUnicode_EncodeUTF8 PyUnicodeUCS4_EncodeUTF8 # define PyUnicode_EncodeUnicodeEscape PyUnicodeUCS4_EncodeUnicodeEscape @@ -393,8 +401,8 @@ PyAPI_DATA(PyTypeObject) PyUnicode_Type; #define PyUnicode_Check(op) \ - PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_UNICODE_SUBCLASS) -#define PyUnicode_CheckExact(op) ((op)->ob_type == &PyUnicode_Type) + PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_UNICODE_SUBCLASS) +#define PyUnicode_CheckExact(op) (Py_Type(op) == &PyUnicode_Type) /* Fast access macros */ #define PyUnicode_GET_SIZE(op) \ @@ -701,6 +709,80 @@ const char *errors /* error handling */ ); +/* --- UTF-32 Codecs ------------------------------------------------------ */ + +/* Decodes length bytes from a UTF-32 encoded buffer string and returns + the corresponding Unicode object. + + errors (if non-NULL) defines the error handling. It defaults + to "strict". + + If byteorder is non-NULL, the decoder starts decoding using the + given byte order: + + *byteorder == -1: little endian + *byteorder == 0: native order + *byteorder == 1: big endian + + In native mode, the first four bytes of the stream are checked for a + BOM mark. If found, the BOM mark is analysed, the byte order + adjusted and the BOM skipped. In the other modes, no BOM mark + interpretation is done. After completion, *byteorder is set to the + current byte order at the end of input data. + + If byteorder is NULL, the codec starts in native order mode. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32( + const char *string, /* UTF-32 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + int *byteorder /* pointer to byteorder to use + 0=native;-1=LE,1=BE; updated on + exit */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32Stateful( + const char *string, /* UTF-32 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + int *byteorder, /* pointer to byteorder to use + 0=native;-1=LE,1=BE; updated on + exit */ + Py_ssize_t *consumed /* bytes consumed */ + ); + +/* Returns a Python string using the UTF-32 encoding in native byte + order. The string always starts with a BOM mark. */ + +PyAPI_FUNC(PyObject*) PyUnicode_AsUTF32String( + PyObject *unicode /* Unicode object */ + ); + +/* Returns a Python string object holding the UTF-32 encoded value of + the Unicode data. + + If byteorder is not 0, output is written according to the following + byte order: + + byteorder == -1: little endian + byteorder == 0: native byte order (writes a BOM mark) + byteorder == 1: big endian + + If byteorder is 0, the output string will always start with the + Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is + prepended. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF32( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); + /* --- UTF-16 Codecs ------------------------------------------------------ */ /* Decodes length bytes from a UTF-16 encoded buffer string and returns Modified: python/branches/bcannon-objcap/Include/weakrefobject.h ============================================================================== --- python/branches/bcannon-objcap/Include/weakrefobject.h (original) +++ python/branches/bcannon-objcap/Include/weakrefobject.h Thu Sep 6 21:35:45 2007 @@ -44,10 +44,10 @@ #define PyWeakref_CheckRef(op) PyObject_TypeCheck(op, &_PyWeakref_RefType) #define PyWeakref_CheckRefExact(op) \ - ((op)->ob_type == &_PyWeakref_RefType) + (Py_Type(op) == &_PyWeakref_RefType) #define PyWeakref_CheckProxy(op) \ - (((op)->ob_type == &_PyWeakref_ProxyType) || \ - ((op)->ob_type == &_PyWeakref_CallableProxyType)) + ((Py_Type(op) == &_PyWeakref_ProxyType) || \ + (Py_Type(op) == &_PyWeakref_CallableProxyType)) /* This macro calls PyWeakref_CheckRef() last since that can involve a function call; this makes it more likely that the function call Modified: python/branches/bcannon-objcap/Lib/SimpleXMLRPCServer.py ============================================================================== --- python/branches/bcannon-objcap/Lib/SimpleXMLRPCServer.py (original) +++ python/branches/bcannon-objcap/Lib/SimpleXMLRPCServer.py Thu Sep 6 21:35:45 2007 @@ -105,6 +105,7 @@ import BaseHTTPServer import sys import os +import traceback try: import fcntl except ImportError: @@ -470,9 +471,16 @@ response = self.server._marshaled_dispatch( data, getattr(self, '_dispatch', None) ) - except: # This should only happen if the module is buggy + except Exception, e: # This should only happen if the module is buggy # internal error, report as HTTP server error self.send_response(500) + + # Send information about the exception if requested + if hasattr(self.server, '_send_traceback_header') and \ + self.server._send_traceback_header: + self.send_header("X-exception", str(e)) + self.send_header("X-traceback", traceback.format_exc()) + self.end_headers() else: # got a valid XML RPC response @@ -517,6 +525,12 @@ allow_reuse_address = True + # Warning: this is for debugging purposes only! Never set this to True in + # production code, as will be sending out sensitive information (exception + # and stack trace details) when exceptions are raised inside + # SimpleXMLRPCRequestHandler.do_POST + _send_traceback_header = False + def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler, logRequests=True, allow_none=False, encoding=None, bind_and_activate=True): self.logRequests = logRequests Modified: python/branches/bcannon-objcap/Lib/UserString.py ============================================================================== --- python/branches/bcannon-objcap/Lib/UserString.py (original) +++ python/branches/bcannon-objcap/Lib/UserString.py Thu Sep 6 21:35:45 2007 @@ -149,15 +149,41 @@ def __hash__(self): raise TypeError, "unhashable type (it is mutable)" def __setitem__(self, index, sub): - if index < 0: - index += len(self.data) - if index < 0 or index >= len(self.data): raise IndexError - self.data = self.data[:index] + sub + self.data[index+1:] + if isinstance(index, slice): + if isinstance(sub, UserString): + sub = sub.data + elif not isinstance(sub, basestring): + sub = str(sub) + start, stop, step = index.indices(len(self.data)) + if step == -1: + start, stop = stop+1, start+1 + sub = sub[::-1] + elif step != 1: + # XXX(twouters): I guess we should be reimplementing + # the extended slice assignment/deletion algorithm here... + raise TypeError, "invalid step in slicing assignment" + start = min(start, stop) + self.data = self.data[:start] + sub + self.data[stop:] + else: + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): raise IndexError + self.data = self.data[:index] + sub + self.data[index+1:] def __delitem__(self, index): - if index < 0: - index += len(self.data) - if index < 0 or index >= len(self.data): raise IndexError - self.data = self.data[:index] + self.data[index+1:] + if isinstance(index, slice): + start, stop, step = index.indices(len(self.data)) + if step == -1: + start, stop = stop+1, start+1 + elif step != 1: + # XXX(twouters): see same block in __setitem__ + raise TypeError, "invalid step in slicing deletion" + start = min(start, stop) + self.data = self.data[:start] + self.data[stop:] + else: + if index < 0: + index += len(self.data) + if index < 0 or index >= len(self.data): raise IndexError + self.data = self.data[:index] + self.data[index+1:] def __setslice__(self, start, end, sub): start = max(start, 0); end = max(end, 0) if isinstance(sub, UserString): Modified: python/branches/bcannon-objcap/Lib/bsddb/__init__.py ============================================================================== --- python/branches/bcannon-objcap/Lib/bsddb/__init__.py (original) +++ python/branches/bcannon-objcap/Lib/bsddb/__init__.py Thu Sep 6 21:35:45 2007 @@ -274,12 +274,16 @@ def first(self): self._checkOpen() + # fix 1725856: don't needlessly try to restore our cursor position + self.saved_dbc_key = None self._checkCursor() rv = _DeadlockWrap(self.dbc.first) return rv def last(self): self._checkOpen() + # fix 1725856: don't needlessly try to restore our cursor position + self.saved_dbc_key = None self._checkCursor() rv = _DeadlockWrap(self.dbc.last) return rv Modified: python/branches/bcannon-objcap/Lib/bsddb/test/test_1413192.py ============================================================================== --- python/branches/bcannon-objcap/Lib/bsddb/test/test_1413192.py (original) +++ python/branches/bcannon-objcap/Lib/bsddb/test/test_1413192.py Thu Sep 6 21:35:45 2007 @@ -4,6 +4,8 @@ # This test relies on the variable names, see the bug report for details. # The problem was that the env was deallocated prior to the txn. +import shutil +import tempfile try: # For Pythons w/distutils and add-on pybsddb from bsddb3 import db @@ -11,7 +13,7 @@ # For Python >= 2.3 builtin bsddb distribution from bsddb import db -env_name = '.' +env_name = tempfile.mkdtemp() env = db.DBEnv() env.open(env_name, db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) @@ -19,3 +21,9 @@ map = db.DB(env) map.open('xxx.db', "p", db.DB_HASH, db.DB_CREATE, 0666, txn=the_txn) + +# try not to leave a turd (won't help Windows since files are still open) +try: + shutil.rmtree(env_name) +except EnvironmentError: + pass Modified: python/branches/bcannon-objcap/Lib/calendar.py ============================================================================== --- python/branches/bcannon-objcap/Lib/calendar.py (original) +++ python/branches/bcannon-objcap/Lib/calendar.py Thu Sep 6 21:35:45 2007 @@ -471,7 +471,7 @@ a('\n' % encoding) if css is not None: a('\n' % css) - a('Calendar for %d</title\n' % theyear) + a('<title>Calendar for %d\n' % theyear) a('\n') a('\n') a(self.formatyear(theyear, width)) Modified: python/branches/bcannon-objcap/Lib/contextlib.py ============================================================================== --- python/branches/bcannon-objcap/Lib/contextlib.py (original) +++ python/branches/bcannon-objcap/Lib/contextlib.py Thu Sep 6 21:35:45 2007 @@ -105,15 +105,14 @@ vars = [] exc = (None, None, None) try: - try: - for mgr in managers: - exit = mgr.__exit__ - enter = mgr.__enter__ - vars.append(enter()) - exits.append(exit) - yield vars - except: - exc = sys.exc_info() + for mgr in managers: + exit = mgr.__exit__ + enter = mgr.__enter__ + vars.append(enter()) + exits.append(exit) + yield vars + except: + exc = sys.exc_info() finally: while exits: exit = exits.pop() Modified: python/branches/bcannon-objcap/Lib/ctypes/__init__.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/__init__.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/__init__.py Thu Sep 6 21:35:45 2007 @@ -226,6 +226,14 @@ class c_char_p(_SimpleCData): _type_ = "z" + if _os.name == "nt": + def __repr__(self): + if not windll.kernel32.IsBadStringPtrA(self, -1): + return "%s(%r)" % (self.__class__.__name__, self.value) + return "%s(%s)" % (self.__class__.__name__, cast(self, c_void_p).value) + else: + def __repr__(self): + return "%s(%s)" % (self.__class__.__name__, cast(self, c_void_p).value) _check_size(c_char_p, "P") class c_void_p(_SimpleCData): @@ -331,7 +339,7 @@ ['qsort'] -> callable object Calling the functions releases the Python GIL during the call and - reaquires it afterwards. + reacquires it afterwards. """ class _FuncPtr(_CFuncPtr): _flags_ = _FUNCFLAG_CDECL Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_arrays.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_arrays.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_arrays.py Thu Sep 6 21:35:45 2007 @@ -95,6 +95,10 @@ p = create_string_buffer("foo") sz = (c_char * 3).from_address(addressof(p)) self.failUnlessEqual(sz[:], "foo") + self.failUnlessEqual(sz[::], "foo") + self.failUnlessEqual(sz[::-1], "oof") + self.failUnlessEqual(sz[::3], "f") + self.failUnlessEqual(sz[1:4:2], "o") self.failUnlessEqual(sz.value, "foo") try: @@ -106,6 +110,10 @@ p = create_unicode_buffer("foo") sz = (c_wchar * 3).from_address(addressof(p)) self.failUnlessEqual(sz[:], "foo") + self.failUnlessEqual(sz[::], "foo") + self.failUnlessEqual(sz[::-1], "oof") + self.failUnlessEqual(sz[::3], "f") + self.failUnlessEqual(sz[1:4:2], "o") self.failUnlessEqual(sz.value, "foo") if __name__ == '__main__': Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_buffers.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_buffers.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_buffers.py Thu Sep 6 21:35:45 2007 @@ -15,6 +15,10 @@ self.failUnless(type(b[0]) is str) self.failUnlessEqual(b[0], "a") self.failUnlessEqual(b[:], "abc\0") + self.failUnlessEqual(b[::], "abc\0") + self.failUnlessEqual(b[::-1], "\0cba") + self.failUnlessEqual(b[::2], "ac") + self.failUnlessEqual(b[::5], "a") def test_string_conversion(self): b = create_string_buffer(u"abc") @@ -23,6 +27,10 @@ self.failUnless(type(b[0]) is str) self.failUnlessEqual(b[0], "a") self.failUnlessEqual(b[:], "abc\0") + self.failUnlessEqual(b[::], "abc\0") + self.failUnlessEqual(b[::-1], "\0cba") + self.failUnlessEqual(b[::2], "ac") + self.failUnlessEqual(b[::5], "a") try: c_wchar @@ -41,6 +49,10 @@ self.failUnless(type(b[0]) is unicode) self.failUnlessEqual(b[0], u"a") self.failUnlessEqual(b[:], "abc\0") + self.failUnlessEqual(b[::], "abc\0") + self.failUnlessEqual(b[::-1], "\0cba") + self.failUnlessEqual(b[::2], "ac") + self.failUnlessEqual(b[::5], "a") def test_unicode_conversion(self): b = create_unicode_buffer("abc") @@ -49,6 +61,10 @@ self.failUnless(type(b[0]) is unicode) self.failUnlessEqual(b[0], u"a") self.failUnlessEqual(b[:], "abc\0") + self.failUnlessEqual(b[::], "abc\0") + self.failUnlessEqual(b[::-1], "\0cba") + self.failUnlessEqual(b[::2], "ac") + self.failUnlessEqual(b[::5], "a") if __name__ == "__main__": unittest.main() Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_cast.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_cast.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_cast.py Thu Sep 6 21:35:45 2007 @@ -50,12 +50,24 @@ def test_other(self): p = cast((c_int * 4)(1, 2, 3, 4), POINTER(c_int)) self.failUnlessEqual(p[:4], [1,2, 3, 4]) + self.failUnlessEqual(p[:4:], [1, 2, 3, 4]) + self.failUnlessEqual(p[3:-1:-1], [4, 3, 2, 1]) + self.failUnlessEqual(p[:4:3], [1, 4]) c_int() self.failUnlessEqual(p[:4], [1, 2, 3, 4]) + self.failUnlessEqual(p[:4:], [1, 2, 3, 4]) + self.failUnlessEqual(p[3:-1:-1], [4, 3, 2, 1]) + self.failUnlessEqual(p[:4:3], [1, 4]) p[2] = 96 self.failUnlessEqual(p[:4], [1, 2, 96, 4]) + self.failUnlessEqual(p[:4:], [1, 2, 96, 4]) + self.failUnlessEqual(p[3:-1:-1], [4, 96, 2, 1]) + self.failUnlessEqual(p[:4:3], [1, 4]) c_int() self.failUnlessEqual(p[:4], [1, 2, 96, 4]) + self.failUnlessEqual(p[:4:], [1, 2, 96, 4]) + self.failUnlessEqual(p[3:-1:-1], [4, 96, 2, 1]) + self.failUnlessEqual(p[:4:3], [1, 4]) def test_char_p(self): # This didn't work: bad argument to internal function Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_find.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_find.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_find.py Thu Sep 6 21:35:45 2007 @@ -7,25 +7,21 @@ if sys.platform == "win32": lib_gl = find_library("OpenGL32") lib_glu = find_library("Glu32") - lib_glut = find_library("glut32") lib_gle = None elif sys.platform == "darwin": lib_gl = lib_glu = find_library("OpenGL") - lib_glut = find_library("GLUT") lib_gle = None else: lib_gl = find_library("GL") lib_glu = find_library("GLU") - lib_glut = find_library("glut") lib_gle = find_library("gle") ## print, for debugging if is_resource_enabled("printing"): - if lib_gl or lib_glu or lib_glut or lib_gle: + if lib_gl or lib_glu or lib_gle: print "OpenGL libraries:" for item in (("GL", lib_gl), ("GLU", lib_glu), - ("glut", lib_glut), ("gle", lib_gle)): print "\t", item @@ -33,24 +29,11 @@ # On some systems, loading the OpenGL libraries needs the RTLD_GLOBAL mode. class Test_OpenGL_libs(unittest.TestCase): def setUp(self): - self.gl = self.glu = self.gle = self.glut = None + self.gl = self.glu = self.gle = None if lib_gl: self.gl = CDLL(lib_gl, mode=RTLD_GLOBAL) if lib_glu: self.glu = CDLL(lib_glu, RTLD_GLOBAL) - if lib_glut: - # On some systems, additional libraries seem to be - # required, loading glut fails with - # "OSError: /usr/lib/libglut.so.3: undefined symbol: XGetExtensionVersion" - # I cannot figure out how to repair the test on these - # systems (red hat), so we ignore it when the glut or gle - # libraries cannot be loaded. See also: - # https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1478253&group_id=5470 - # http://mail.python.org/pipermail/python-dev/2006-May/064789.html - try: - self.glut = CDLL(lib_glut) - except OSError: - pass if lib_gle: try: self.gle = CDLL(lib_gle) @@ -67,11 +50,6 @@ if self.glu: self.glu.gluBeginCurve - if lib_glut: - def test_glut(self): - if self.glut: - self.glut.glutWireTetrahedron - if lib_gle: def test_gle(self): if self.gle: Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_memfunctions.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_memfunctions.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_memfunctions.py Thu Sep 6 21:35:45 2007 @@ -30,6 +30,14 @@ self.failUnlessEqual(cast(a, c_char_p).value, "abcdef") self.failUnlessEqual(cast(a, POINTER(c_byte))[:7], [97, 98, 99, 100, 101, 102, 0]) + self.failUnlessEqual(cast(a, POINTER(c_byte))[:7:], + [97, 98, 99, 100, 101, 102, 0]) + self.failUnlessEqual(cast(a, POINTER(c_byte))[6:-1:-1], + [0, 102, 101, 100, 99, 98, 97]) + self.failUnlessEqual(cast(a, POINTER(c_byte))[:7:2], + [97, 99, 101, 0]) + self.failUnlessEqual(cast(a, POINTER(c_byte))[:7:7], + [97]) def test_string_at(self): s = string_at("foo bar") Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_slicing.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_slicing.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_slicing.py Thu Sep 6 21:35:45 2007 @@ -8,13 +8,22 @@ a = (c_int * 100)(*xrange(1100, 1200)) b = range(1100, 1200) self.failUnlessEqual(a[0:2], b[0:2]) + self.failUnlessEqual(a[0:2:], b[0:2:]) self.failUnlessEqual(len(a), len(b)) self.failUnlessEqual(a[5:7], b[5:7]) + self.failUnlessEqual(a[5:7:], b[5:7:]) self.failUnlessEqual(a[-1], b[-1]) self.failUnlessEqual(a[:], b[:]) + self.failUnlessEqual(a[::], b[::]) + self.failUnlessEqual(a[10::-1], b[10::-1]) + self.failUnlessEqual(a[30:20:-1], b[30:20:-1]) + self.failUnlessEqual(a[:12:6], b[:12:6]) + self.failUnlessEqual(a[2:6:4], b[2:6:4]) a[0:5] = range(5, 10) self.failUnlessEqual(a[0:5], range(5, 10)) + self.failUnlessEqual(a[0:5:], range(5, 10)) + self.failUnlessEqual(a[4::-1], range(9, 4, -1)) def test_setslice_cint(self): a = (c_int * 100)(*xrange(1100, 1200)) @@ -22,17 +31,36 @@ a[32:47] = range(32, 47) self.failUnlessEqual(a[32:47], range(32, 47)) + a[32:47] = range(132, 147) + self.failUnlessEqual(a[32:47:], range(132, 147)) + a[46:31:-1] = range(232, 247) + self.failUnlessEqual(a[32:47:1], range(246, 231, -1)) + + a[32:47] = range(1132, 1147) + self.failUnlessEqual(a[:], b) + a[32:47:7] = range(3) + b[32:47:7] = range(3) + self.failUnlessEqual(a[:], b) + a[33::-3] = range(12) + b[33::-3] = range(12) + self.failUnlessEqual(a[:], b) - from operator import setslice + from operator import setslice, setitem # TypeError: int expected instead of str instance self.assertRaises(TypeError, setslice, a, 0, 5, "abcde") + self.assertRaises(TypeError, setitem, a, slice(0, 5), "abcde") # TypeError: int expected instead of str instance self.assertRaises(TypeError, setslice, a, 0, 5, ["a", "b", "c", "d", "e"]) + self.assertRaises(TypeError, setitem, a, slice(0, 5), + ["a", "b", "c", "d", "e"]) # TypeError: int expected instead of float instance self.assertRaises(TypeError, setslice, a, 0, 5, [1, 2, 3, 4, 3.14]) + self.assertRaises(TypeError, setitem, a, slice(0, 5), + [1, 2, 3, 4, 3.14]) # ValueError: Can only assign sequence of same size self.assertRaises(ValueError, setslice, a, 0, 5, range(32)) + self.assertRaises(ValueError, setitem, a, slice(0, 5), range(32)) def test_char_ptr(self): s = "abcdefghijklmnopqrstuvwxyz" @@ -42,15 +70,32 @@ dll.my_free.restype = None res = dll.my_strdup(s) self.failUnlessEqual(res[:len(s)], s) + self.failUnlessEqual(res[:3], s[:3]) + self.failUnlessEqual(res[:len(s):], s) + self.failUnlessEqual(res[len(s)-1:-1:-1], s[::-1]) + self.failUnlessEqual(res[len(s)-1:5:-7], s[:5:-7]) + self.failUnlessEqual(res[0:-1:-1], s[0::-1]) import operator + self.assertRaises(ValueError, operator.getitem, + res, slice(None, None, None)) + self.assertRaises(ValueError, operator.getitem, + res, slice(0, None, None)) + self.assertRaises(ValueError, operator.getitem, + res, slice(None, 5, -1)) + self.assertRaises(ValueError, operator.getitem, + res, slice(-5, None, None)) + self.assertRaises(TypeError, operator.setslice, res, 0, 5, u"abcde") + self.assertRaises(TypeError, operator.setitem, + res, slice(0, 5), u"abcde") dll.my_free(res) dll.my_strdup.restype = POINTER(c_byte) res = dll.my_strdup(s) self.failUnlessEqual(res[:len(s)], range(ord("a"), ord("z")+1)) + self.failUnlessEqual(res[:len(s):], range(ord("a"), ord("z")+1)) dll.my_free(res) def test_char_ptr_with_free(self): @@ -80,6 +125,10 @@ p = (c_char * 27)(*s) self.failUnlessEqual(p[:], s) + self.failUnlessEqual(p[::], s) + self.failUnlessEqual(p[::-1], s[::-1]) + self.failUnlessEqual(p[5::-2], s[5::-2]) + self.failUnlessEqual(p[2:5:-3], s[2:5:-3]) try: @@ -96,10 +145,15 @@ dll.my_free.restype = None res = dll.my_wcsdup(s) self.failUnlessEqual(res[:len(s)], s) + self.failUnlessEqual(res[:len(s):], s) + self.failUnlessEqual(res[len(s)-1:-1:-1], s[::-1]) + self.failUnlessEqual(res[len(s)-1:5:-7], s[:5:-7]) import operator self.assertRaises(TypeError, operator.setslice, res, 0, 5, u"abcde") + self.assertRaises(TypeError, operator.setitem, + res, slice(0, 5), u"abcde") dll.my_free(res) if sizeof(c_wchar) == sizeof(c_short): @@ -111,7 +165,11 @@ else: return res = dll.my_wcsdup(s) - self.failUnlessEqual(res[:len(s)-1], range(ord("a"), ord("z")+1)) + tmpl = range(ord("a"), ord("z")+1) + self.failUnlessEqual(res[:len(s)-1], tmpl) + self.failUnlessEqual(res[:len(s)-1:], tmpl) + self.failUnlessEqual(res[len(s)-2:-1:-1], tmpl[::-1]) + self.failUnlessEqual(res[len(s)-2:5:-7], tmpl[:5:-7]) dll.my_free(res) ################################################################ Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_strings.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_strings.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_strings.py Thu Sep 6 21:35:45 2007 @@ -121,6 +121,9 @@ def XX_test_initialized_strings(self): self.failUnless(c_string("ab", 4).raw[:2] == "ab") + self.failUnless(c_string("ab", 4).raw[:2:] == "ab") + self.failUnless(c_string("ab", 4).raw[:2:-1] == "ba") + self.failUnless(c_string("ab", 4).raw[:2:2] == "a") self.failUnless(c_string("ab", 4).raw[-1] == "\000") self.failUnless(c_string("ab", 2).raw == "a\000") Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_structures.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_structures.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_structures.py Thu Sep 6 21:35:45 2007 @@ -236,7 +236,13 @@ # can use tuple to initialize array (but not list!) self.failUnlessEqual(SomeInts((1, 2)).a[:], [1, 2, 0, 0]) + self.failUnlessEqual(SomeInts((1, 2)).a[::], [1, 2, 0, 0]) + self.failUnlessEqual(SomeInts((1, 2)).a[::-1], [0, 0, 2, 1]) + self.failUnlessEqual(SomeInts((1, 2)).a[::2], [1, 0]) + self.failUnlessEqual(SomeInts((1, 2)).a[1:5:6], [2]) + self.failUnlessEqual(SomeInts((1, 2)).a[6:4:-1], []) self.failUnlessEqual(SomeInts((1, 2, 3, 4)).a[:], [1, 2, 3, 4]) + self.failUnlessEqual(SomeInts((1, 2, 3, 4)).a[::], [1, 2, 3, 4]) # too long # XXX Should raise ValueError?, not RuntimeError self.assertRaises(RuntimeError, SomeInts, (1, 2, 3, 4, 5)) Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_unicode.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_unicode.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_unicode.py Thu Sep 6 21:35:45 2007 @@ -59,11 +59,19 @@ ctypes.set_conversion_mode("ascii", "replace") buf = ctypes.create_unicode_buffer("ab???") self.failUnlessEqual(buf[:], u"ab\uFFFD\uFFFD\uFFFD\0") + self.failUnlessEqual(buf[::], u"ab\uFFFD\uFFFD\uFFFD\0") + self.failUnlessEqual(buf[::-1], u"\0\uFFFD\uFFFD\uFFFDba") + self.failUnlessEqual(buf[::2], u"a\uFFFD\uFFFD") + self.failUnlessEqual(buf[6:5:-1], u"") ctypes.set_conversion_mode("ascii", "ignore") buf = ctypes.create_unicode_buffer("ab???") # is that correct? not sure. But with 'ignore', you get what you pay for.. self.failUnlessEqual(buf[:], u"ab\0\0\0\0") + self.failUnlessEqual(buf[::], u"ab\0\0\0\0") + self.failUnlessEqual(buf[::-1], u"\0\0\0\0ba") + self.failUnlessEqual(buf[::2], u"a\0\0") + self.failUnlessEqual(buf[6:5:-1], u"") import _ctypes_test func = ctypes.CDLL(_ctypes_test.__file__)._testfunc_p_p @@ -105,11 +113,17 @@ ctypes.set_conversion_mode("ascii", "replace") buf = ctypes.create_string_buffer(u"ab???") self.failUnlessEqual(buf[:], "ab???\0") + self.failUnlessEqual(buf[::], "ab???\0") + self.failUnlessEqual(buf[::-1], "\0???ba") + self.failUnlessEqual(buf[::2], "a??") + self.failUnlessEqual(buf[6:5:-1], "") ctypes.set_conversion_mode("ascii", "ignore") buf = ctypes.create_string_buffer(u"ab???") # is that correct? not sure. But with 'ignore', you get what you pay for.. self.failUnlessEqual(buf[:], "ab\0\0\0\0") + self.failUnlessEqual(buf[::], "ab\0\0\0\0") + self.failUnlessEqual(buf[::-1], "\0\0\0\0ba") if __name__ == '__main__': unittest.main() Modified: python/branches/bcannon-objcap/Lib/ctypes/test/test_win32.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ctypes/test/test_win32.py (original) +++ python/branches/bcannon-objcap/Lib/ctypes/test/test_win32.py Thu Sep 6 21:35:45 2007 @@ -58,6 +58,15 @@ self.failUnlessEqual(sizeof(wintypes.LPARAM), sizeof(c_void_p)) + def test_COMError(self): + from _ctypes import COMError + self.assertEqual(COMError.__doc__, "Raised when a COM method call failed.") + + ex = COMError(-1, "text", ("details",)) + self.assertEqual(ex.hresult, -1) + self.assertEqual(ex.text, "text") + self.assertEqual(ex.details, ("details",)) + class Structures(unittest.TestCase): def test_struct_by_value(self): Modified: python/branches/bcannon-objcap/Lib/decimal.py ============================================================================== --- python/branches/bcannon-objcap/Lib/decimal.py (original) +++ python/branches/bcannon-objcap/Lib/decimal.py Thu Sep 6 21:35:45 2007 @@ -612,7 +612,8 @@ except ValueError: self._is_special = True self._sign, self._int, self._exp = \ - context._raise_error(ConversionSyntax) + context._raise_error(ConversionSyntax, + "Invalid literal for Decimal: %r" % value) return self raise TypeError("Cannot convert %r to Decimal" % value) Modified: python/branches/bcannon-objcap/Lib/distutils/command/bdist_msi.py ============================================================================== --- python/branches/bcannon-objcap/Lib/distutils/command/bdist_msi.py (original) +++ python/branches/bcannon-objcap/Lib/distutils/command/bdist_msi.py Thu Sep 6 21:35:45 2007 @@ -633,7 +633,8 @@ def get_installer_filename(self, fullname): # Factored out to allow overriding in subclasses + plat = get_platform() installer_name = os.path.join(self.dist_dir, - "%s.win32-py%s.msi" % - (fullname, self.target_version)) + "%s.%s-py%s.msi" % + (fullname, plat, self.target_version)) return installer_name Modified: python/branches/bcannon-objcap/Lib/distutils/command/register.py ============================================================================== --- python/branches/bcannon-objcap/Lib/distutils/command/register.py (original) +++ python/branches/bcannon-objcap/Lib/distutils/command/register.py Thu Sep 6 21:35:45 2007 @@ -17,7 +17,7 @@ description = ("register the distribution with the Python package index") - DEFAULT_REPOSITORY = 'http://www.python.org/pypi' + DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi' user_options = [ ('repository=', 'r', Modified: python/branches/bcannon-objcap/Lib/distutils/command/upload.py ============================================================================== --- python/branches/bcannon-objcap/Lib/distutils/command/upload.py (original) +++ python/branches/bcannon-objcap/Lib/distutils/command/upload.py Thu Sep 6 21:35:45 2007 @@ -20,7 +20,7 @@ description = "upload binary package to PyPI" - DEFAULT_REPOSITORY = 'http://www.python.org/pypi' + DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi' user_options = [ ('repository=', 'r', Modified: python/branches/bcannon-objcap/Lib/distutils/util.py ============================================================================== --- python/branches/bcannon-objcap/Lib/distutils/util.py (original) +++ python/branches/bcannon-objcap/Lib/distutils/util.py Thu Sep 6 21:35:45 2007 @@ -29,8 +29,27 @@ irix-5.3 irix64-6.2 - For non-POSIX platforms, currently just returns 'sys.platform'. - """ + Windows will return one of: + win-x86_64 (64bit Windows on x86_64 (AMD64)) + win-ia64 (64bit Windows on Itanium) + win32 (all others - specifically, sys.platform is returned) + + For other non-POSIX platforms, currently just returns 'sys.platform'. + """ + if os.name == 'nt': + # sniff sys.version for architecture. + prefix = " bit (" + i = string.find(sys.version, prefix) + if i == -1: + return sys.platform + j = string.find(sys.version, ")", i) + look = sys.version[i+len(prefix):j].lower() + if look=='amd64': + return 'win-x86_64' + if look=='itanium': + return 'win-ia64' + return sys.platform + if os.name != "posix" or not hasattr(os, 'uname'): # XXX what about the architecture? NT is Intel or Alpha, # Mac OS is M68k or PPC, etc. Modified: python/branches/bcannon-objcap/Lib/email/test/test_email.py ============================================================================== --- python/branches/bcannon-objcap/Lib/email/test/test_email.py (original) +++ python/branches/bcannon-objcap/Lib/email/test/test_email.py Thu Sep 6 21:35:45 2007 @@ -1492,6 +1492,18 @@ self.failUnless(isinstance(bad.defects[0], Errors.StartBoundaryNotFoundDefect)) + def test_first_line_is_continuation_header(self): + eq = self.assertEqual + m = ' Line 1\nLine 2\nLine 3' + msg = email.message_from_string(m) + eq(msg.keys(), []) + eq(msg.get_payload(), 'Line 2\nLine 3') + eq(len(msg.defects), 1) + self.failUnless(isinstance(msg.defects[0], + Errors.FirstHeaderLineIsContinuationDefect)) + eq(msg.defects[0].line, ' Line 1\n') + + # Test RFC 2047 header encoding and decoding Modified: python/branches/bcannon-objcap/Lib/email/test/test_email_renamed.py ============================================================================== --- python/branches/bcannon-objcap/Lib/email/test/test_email_renamed.py (original) +++ python/branches/bcannon-objcap/Lib/email/test/test_email_renamed.py Thu Sep 6 21:35:45 2007 @@ -1490,6 +1490,17 @@ self.failUnless(isinstance(bad.defects[0], errors.StartBoundaryNotFoundDefect)) + def test_first_line_is_continuation_header(self): + eq = self.assertEqual + m = ' Line 1\nLine 2\nLine 3' + msg = email.message_from_string(m) + eq(msg.keys(), []) + eq(msg.get_payload(), 'Line 2\nLine 3') + eq(len(msg.defects), 1) + self.failUnless(isinstance(msg.defects[0], + errors.FirstHeaderLineIsContinuationDefect)) + eq(msg.defects[0].line, ' Line 1\n') + # Test RFC 2047 header encoding and decoding Modified: python/branches/bcannon-objcap/Lib/encodings/aliases.py ============================================================================== --- python/branches/bcannon-objcap/Lib/encodings/aliases.py (original) +++ python/branches/bcannon-objcap/Lib/encodings/aliases.py Thu Sep 6 21:35:45 2007 @@ -490,6 +490,16 @@ 'unicodelittleunmarked' : 'utf_16_le', 'utf_16le' : 'utf_16_le', + # utf_32 codec + 'u32' : 'utf_32', + 'utf32' : 'utf_32', + + # utf_32_be codec + 'utf_32be' : 'utf_32_be', + + # utf_32_le codec + 'utf_32le' : 'utf_32_le', + # utf_7 codec 'u7' : 'utf_7', 'utf7' : 'utf_7', Modified: python/branches/bcannon-objcap/Lib/encodings/quopri_codec.py ============================================================================== --- python/branches/bcannon-objcap/Lib/encodings/quopri_codec.py (original) +++ python/branches/bcannon-objcap/Lib/encodings/quopri_codec.py Thu Sep 6 21:35:45 2007 @@ -18,7 +18,8 @@ """ assert errors == 'strict' - f = StringIO(input) + # using str() because of cStringIO's Unicode undesired Unicode behavior. + f = StringIO(str(input)) g = StringIO() quopri.encode(f, g, 1) output = g.getvalue() @@ -33,7 +34,7 @@ """ assert errors == 'strict' - f = StringIO(input) + f = StringIO(str(input)) g = StringIO() quopri.decode(f, g) output = g.getvalue() Modified: python/branches/bcannon-objcap/Lib/encodings/uu_codec.py ============================================================================== --- python/branches/bcannon-objcap/Lib/encodings/uu_codec.py (original) +++ python/branches/bcannon-objcap/Lib/encodings/uu_codec.py Thu Sep 6 21:35:45 2007 @@ -25,7 +25,8 @@ assert errors == 'strict' from cStringIO import StringIO from binascii import b2a_uu - infile = StringIO(input) + # using str() because of cStringIO's Unicode undesired Unicode behavior. + infile = StringIO(str(input)) outfile = StringIO() read = infile.read write = outfile.write @@ -60,7 +61,7 @@ assert errors == 'strict' from cStringIO import StringIO from binascii import a2b_uu - infile = StringIO(input) + infile = StringIO(str(input)) outfile = StringIO() readline = infile.readline write = outfile.write Modified: python/branches/bcannon-objcap/Lib/functools.py ============================================================================== --- python/branches/bcannon-objcap/Lib/functools.py (original) +++ python/branches/bcannon-objcap/Lib/functools.py Thu Sep 6 21:35:45 2007 @@ -8,6 +8,7 @@ # See C source code for _functools credits/copyright from _functools import partial +from __builtin__ import reduce # update_wrapper() and wraps() are tools to help write # wrapper functions that can handle naive introspection Modified: python/branches/bcannon-objcap/Lib/httplib.py ============================================================================== --- python/branches/bcannon-objcap/Lib/httplib.py (original) +++ python/branches/bcannon-objcap/Lib/httplib.py Thu Sep 6 21:35:45 2007 @@ -70,13 +70,14 @@ import mimetools import socket from urlparse import urlsplit +import warnings try: from cStringIO import StringIO except ImportError: from StringIO import StringIO -__all__ = ["HTTP", "HTTPResponse", "HTTPConnection", "HTTPSConnection", +__all__ = ["HTTP", "HTTPResponse", "HTTPConnection", "HTTPException", "NotConnected", "UnknownProtocol", "UnknownTransferEncoding", "UnimplementedFileMode", "IncompleteRead", "InvalidURL", "ImproperConnectionState", @@ -940,202 +941,6 @@ return response -# The next several classes are used to define FakeSocket, a socket-like -# interface to an SSL connection. - -# The primary complexity comes from faking a makefile() method. The -# standard socket makefile() implementation calls dup() on the socket -# file descriptor. As a consequence, clients can call close() on the -# parent socket and its makefile children in any order. The underlying -# socket isn't closed until they are all closed. - -# The implementation uses reference counting to keep the socket open -# until the last client calls close(). SharedSocket keeps track of -# the reference counting and SharedSocketClient provides an constructor -# and close() method that call incref() and decref() correctly. - -class SharedSocket: - - def __init__(self, sock): - self.sock = sock - self._refcnt = 0 - - def incref(self): - self._refcnt += 1 - - def decref(self): - self._refcnt -= 1 - assert self._refcnt >= 0 - if self._refcnt == 0: - self.sock.close() - - def __del__(self): - self.sock.close() - -class SharedSocketClient: - - def __init__(self, shared): - self._closed = 0 - self._shared = shared - self._shared.incref() - self._sock = shared.sock - - def close(self): - if not self._closed: - self._shared.decref() - self._closed = 1 - self._shared = None - -class SSLFile(SharedSocketClient): - """File-like object wrapping an SSL socket.""" - - BUFSIZE = 8192 - - def __init__(self, sock, ssl, bufsize=None): - SharedSocketClient.__init__(self, sock) - self._ssl = ssl - self._buf = '' - self._bufsize = bufsize or self.__class__.BUFSIZE - - def _read(self): - buf = '' - # put in a loop so that we retry on transient errors - while True: - try: - buf = self._ssl.read(self._bufsize) - except socket.sslerror, err: - if (err[0] == socket.SSL_ERROR_WANT_READ - or err[0] == socket.SSL_ERROR_WANT_WRITE): - continue - if (err[0] == socket.SSL_ERROR_ZERO_RETURN - or err[0] == socket.SSL_ERROR_EOF): - break - raise - except socket.error, err: - if err[0] == errno.EINTR: - continue - if err[0] == errno.EBADF: - # XXX socket was closed? - break - raise - else: - break - return buf - - def read(self, size=None): - L = [self._buf] - avail = len(self._buf) - while size is None or avail < size: - s = self._read() - if s == '': - break - L.append(s) - avail += len(s) - all = "".join(L) - if size is None: - self._buf = '' - return all - else: - self._buf = all[size:] - return all[:size] - - def readline(self): - L = [self._buf] - self._buf = '' - while 1: - i = L[-1].find("\n") - if i >= 0: - break - s = self._read() - if s == '': - break - L.append(s) - if i == -1: - # loop exited because there is no more data - return "".join(L) - else: - all = "".join(L) - # XXX could do enough bookkeeping not to do a 2nd search - i = all.find("\n") + 1 - line = all[:i] - self._buf = all[i:] - return line - - def readlines(self, sizehint=0): - total = 0 - list = [] - while True: - line = self.readline() - if not line: - break - list.append(line) - total += len(line) - if sizehint and total >= sizehint: - break - return list - - def fileno(self): - return self._sock.fileno() - - def __iter__(self): - return self - - def next(self): - line = self.readline() - if not line: - raise StopIteration - return line - -class FakeSocket(SharedSocketClient): - - class _closedsocket: - def __getattr__(self, name): - raise error(9, 'Bad file descriptor') - - def __init__(self, sock, ssl): - sock = SharedSocket(sock) - SharedSocketClient.__init__(self, sock) - self._ssl = ssl - - def close(self): - SharedSocketClient.close(self) - self._sock = self.__class__._closedsocket() - - def makefile(self, mode, bufsize=None): - if mode != 'r' and mode != 'rb': - raise UnimplementedFileMode() - return SSLFile(self._shared, self._ssl, bufsize) - - def send(self, stuff, flags = 0): - return self._ssl.write(stuff) - - sendall = send - - def recv(self, len = 1024, flags = 0): - return self._ssl.read(len) - - def __getattr__(self, attr): - return getattr(self._sock, attr) - - -class HTTPSConnection(HTTPConnection): - "This class allows communication via SSL." - - default_port = HTTPS_PORT - - def __init__(self, host, port=None, key_file=None, cert_file=None, - strict=None, timeout=None): - HTTPConnection.__init__(self, host, port, strict, timeout) - self.key_file = key_file - self.cert_file = cert_file - - def connect(self): - "Connect to a host on a given (SSL) port." - - sock = socket.create_connection((self.host, self.port), self.timeout) - ssl = socket.ssl(sock, self.key_file, self.cert_file) - self.sock = FakeSocket(sock, ssl) - class HTTP: "Compatibility class with httplib.py from 1.5." @@ -1226,7 +1031,30 @@ ### do it self.file = None -if hasattr(socket, 'ssl'): +try: + import ssl +except ImportError: + pass +else: + class HTTPSConnection(HTTPConnection): + "This class allows communication via SSL." + + default_port = HTTPS_PORT + + def __init__(self, host, port=None, key_file=None, cert_file=None, + strict=None, timeout=None): + HTTPConnection.__init__(self, host, port, strict, timeout) + self.key_file = key_file + self.cert_file = cert_file + + def connect(self): + "Connect to a host on a given (SSL) port." + + sock = socket.create_connection((self.host, self.port), self.timeout) + self.sock = ssl.sslsocket(sock, self.key_file, self.cert_file) + + __all__.append("HTTPSConnection") + class HTTPS(HTTP): """Compatibility with 1.5 httplib interface @@ -1253,6 +1081,13 @@ self.cert_file = cert_file + def FakeSocket (sock, sslobj): + warnings.warn("FakeSocket is deprecated, and won't be in 3.x. " + + "Use the result of ssl.sslsocket directly instead.", + DeprecationWarning, stacklevel=2) + return sslobj + + class HTTPException(Exception): # Subclasses that define an __init__ must call Exception.__init__ # or define self.args. Otherwise, str() will fail. @@ -1410,7 +1245,11 @@ h.getreply() h.close() - if hasattr(socket, 'ssl'): + try: + import ssl + except ImportError: + pass + else: for host, selector in (('sourceforge.net', '/projects/python'), ): Modified: python/branches/bcannon-objcap/Lib/idlelib/macosxSupport.py ============================================================================== --- python/branches/bcannon-objcap/Lib/idlelib/macosxSupport.py (original) +++ python/branches/bcannon-objcap/Lib/idlelib/macosxSupport.py Thu Sep 6 21:35:45 2007 @@ -3,6 +3,7 @@ GUI application (as opposed to an X11 application). """ import sys +import Tkinter def runningAsOSXApp(): """ Returns True iff running from the IDLE.app bundle on OSX """ @@ -23,7 +24,11 @@ root.createcommand("::tk::mac::OpenDocument", doOpenFile) def hideTkConsole(root): - root.tk.call('console', 'hide') + try: + root.tk.call('console', 'hide') + except Tkinter.TclError: + # Some versions of the Tk framework don't have a console object + pass def overrideRootMenu(root, flist): """ @@ -75,32 +80,40 @@ import configDialog configDialog.ConfigDialog(root, 'Settings') + root.bind('<>', about_dialog) root.bind('<>', config_dialog) if flist: root.bind('<>', flist.close_all_callback) - for mname, entrylist in Bindings.menudefs: - menu = menudict.get(mname) - if not menu: - continue - for entry in entrylist: - if not entry: - menu.add_separator() + + ###check if Tk version >= 8.4.14; if so, use hard-coded showprefs binding + tkversion = root.tk.eval('info patchlevel') + if tkversion >= '8.4.14': + Bindings.menudefs[0] = ('application', [ + ('About IDLE', '<>'), + None, + ]) + root.createcommand('::tk::mac::ShowPreferences', config_dialog) + else: + for mname, entrylist in Bindings.menudefs: + menu = menudict.get(mname) + if not menu: + continue else: - label, eventname = entry - underline, label = prepstr(label) - accelerator = get_accelerator(Bindings.default_keydefs, + for entry in entrylist: + if not entry: + menu.add_separator() + else: + label, eventname = entry + underline, label = prepstr(label) + accelerator = get_accelerator(Bindings.default_keydefs, eventname) - def command(text=root, eventname=eventname): - text.event_generate(eventname) - menu.add_command(label=label, underline=underline, + def command(text=root, eventname=eventname): + text.event_generate(eventname) + menu.add_command(label=label, underline=underline, command=command, accelerator=accelerator) - - - - def setupApp(root, flist): """ Perform setup for the OSX application bundle. Modified: python/branches/bcannon-objcap/Lib/imaplib.py ============================================================================== --- python/branches/bcannon-objcap/Lib/imaplib.py (original) +++ python/branches/bcannon-objcap/Lib/imaplib.py Thu Sep 6 21:35:45 2007 @@ -24,7 +24,7 @@ import binascii, os, random, re, socket, sys, time -__all__ = ["IMAP4", "IMAP4_SSL", "IMAP4_stream", "Internaldate2tuple", +__all__ = ["IMAP4", "IMAP4_stream", "Internaldate2tuple", "Int2AP", "ParseFlags", "Time2Internaldate"] # Globals @@ -1111,95 +1111,99 @@ -class IMAP4_SSL(IMAP4): +try: + import ssl +except ImportError: + pass +else: + class IMAP4_SSL(IMAP4): - """IMAP4 client class over SSL connection + """IMAP4 client class over SSL connection - Instantiate with: IMAP4_SSL([host[, port[, keyfile[, certfile]]]]) + Instantiate with: IMAP4_SSL([host[, port[, keyfile[, certfile]]]]) - host - host's name (default: localhost); - port - port number (default: standard IMAP4 SSL port). - keyfile - PEM formatted file that contains your private key (default: None); - certfile - PEM formatted certificate chain file (default: None); + host - host's name (default: localhost); + port - port number (default: standard IMAP4 SSL port). + keyfile - PEM formatted file that contains your private key (default: None); + certfile - PEM formatted certificate chain file (default: None); - for more documentation see the docstring of the parent class IMAP4. - """ + for more documentation see the docstring of the parent class IMAP4. + """ - def __init__(self, host = '', port = IMAP4_SSL_PORT, keyfile = None, certfile = None): - self.keyfile = keyfile - self.certfile = certfile - IMAP4.__init__(self, host, port) + def __init__(self, host = '', port = IMAP4_SSL_PORT, keyfile = None, certfile = None): + self.keyfile = keyfile + self.certfile = certfile + IMAP4.__init__(self, host, port) - def open(self, host = '', port = IMAP4_SSL_PORT): - """Setup connection to remote server on "host:port". - (default: localhost:standard IMAP4 SSL port). - This connection will be used by the routines: - read, readline, send, shutdown. - """ - self.host = host - self.port = port - self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.sock.connect((host, port)) - self.sslobj = socket.ssl(self.sock, self.keyfile, self.certfile) + def open(self, host = '', port = IMAP4_SSL_PORT): + """Setup connection to remote server on "host:port". + (default: localhost:standard IMAP4 SSL port). + This connection will be used by the routines: + read, readline, send, shutdown. + """ + self.host = host + self.port = port + self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.sock.connect((host, port)) + self.sslobj = ssl.sslsocket(self.sock, self.keyfile, self.certfile) - def read(self, size): - """Read 'size' bytes from remote.""" - # sslobj.read() sometimes returns < size bytes - chunks = [] - read = 0 - while read < size: - data = self.sslobj.read(size-read) - read += len(data) - chunks.append(data) + def read(self, size): + """Read 'size' bytes from remote.""" + # sslobj.read() sometimes returns < size bytes + chunks = [] + read = 0 + while read < size: + data = self.sslobj.read(size-read) + read += len(data) + chunks.append(data) - return ''.join(chunks) + return ''.join(chunks) - def readline(self): - """Read line from remote.""" - # NB: socket.ssl needs a "readline" method, or perhaps a "makefile" method. - line = [] - while 1: - char = self.sslobj.read(1) - line.append(char) - if char == "\n": return ''.join(line) + def readline(self): + """Read line from remote.""" + line = [] + while 1: + char = self.sslobj.read(1) + line.append(char) + if char == "\n": return ''.join(line) - def send(self, data): - """Send data to remote.""" - # NB: socket.ssl needs a "sendall" method to match socket objects. - bytes = len(data) - while bytes > 0: - sent = self.sslobj.write(data) - if sent == bytes: - break # avoid copy - data = data[sent:] - bytes = bytes - sent + def send(self, data): + """Send data to remote.""" + bytes = len(data) + while bytes > 0: + sent = self.sslobj.write(data) + if sent == bytes: + break # avoid copy + data = data[sent:] + bytes = bytes - sent - def shutdown(self): - """Close I/O established in "open".""" - self.sock.close() + def shutdown(self): + """Close I/O established in "open".""" + self.sock.close() - def socket(self): - """Return socket instance used to connect to IMAP4 server. + def socket(self): + """Return socket instance used to connect to IMAP4 server. - socket = .socket() - """ - return self.sock + socket = .socket() + """ + return self.sock - def ssl(self): - """Return SSLObject instance used to communicate with the IMAP4 server. + def ssl(self): + """Return SSLObject instance used to communicate with the IMAP4 server. - ssl = .socket.ssl() - """ - return self.sslobj + ssl = ssl.sslsocket(.socket) + """ + return self.sslobj + __all__.append("IMAP4_SSL") class IMAP4_stream(IMAP4): Modified: python/branches/bcannon-objcap/Lib/inspect.py ============================================================================== --- python/branches/bcannon-objcap/Lib/inspect.py (original) +++ python/branches/bcannon-objcap/Lib/inspect.py Thu Sep 6 21:35:45 2007 @@ -679,7 +679,6 @@ if not iscode(co): raise TypeError('arg is not a code object') - code = co.co_code nargs = co.co_argcount names = co.co_varnames args = list(names[:nargs]) @@ -689,12 +688,12 @@ for i in range(nargs): if args[i][:1] in ('', '.'): stack, remain, count = [], [], [] - while step < len(code): - op = ord(code[step]) + while step < len(co.co_code): + op = ord(co.co_code[step]) step = step + 1 if op >= dis.HAVE_ARGUMENT: opname = dis.opname[op] - value = ord(code[step]) + ord(code[step+1])*256 + value = ord(co.co_code[step]) + ord(co.co_code[step+1])*256 step = step + 2 if opname in ('UNPACK_TUPLE', 'UNPACK_SEQUENCE'): remain.append(value) Modified: python/branches/bcannon-objcap/Lib/logging/__init__.py ============================================================================== --- python/branches/bcannon-objcap/Lib/logging/__init__.py (original) +++ python/branches/bcannon-objcap/Lib/logging/__init__.py Thu Sep 6 21:35:45 2007 @@ -974,9 +974,7 @@ logger.debug("Houston, we have a %s", "thorny problem", exc_info=1) """ - if self.manager.disable >= DEBUG: - return - if DEBUG >= self.getEffectiveLevel(): + if self.isEnabledFor(DEBUG): apply(self._log, (DEBUG, msg, args), kwargs) def info(self, msg, *args, **kwargs): @@ -988,9 +986,7 @@ logger.info("Houston, we have a %s", "interesting problem", exc_info=1) """ - if self.manager.disable >= INFO: - return - if INFO >= self.getEffectiveLevel(): + if self.isEnabledFor(INFO): apply(self._log, (INFO, msg, args), kwargs) def warning(self, msg, *args, **kwargs): @@ -1002,8 +998,6 @@ logger.warning("Houston, we have a %s", "bit of a problem", exc_info=1) """ - if self.manager.disable >= WARNING: - return if self.isEnabledFor(WARNING): apply(self._log, (WARNING, msg, args), kwargs) @@ -1018,8 +1012,6 @@ logger.error("Houston, we have a %s", "major problem", exc_info=1) """ - if self.manager.disable >= ERROR: - return if self.isEnabledFor(ERROR): apply(self._log, (ERROR, msg, args), kwargs) @@ -1038,9 +1030,7 @@ logger.critical("Houston, we have a %s", "major disaster", exc_info=1) """ - if self.manager.disable >= CRITICAL: - return - if CRITICAL >= self.getEffectiveLevel(): + if self.isEnabledFor(CRITICAL): apply(self._log, (CRITICAL, msg, args), kwargs) fatal = critical @@ -1059,8 +1049,6 @@ raise TypeError, "level must be an integer" else: return - if self.manager.disable >= level: - return if self.isEnabledFor(level): apply(self._log, (level, msg, args), kwargs) Modified: python/branches/bcannon-objcap/Lib/mailbox.py ============================================================================== --- python/branches/bcannon-objcap/Lib/mailbox.py (original) +++ python/branches/bcannon-objcap/Lib/mailbox.py Thu Sep 6 21:35:45 2007 @@ -459,7 +459,11 @@ """Update table of contents mapping.""" self._toc = {} for subdir in ('new', 'cur'): - for entry in os.listdir(os.path.join(self._path, subdir)): + subdir_path = os.path.join(self._path, subdir) + for entry in os.listdir(subdir_path): + p = os.path.join(subdir_path, entry) + if os.path.isdir(p): + continue uniq = entry.split(self.colon)[0] self._toc[uniq] = os.path.join(subdir, entry) Modified: python/branches/bcannon-objcap/Lib/ntpath.py ============================================================================== --- python/branches/bcannon-objcap/Lib/ntpath.py (original) +++ python/branches/bcannon-objcap/Lib/ntpath.py Thu Sep 6 21:35:45 2007 @@ -59,7 +59,9 @@ # Join two (or more) paths. def join(a, *p): - """Join two or more pathname components, inserting "\\" as needed""" + """Join two or more pathname components, inserting "\\" as needed. + If any component is an absolute path, all previous path components + will be discarded.""" path = a for b in p: b_wins = 0 # set to 1 iff b makes path irrelevant Modified: python/branches/bcannon-objcap/Lib/pipes.py ============================================================================== --- python/branches/bcannon-objcap/Lib/pipes.py (original) +++ python/branches/bcannon-objcap/Lib/pipes.py Thu Sep 6 21:35:45 2007 @@ -60,7 +60,6 @@ import re - import os import tempfile import string @@ -281,18 +280,3 @@ c = '\\' + c res = res + c return '"' + res + '"' - - -# Small test program and example - -def test(): - print 'Testing...' - t = Template() - t.append('togif $IN $OUT', 'ff') - t.append('giftoppm', '--') - t.append('ppmtogif >$OUT', '-f') - t.append('fromgif $IN $OUT', 'ff') - t.debug(1) - FILE = '/usr/local/images/rgb/rogues/guido.rgb' - t.copy(FILE, '@temp') - print 'Done.' Modified: python/branches/bcannon-objcap/Lib/poplib.py ============================================================================== --- python/branches/bcannon-objcap/Lib/poplib.py (original) +++ python/branches/bcannon-objcap/Lib/poplib.py Thu Sep 6 21:35:45 2007 @@ -15,7 +15,7 @@ import re, socket -__all__ = ["POP3","error_proto","POP3_SSL"] +__all__ = ["POP3","error_proto"] # Exception raised when an error or invalid response is received: @@ -307,90 +307,97 @@ return self._shortcmd('UIDL %s' % which) return self._longcmd('UIDL') -class POP3_SSL(POP3): - """POP3 client class over SSL connection +try: + import ssl +except ImportError: + pass +else: + + class POP3_SSL(POP3): + """POP3 client class over SSL connection + + Instantiate with: POP3_SSL(hostname, port=995, keyfile=None, certfile=None) + + hostname - the hostname of the pop3 over ssl server + port - port number + keyfile - PEM formatted file that countains your private key + certfile - PEM formatted certificate chain file - Instantiate with: POP3_SSL(hostname, port=995, keyfile=None, certfile=None) - - hostname - the hostname of the pop3 over ssl server - port - port number - keyfile - PEM formatted file that countains your private key - certfile - PEM formatted certificate chain file - - See the methods of the parent class POP3 for more documentation. - """ - - def __init__(self, host, port = POP3_SSL_PORT, keyfile = None, certfile = None): - self.host = host - self.port = port - self.keyfile = keyfile - self.certfile = certfile - self.buffer = "" - msg = "getaddrinfo returns an empty list" - self.sock = None - for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM): - af, socktype, proto, canonname, sa = res - try: - self.sock = socket.socket(af, socktype, proto) - self.sock.connect(sa) - except socket.error, msg: - if self.sock: - self.sock.close() - self.sock = None - continue - break - if not self.sock: - raise socket.error, msg - self.file = self.sock.makefile('rb') - self.sslobj = socket.ssl(self.sock, self.keyfile, self.certfile) - self._debugging = 0 - self.welcome = self._getresp() - - def _fillBuffer(self): - localbuf = self.sslobj.read() - if len(localbuf) == 0: - raise error_proto('-ERR EOF') - self.buffer += localbuf + See the methods of the parent class POP3 for more documentation. + """ - def _getline(self): - line = "" - renewline = re.compile(r'.*?\n') - match = renewline.match(self.buffer) - while not match: - self._fillBuffer() + def __init__(self, host, port = POP3_SSL_PORT, keyfile = None, certfile = None): + self.host = host + self.port = port + self.keyfile = keyfile + self.certfile = certfile + self.buffer = "" + msg = "getaddrinfo returns an empty list" + self.sock = None + for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + try: + self.sock = socket.socket(af, socktype, proto) + self.sock.connect(sa) + except socket.error, msg: + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error, msg + self.file = self.sock.makefile('rb') + self.sslobj = ssl.sslsocket(self.sock, self.keyfile, self.certfile) + self._debugging = 0 + self.welcome = self._getresp() + + def _fillBuffer(self): + localbuf = self.sslobj.read() + if len(localbuf) == 0: + raise error_proto('-ERR EOF') + self.buffer += localbuf + + def _getline(self): + line = "" + renewline = re.compile(r'.*?\n') match = renewline.match(self.buffer) - line = match.group(0) - self.buffer = renewline.sub('' ,self.buffer, 1) - if self._debugging > 1: print '*get*', repr(line) + while not match: + self._fillBuffer() + match = renewline.match(self.buffer) + line = match.group(0) + self.buffer = renewline.sub('' ,self.buffer, 1) + if self._debugging > 1: print '*get*', repr(line) + + octets = len(line) + if line[-2:] == CRLF: + return line[:-2], octets + if line[0] == CR: + return line[1:-1], octets + return line[:-1], octets + + def _putline(self, line): + if self._debugging > 1: print '*put*', repr(line) + line += CRLF + bytes = len(line) + while bytes > 0: + sent = self.sslobj.write(line) + if sent == bytes: + break # avoid copy + line = line[sent:] + bytes = bytes - sent - octets = len(line) - if line[-2:] == CRLF: - return line[:-2], octets - if line[0] == CR: - return line[1:-1], octets - return line[:-1], octets - - def _putline(self, line): - if self._debugging > 1: print '*put*', repr(line) - line += CRLF - bytes = len(line) - while bytes > 0: - sent = self.sslobj.write(line) - if sent == bytes: - break # avoid copy - line = line[sent:] - bytes = bytes - sent - - def quit(self): - """Signoff: commit changes on server, unlock mailbox, close connection.""" - try: - resp = self._shortcmd('QUIT') - except error_proto, val: - resp = val - self.sock.close() - del self.sslobj, self.sock - return resp + def quit(self): + """Signoff: commit changes on server, unlock mailbox, close connection.""" + try: + resp = self._shortcmd('QUIT') + except error_proto, val: + resp = val + self.sock.close() + del self.sslobj, self.sock + return resp + __all__.append("POP3_SSL") if __name__ == "__main__": import sys Modified: python/branches/bcannon-objcap/Lib/posixpath.py ============================================================================== --- python/branches/bcannon-objcap/Lib/posixpath.py (original) +++ python/branches/bcannon-objcap/Lib/posixpath.py Thu Sep 6 21:35:45 2007 @@ -56,7 +56,9 @@ # Insert a '/' unless the first part is empty or already ends in '/'. def join(a, *p): - """Join two or more pathname components, inserting '/' as needed""" + """Join two or more pathname components, inserting '/' as needed. + If any component is an absolute path, all previous path components + will be discarded.""" path = a for b in p: if b.startswith('/'): Modified: python/branches/bcannon-objcap/Lib/robotparser.py ============================================================================== --- python/branches/bcannon-objcap/Lib/robotparser.py (original) +++ python/branches/bcannon-objcap/Lib/robotparser.py Thu Sep 6 21:35:45 2007 @@ -230,6 +230,11 @@ urllib.FancyURLopener.__init__(self, *args) self.errcode = 200 + def prompt_user_passwd(self, host, realm): + ## If robots.txt file is accessible only with a password, + ## we act as if the file wasn't there. + return None, None + def http_error_default(self, url, fp, errcode, errmsg, headers): self.errcode = errcode return urllib.FancyURLopener.http_error_default(self, url, fp, errcode, Modified: python/branches/bcannon-objcap/Lib/runpy.py ============================================================================== --- python/branches/bcannon-objcap/Lib/runpy.py (original) +++ python/branches/bcannon-objcap/Lib/runpy.py Thu Sep 6 21:35:45 2007 @@ -21,8 +21,9 @@ ] -def _run_code(code, run_globals, init_globals, - mod_name, mod_fname, mod_loader): +def _run_code(code, run_globals, init_globals=None, + mod_name=None, mod_fname=None, + mod_loader=None): """Helper for _run_module_code""" if init_globals is not None: run_globals.update(init_globals) @@ -34,35 +35,30 @@ def _run_module_code(code, init_globals=None, mod_name=None, mod_fname=None, - mod_loader=None, alter_sys=False): + mod_loader=None): """Helper for run_module""" # Set up the top level namespace dictionary - if alter_sys: - # Modify sys.argv[0] and sys.module[mod_name] - temp_module = imp.new_module(mod_name) - mod_globals = temp_module.__dict__ - saved_argv0 = sys.argv[0] - restore_module = mod_name in sys.modules - if restore_module: - saved_module = sys.modules[mod_name] - sys.argv[0] = mod_fname - sys.modules[mod_name] = temp_module - try: - _run_code(code, mod_globals, init_globals, - mod_name, mod_fname, mod_loader) - finally: - sys.argv[0] = saved_argv0 + temp_module = imp.new_module(mod_name) + mod_globals = temp_module.__dict__ + # Modify sys.argv[0] and sys.module[mod_name] + saved_argv0 = sys.argv[0] + restore_module = mod_name in sys.modules + if restore_module: + saved_module = sys.modules[mod_name] + sys.argv[0] = mod_fname + sys.modules[mod_name] = temp_module + try: + _run_code(code, mod_globals, init_globals, + mod_name, mod_fname, mod_loader) + finally: + sys.argv[0] = saved_argv0 if restore_module: sys.modules[mod_name] = saved_module else: del sys.modules[mod_name] - # Copy the globals of the temporary module, as they - # may be cleared when the temporary module goes away - return mod_globals.copy() - else: - # Leave the sys module alone - return _run_code(code, {}, init_globals, - mod_name, mod_fname, mod_loader) + # Copy the globals of the temporary module, as they + # may be cleared when the temporary module goes away + return mod_globals.copy() # This helper is needed due to a missing component in the PEP 302 @@ -75,24 +71,52 @@ else: return get_filename(mod_name) +# Helper to get the loader, code and filename for a module +def _get_module_details(mod_name): + loader = get_loader(mod_name) + if loader is None: + raise ImportError("No module named %s" % mod_name) + if loader.is_package(mod_name): + raise ImportError(("%s is a package and cannot " + + "be directly executed") % mod_name) + code = loader.get_code(mod_name) + if code is None: + raise ImportError("No code object available for %s" % mod_name) + filename = _get_filename(loader, mod_name) + return loader, code, filename + + +# XXX ncoghlan: Should this be documented and made public? +def _run_module_as_main(mod_name, set_argv0=True): + """Runs the designated module in the __main__ namespace + + These __*__ magic variables will be overwritten: + __file__ + __loader__ + """ + loader, code, fname = _get_module_details(mod_name) + main_globals = sys.modules["__main__"].__dict__ + if set_argv0: + sys.argv[0] = fname + return _run_code(code, main_globals, None, + "__main__", fname, loader) def run_module(mod_name, init_globals=None, - run_name=None, alter_sys=False): + run_name=None, alter_sys=False): """Execute a module's code without importing it Returns the resulting top level namespace dictionary """ - loader = get_loader(mod_name) - if loader is None: - raise ImportError("No module named " + mod_name) - code = loader.get_code(mod_name) - if code is None: - raise ImportError("No code object available for " + mod_name) - filename = _get_filename(loader, mod_name) + loader, code, fname = _get_module_details(mod_name) if run_name is None: run_name = mod_name - return _run_module_code(code, init_globals, run_name, - filename, loader, alter_sys) + if alter_sys: + return _run_module_code(code, init_globals, run_name, + fname, loader) + else: + # Leave the sys module alone + return _run_code(code, {}, init_globals, + run_name, fname, loader) if __name__ == "__main__": @@ -101,4 +125,4 @@ print >> sys.stderr, "No module specified for execution" else: del sys.argv[0] # Make the requested module sys.argv[0] - run_module(sys.argv[0], run_name="__main__", alter_sys=True) + _run_module_as_main(sys.argv[0]) Modified: python/branches/bcannon-objcap/Lib/sgmllib.py ============================================================================== --- python/branches/bcannon-objcap/Lib/sgmllib.py (original) +++ python/branches/bcannon-objcap/Lib/sgmllib.py Thu Sep 6 21:35:45 2007 @@ -428,7 +428,7 @@ if replacement is None: self.unknown_entityref(name) else: - self.handle_data(self.convert_entityref(name)) + self.handle_data(replacement) # Example -- handle data, should be overridden def handle_data(self, data): Modified: python/branches/bcannon-objcap/Lib/smtplib.py ============================================================================== --- python/branches/bcannon-objcap/Lib/smtplib.py (original) +++ python/branches/bcannon-objcap/Lib/smtplib.py Thu Sep 6 21:35:45 2007 @@ -52,7 +52,7 @@ __all__ = ["SMTPException","SMTPServerDisconnected","SMTPResponseException", "SMTPSenderRefused","SMTPRecipientsRefused","SMTPDataError", "SMTPConnectError","SMTPHeloError","SMTPAuthenticationError", - "quoteaddr","quotedata","SMTP","SMTP_SSL"] + "quoteaddr","quotedata","SMTP"] SMTP_PORT = 25 SMTP_SSL_PORT = 465 @@ -128,43 +128,6 @@ combination provided. """ -class SSLFakeSocket: - """A fake socket object that really wraps a SSLObject. - - It only supports what is needed in smtplib. - """ - def __init__(self, realsock, sslobj): - self.realsock = realsock - self.sslobj = sslobj - - def send(self, str): - self.sslobj.write(str) - return len(str) - - sendall = send - - def close(self): - self.realsock.close() - -class SSLFakeFile: - """A fake file like object that really wraps a SSLObject. - - It only supports what is needed in smtplib. - """ - def __init__(self, sslobj): - self.sslobj = sslobj - - def readline(self): - str = "" - chr = None - while chr != "\n": - chr = self.sslobj.read(1) - str += chr - return str - - def close(self): - pass - def quoteaddr(addr): """Quote a subset of the email addresses defined by RFC 821. @@ -194,6 +157,32 @@ re.sub(r'(?:\r\n|\n|\r(?!\n))', CRLF, data)) +try: + import ssl +except ImportError: + _have_ssl = False +else: + class SSLFakeFile: + """A fake file like object that really wraps a SSLObject. + + It only supports what is needed in smtplib. + """ + def __init__(self, sslobj): + self.sslobj = sslobj + + def readline(self): + str = "" + chr = None + while chr != "\n": + chr = self.sslobj.read(1) + str += chr + return str + + def close(self): + pass + + _have_ssl = True + class SMTP: """This class manages a connection to an SMTP or ESMTP server. SMTP Objects: @@ -596,9 +585,10 @@ """ (resp, reply) = self.docmd("STARTTLS") if resp == 220: - sslobj = socket.ssl(self.sock, keyfile, certfile) - self.sock = SSLFakeSocket(self.sock, sslobj) - self.file = SSLFakeFile(sslobj) + if not _have_ssl: + raise RuntimeError("No SSL support included in this Python") + self.sock = ssl.sslsocket(self.sock, keyfile, certfile) + self.file = SSLFakeFile(self.sock) return (resp, reply) def sendmail(self, from_addr, to_addrs, msg, mail_options=[], @@ -710,27 +700,30 @@ self.docmd("quit") self.close() -class SMTP_SSL(SMTP): - """ This is a subclass derived from SMTP that connects over an SSL encrypted - socket (to use this class you need a socket module that was compiled with SSL - support). If host is not specified, '' (the local host) is used. If port is - omitted, the standard SMTP-over-SSL port (465) is used. keyfile and certfile - are also optional - they can contain a PEM formatted private key and - certificate chain file for the SSL connection. - """ - def __init__(self, host='', port=0, local_hostname=None, - keyfile=None, certfile=None, timeout=None): - self.keyfile = keyfile - self.certfile = certfile - SMTP.__init__(self, host, port, local_hostname, timeout) - self.default_port = SMTP_SSL_PORT +if _have_ssl: - def _get_socket(self, host, port, timeout): - if self.debuglevel > 0: print>>stderr, 'connect:', (host, port) - self.sock = socket.create_connection((host, port), timeout) - sslobj = socket.ssl(self.sock, self.keyfile, self.certfile) - self.sock = SSLFakeSocket(self.sock, sslobj) - self.file = SSLFakeFile(sslobj) + class SMTP_SSL(SMTP): + """ This is a subclass derived from SMTP that connects over an SSL encrypted + socket (to use this class you need a socket module that was compiled with SSL + support). If host is not specified, '' (the local host) is used. If port is + omitted, the standard SMTP-over-SSL port (465) is used. keyfile and certfile + are also optional - they can contain a PEM formatted private key and + certificate chain file for the SSL connection. + """ + def __init__(self, host='', port=0, local_hostname=None, + keyfile=None, certfile=None, timeout=None): + self.keyfile = keyfile + self.certfile = certfile + SMTP.__init__(self, host, port, local_hostname, timeout) + self.default_port = SMTP_SSL_PORT + + def _get_socket(self, host, port, timeout): + if self.debuglevel > 0: print>>stderr, 'connect:', (host, port) + self.sock = socket.create_connection((host, port), timeout) + self.sock = ssl.sslsocket(self.sock, self.keyfile, self.certfile) + self.file = SSLFakeFile(self.sock) + + __all__.append("SMTP_SSL") # # LMTP extension Modified: python/branches/bcannon-objcap/Lib/socket.py ============================================================================== --- python/branches/bcannon-objcap/Lib/socket.py (original) +++ python/branches/bcannon-objcap/Lib/socket.py Thu Sep 6 21:35:45 2007 @@ -46,15 +46,37 @@ import _socket from _socket import * -_have_ssl = False try: import _ssl - from _ssl import * - _have_ssl = True except ImportError: + # no SSL support pass +else: + def ssl(sock, keyfile=None, certfile=None): + # we do an internal import here because the ssl + # module imports the socket module + import ssl as _realssl + warnings.warn("socket.ssl() is deprecated. Use ssl.sslsocket() instead.", + DeprecationWarning, stacklevel=2) + return _realssl.sslwrap_simple(sock, keyfile, certfile) + + # we need to import the same constants we used to... + from _ssl import \ + sslerror, \ + RAND_add, \ + RAND_egd, \ + RAND_status, \ + SSL_ERROR_ZERO_RETURN, \ + SSL_ERROR_WANT_READ, \ + SSL_ERROR_WANT_WRITE, \ + SSL_ERROR_WANT_X509_LOOKUP, \ + SSL_ERROR_SYSCALL, \ + SSL_ERROR_SSL, \ + SSL_ERROR_WANT_CONNECT, \ + SSL_ERROR_EOF, \ + SSL_ERROR_INVALID_ERROR_CODE -import os, sys +import os, sys, warnings try: from errno import EBADF @@ -63,16 +85,9 @@ __all__ = ["getfqdn"] __all__.extend(os._get_exports_list(_socket)) -if _have_ssl: - __all__.extend(os._get_exports_list(_ssl)) + _realsocket = socket -if _have_ssl: - _realssl = ssl - def ssl(sock, keyfile=None, certfile=None): - if hasattr(sock, "_sock"): - sock = sock._sock - return _realssl(sock, keyfile, certfile) # WSA error codes if sys.platform.lower().startswith("win"): @@ -144,6 +159,10 @@ send = recv = recv_into = sendto = recvfrom = recvfrom_into = _dummy __getattr__ = _dummy +# Wrapper around platform socket objects. This implements +# a platform-independent dup() functionality. The +# implementation currently relies on reference counting +# to close the underlying socket object. class _socketobject(object): __doc__ = _realsocket.__doc__ Modified: python/branches/bcannon-objcap/Lib/sre_compile.py ============================================================================== --- python/branches/bcannon-objcap/Lib/sre_compile.py (original) +++ python/branches/bcannon-objcap/Lib/sre_compile.py Thu Sep 6 21:35:45 2007 @@ -280,7 +280,7 @@ # To represent a big charset, first a bitmap of all characters in the # set is constructed. Then, this bitmap is sliced into chunks of 256 -# characters, duplicate chunks are eliminitated, and each chunk is +# characters, duplicate chunks are eliminated, and each chunk is # given a number. In the compiled expression, the charset is # represented by a 16-bit word sequence, consisting of one word for # the number of different chunks, a sequence of 256 bytes (128 words) Modified: python/branches/bcannon-objcap/Lib/tarfile.py ============================================================================== --- python/branches/bcannon-objcap/Lib/tarfile.py (original) +++ python/branches/bcannon-objcap/Lib/tarfile.py Thu Sep 6 21:35:45 2007 @@ -1523,7 +1523,7 @@ if hasattr(fileobj, "mode"): self._mode = fileobj.mode self._extfileobj = True - self.name = os.path.abspath(name) + self.name = os.path.abspath(name) if name else None self.fileobj = fileobj # Init attributes. Modified: python/branches/bcannon-objcap/Lib/test/cjkencodings_test.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/cjkencodings_test.py (original) +++ python/branches/bcannon-objcap/Lib/test/cjkencodings_test.py Thu Sep 6 21:35:45 2007 @@ -376,13 +376,20 @@ "\xcc\xc7\xce\x2c\x20\xb1\xd7\xb8\xae\xb0\xed\x20\xc0\xce\xc5\xcd" "\xc7\xc1\xb8\xae\xc6\xc3\x0a\xc8\xaf\xb0\xe6\xc0\xba\x20\xc6\xc4" "\xc0\xcc\xbd\xe3\xc0\xbb\x20\xbd\xba\xc5\xa9\xb8\xb3\xc6\xc3\xb0" -"\xfa\x20\xbf\xa9\xb7\xc1\x20\xba\xd0\xbe\xdf\xbf\xa1\xbc\xad\xbf" +"\xfa\x20\xbf\xa9\xb7\xaf\x20\xba\xd0\xbe\xdf\xbf\xa1\xbc\xad\xbf" "\xcd\x20\xb4\xeb\xba\xce\xba\xd0\xc0\xc7\x20\xc7\xc3\xb7\xa7\xc6" "\xfb\xbf\xa1\xbc\xad\xc0\xc7\x20\xba\xfc\xb8\xa5\x0a\xbe\xd6\xc7" "\xc3\xb8\xae\xc4\xc9\xc0\xcc\xbc\xc7\x20\xb0\xb3\xb9\xdf\xc0\xbb" "\x20\xc7\xd2\x20\xbc\xf6\x20\xc0\xd6\xb4\xc2\x20\xc0\xcc\xbb\xf3" "\xc0\xfb\xc0\xce\x20\xbe\xf0\xbe\xee\xb7\xce\x20\xb8\xb8\xb5\xe9" -"\xbe\xee\xc1\xdd\xb4\xcf\xb4\xd9\x2e\x0a\x0a", +"\xbe\xee\xc1\xdd\xb4\xcf\xb4\xd9\x2e\x0a\x0a\xa1\xd9\xc3\xb9\xb0" +"\xa1\xb3\xa1\x3a\x20\xb3\xaf\xbe\xc6\xb6\xf3\x20\xa4\xd4\xa4\xb6" +"\xa4\xd0\xa4\xd4\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xd4\xbe\xb1\x7e\x20" +"\xa4\xd4\xa4\xa4\xa4\xd2\xa4\xb7\xc5\xad\x21\x20\xa4\xd4\xa4\xa8" +"\xa4\xd1\xa4\xb7\xb1\xdd\xbe\xf8\xc0\xcc\x20\xc0\xfc\xa4\xd4\xa4" +"\xbe\xa4\xc8\xa4\xb2\xb4\xcf\xb4\xd9\x2e\x20\xa4\xd4\xa4\xb2\xa4" +"\xce\xa4\xaa\x2e\x20\xb1\xd7\xb7\xb1\xb0\xc5\x20\xa4\xd4\xa4\xb7" +"\xa4\xd1\xa4\xb4\xb4\xd9\x2e\x0a", "\xe2\x97\x8e\x20\xed\x8c\x8c\xec\x9d\xb4\xec\x8d\xac\x28\x50\x79" "\x74\x68\x6f\x6e\x29\xec\x9d\x80\x20\xeb\xb0\xb0\xec\x9a\xb0\xea" "\xb8\xb0\x20\xec\x89\xbd\xea\xb3\xa0\x2c\x20\xea\xb0\x95\xeb\xa0" @@ -404,7 +411,7 @@ "\xec\x9d\xb8\xed\x84\xb0\xed\x94\x84\xeb\xa6\xac\xed\x8c\x85\x0a" "\xed\x99\x98\xea\xb2\xbd\xec\x9d\x80\x20\xed\x8c\x8c\xec\x9d\xb4" "\xec\x8d\xac\xec\x9d\x84\x20\xec\x8a\xa4\xed\x81\xac\xeb\xa6\xbd" -"\xed\x8c\x85\xea\xb3\xbc\x20\xec\x97\xac\xeb\xa0\xa4\x20\xeb\xb6" +"\xed\x8c\x85\xea\xb3\xbc\x20\xec\x97\xac\xeb\x9f\xac\x20\xeb\xb6" "\x84\xec\x95\xbc\xec\x97\x90\xec\x84\x9c\xec\x99\x80\x20\xeb\x8c" "\x80\xeb\xb6\x80\xeb\xb6\x84\xec\x9d\x98\x20\xed\x94\x8c\xeb\x9e" "\xab\xed\x8f\xbc\xec\x97\x90\xec\x84\x9c\xec\x9d\x98\x20\xeb\xb9" @@ -413,7 +420,13 @@ "\x84\x20\xed\x95\xa0\x20\xec\x88\x98\x20\xec\x9e\x88\xeb\x8a\x94" "\x20\xec\x9d\xb4\xec\x83\x81\xec\xa0\x81\xec\x9d\xb8\x20\xec\x96" "\xb8\xec\x96\xb4\xeb\xa1\x9c\x20\xeb\xa7\x8c\xeb\x93\xa4\xec\x96" -"\xb4\xec\xa4\x8d\xeb\x8b\x88\xeb\x8b\xa4\x2e\x0a\x0a"), +"\xb4\xec\xa4\x8d\xeb\x8b\x88\xeb\x8b\xa4\x2e\x0a\x0a\xe2\x98\x86" +"\xec\xb2\xab\xea\xb0\x80\xeb\x81\x9d\x3a\x20\xeb\x82\xa0\xec\x95" +"\x84\xeb\x9d\xbc\x20\xec\x93\x94\xec\x93\x94\xec\x93\xa9\x7e\x20" +"\xeb\x8b\x81\xed\x81\xbc\x21\x20\xeb\x9c\xbd\xea\xb8\x88\xec\x97" +"\x86\xec\x9d\xb4\x20\xec\xa0\x84\xed\x99\xa5\xeb\x8b\x88\xeb\x8b" +"\xa4\x2e\x20\xeb\xb7\x81\x2e\x20\xea\xb7\xb8\xeb\x9f\xb0\xea\xb1" +"\xb0\x20\xec\x9d\x8e\xeb\x8b\xa4\x2e\x0a"), 'gb18030': ( "\x50\x79\x74\x68\x6f\x6e\xa3\xa8\xc5\xc9\xc9\xad\xa3\xa9\xd3\xef" "\xd1\xd4\xca\xc7\xd2\xbb\xd6\xd6\xb9\xa6\xc4\xdc\xc7\xbf\xb4\xf3" Modified: python/branches/bcannon-objcap/Lib/test/list_tests.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/list_tests.py (original) +++ python/branches/bcannon-objcap/Lib/test/list_tests.py Thu Sep 6 21:35:45 2007 @@ -179,8 +179,10 @@ self.assertEqual(a, self.type2test(range(10))) self.assertRaises(TypeError, a.__setslice__, 0, 1, 5) + self.assertRaises(TypeError, a.__setitem__, slice(0, 1, 5)) self.assertRaises(TypeError, a.__setslice__) + self.assertRaises(TypeError, a.__setitem__) def test_delslice(self): a = self.type2test([0, 1]) Deleted: /python/branches/bcannon-objcap/Lib/test/output/test_class ============================================================================== --- /python/branches/bcannon-objcap/Lib/test/output/test_class Thu Sep 6 21:35:45 2007 +++ (empty file) @@ -1,101 +0,0 @@ -test_class -__init__: () -__coerce__: (1,) -__add__: (1,) -__coerce__: (1,) -__radd__: (1,) -__coerce__: (1,) -__sub__: (1,) -__coerce__: (1,) -__rsub__: (1,) -__coerce__: (1,) -__mul__: (1,) -__coerce__: (1,) -__rmul__: (1,) -__coerce__: (1,) -__div__: (1,) -__coerce__: (1,) -__rdiv__: (1,) -__coerce__: (1,) -__mod__: (1,) -__coerce__: (1,) -__rmod__: (1,) -__coerce__: (1,) -__divmod__: (1,) -__coerce__: (1,) -__rdivmod__: (1,) -__coerce__: (1,) -__pow__: (1,) -__coerce__: (1,) -__rpow__: (1,) -__coerce__: (1,) -__rshift__: (1,) -__coerce__: (1,) -__rrshift__: (1,) -__coerce__: (1,) -__lshift__: (1,) -__coerce__: (1,) -__rlshift__: (1,) -__coerce__: (1,) -__and__: (1,) -__coerce__: (1,) -__rand__: (1,) -__coerce__: (1,) -__or__: (1,) -__coerce__: (1,) -__ror__: (1,) -__coerce__: (1,) -__xor__: (1,) -__coerce__: (1,) -__rxor__: (1,) -__contains__: (1,) -__getitem__: (1,) -__setitem__: (1, 1) -__delitem__: (1,) -__getslice__: (0, 42) -__setslice__: (0, 42, 'The Answer') -__delslice__: (0, 42) -__getitem__: (slice(2, 1024, 10),) -__setitem__: (slice(2, 1024, 10), 'A lot') -__delitem__: (slice(2, 1024, 10),) -__getitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),) -__setitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100), 'Strange') -__delitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),) -__getitem__: (slice(0, 42, None),) -__setitem__: (slice(0, 42, None), 'The Answer') -__delitem__: (slice(0, 42, None),) -__neg__: () -__pos__: () -__abs__: () -__int__: () -__long__: () -__float__: () -__oct__: () -__hex__: () -__hash__: () -__repr__: () -__str__: () -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__coerce__: (1,) -__cmp__: (1,) -__del__: () -__getattr__: ('spam',) -__setattr__: ('eggs', 'spam, spam, spam and ham') -__delattr__: ('cardinal',) Deleted: /python/branches/bcannon-objcap/Lib/test/output/test_frozen ============================================================================== --- /python/branches/bcannon-objcap/Lib/test/output/test_frozen Thu Sep 6 21:35:45 2007 +++ (empty file) @@ -1,4 +0,0 @@ -test_frozen -Hello world... -Hello world... -Hello world... Deleted: /python/branches/bcannon-objcap/Lib/test/output/test_linuxaudiodev ============================================================================== --- /python/branches/bcannon-objcap/Lib/test/output/test_linuxaudiodev Thu Sep 6 21:35:45 2007 +++ (empty file) @@ -1,7 +0,0 @@ -test_linuxaudiodev -expected rate >= 0, not -1 -expected sample size >= 0, not -2 -nchannels must be 1 or 2, not 3 -unknown audio encoding: 177 -for linear unsigned 16-bit little-endian audio, expected sample size 16, not 8 -for linear unsigned 8-bit audio, expected sample size 8, not 16 Deleted: /python/branches/bcannon-objcap/Lib/test/output/test_ossaudiodev ============================================================================== --- /python/branches/bcannon-objcap/Lib/test/output/test_ossaudiodev Thu Sep 6 21:35:45 2007 +++ (empty file) @@ -1,2 +0,0 @@ -test_ossaudiodev -playing test sound file (expected running time: 2.93 sec) Deleted: /python/branches/bcannon-objcap/Lib/test/output/test_pkg ============================================================================== --- /python/branches/bcannon-objcap/Lib/test/output/test_pkg Thu Sep 6 21:35:45 2007 +++ (empty file) @@ -1,45 +0,0 @@ -test_pkg -running test t1 -running test t2 -t2 loading -doc for t2 -t2.sub.subsub loading -t2 t2.sub t2.sub.subsub -['sub', 't2'] -t2.sub t2.sub.subsub -t2.sub.subsub -['spam', 'sub', 'subsub', 't2'] -t2 t2.sub t2.sub.subsub -['spam', 'sub', 'subsub', 't2'] -running test t3 -t3 loading -t3.sub.subsub loading -t3 t3.sub t3.sub.subsub -t3 loading -t3.sub.subsub loading -running test t4 -t4 loading -t4.sub.subsub loading -t4.sub.subsub.spam = 1 -running test t5 -t5.foo loading -t5.string loading -1 -['foo', 'string', 't5'] -['__doc__', '__file__', '__name__', '__path__', 'foo', 'string', 't5'] -['__doc__', '__file__', '__name__', 'string'] -['__doc__', '__file__', '__name__', 'spam'] -running test t6 -['__all__', '__doc__', '__file__', '__name__', '__path__'] -t6.spam loading -t6.ham loading -t6.eggs loading -['__all__', '__doc__', '__file__', '__name__', '__path__', 'eggs', 'ham', 'spam'] -['eggs', 'ham', 'spam', 't6'] -running test t7 -t7 loading -['__doc__', '__file__', '__name__', '__path__'] -['__doc__', '__file__', '__name__', '__path__'] -t7.sub.subsub loading -['__doc__', '__file__', '__name__', '__path__', 'spam'] -t7.sub.subsub.spam = 1 Deleted: /python/branches/bcannon-objcap/Lib/test/output/test_rgbimg ============================================================================== --- /python/branches/bcannon-objcap/Lib/test/output/test_rgbimg Thu Sep 6 21:35:45 2007 +++ (empty file) @@ -1,2 +0,0 @@ -test_rgbimg -RGBimg test suite: Deleted: /python/branches/bcannon-objcap/Lib/test/output/test_signal ============================================================================== --- /python/branches/bcannon-objcap/Lib/test/output/test_signal Thu Sep 6 21:35:45 2007 +++ (empty file) @@ -1,2 +0,0 @@ -test_signal -starting pause() loop... Deleted: /python/branches/bcannon-objcap/Lib/test/output/test_winreg ============================================================================== --- /python/branches/bcannon-objcap/Lib/test/output/test_winreg Thu Sep 6 21:35:45 2007 +++ (empty file) @@ -1,3 +0,0 @@ -test_winreg -Local registry tests worked -Remote registry calls can be tested using 'test_winreg.py --remote \\machine_name' Modified: python/branches/bcannon-objcap/Lib/test/regrtest.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/regrtest.py (original) +++ python/branches/bcannon-objcap/Lib/test/regrtest.py Thu Sep 6 21:35:45 2007 @@ -806,17 +806,16 @@ # test_timeout # Controlled by test_timeout.skip_expected. Requires the network # resource and a socket module. +# +# Tests that are expected to be skipped everywhere except on one platform +# are also handled separately. _expectations = { 'win32': """ test__locale - test_applesingle - test_al test_bsddb185 test_bsddb3 - test_cd - test_cl test_commands test_crypt test_curses @@ -825,23 +824,19 @@ test_fcntl test_fork1 test_gdbm - test_gl test_grp - test_imgfile test_ioctl test_largefile - test_linuxaudiodev test_mhlib - test_nis test_openpty test_ossaudiodev + test_pipes test_poll test_posix test_pty test_pwd test_resource test_signal - test_sunaudiodev test_threadsignals test_timing test_wait3 @@ -849,34 +844,19 @@ """, 'linux2': """ - test_al - test_applesingle test_bsddb185 - test_cd - test_cl test_curses test_dl - test_gl - test_imgfile test_largefile - test_linuxaudiodev - test_nis - test_ntpath test_ossaudiodev - test_sqlite - test_startfile - test_sunaudiodev """, 'mac': """ - test_al test_atexit test_bsddb test_bsddb185 test_bsddb3 test_bz2 - test_cd - test_cl test_commands test_crypt test_curses @@ -884,16 +864,11 @@ test_dl test_fcntl test_fork1 - test_gl test_grp test_ioctl - test_imgfile test_largefile - test_linuxaudiodev test_locale test_mmap - test_nis - test_ntpath test_openpty test_ossaudiodev test_poll @@ -904,88 +879,49 @@ test_pwd test_resource test_signal - test_sqlite - test_startfile - test_sunaudiodev test_sundry test_tarfile test_timing """, 'unixware7': """ - test_al - test_applesingle test_bsddb test_bsddb185 - 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_startfile - test_sqlite - test_sunaudiodev test_sundry """, 'openunix8': """ - test_al - test_applesingle test_bsddb test_bsddb185 - 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_sqlite - test_startfile - test_sunaudiodev test_sundry """, 'sco_sv3': """ - test_al - test_applesingle test_asynchat test_bsddb test_bsddb185 - test_cd - test_cl test_dl test_fork1 test_gettext - test_gl - test_imgfile test_largefile - test_linuxaudiodev test_locale test_minidom - test_nis - test_ntpath test_openpty test_pyexpat test_queue test_sax - test_sqlite - test_startfile - test_sunaudiodev test_sundry test_thread test_threaded_import @@ -994,15 +930,11 @@ """, 'riscos': """ - test_al - test_applesingle test_asynchat test_atexit test_bsddb test_bsddb185 test_bsddb3 - test_cd - test_cl test_commands test_crypt test_dbm @@ -1010,24 +942,16 @@ test_fcntl test_fork1 test_gdbm - 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_strop - test_sqlite - test_startfile - test_sunaudiodev test_sundry test_thread test_threaded_import @@ -1038,274 +962,143 @@ 'darwin': """ test__locale - test_al test_bsddb test_bsddb3 - test_cd - test_cl test_curses test_gdbm - test_gl - test_imgfile test_largefile - test_linuxaudiodev test_locale test_minidom - test_nis - test_ntpath test_ossaudiodev test_poll - test_sqlite - test_startfile - test_sunaudiodev """, 'sunos5': """ - test_al - test_applesingle test_bsddb test_bsddb185 - test_cd - test_cl test_curses test_dbm test_gdbm - test_gl test_gzip - test_imgfile - test_linuxaudiodev test_openpty - test_sqlite - test_startfile test_zipfile test_zlib """, 'hp-ux11': """ - test_al - test_applesingle test_bsddb test_bsddb185 - test_cd - test_cl test_curses test_dl test_gdbm - test_gl test_gzip - test_imgfile test_largefile - test_linuxaudiodev test_locale test_minidom - test_nis - test_ntpath test_openpty test_pyexpat test_sax - test_sqlite - test_startfile - test_sunaudiodev test_zipfile test_zlib """, 'atheos': """ - test_al - test_applesingle test_bsddb185 - test_cd - test_cl test_curses test_dl test_gdbm - test_gl - test_imgfile test_largefile - test_linuxaudiodev test_locale test_mhlib test_mmap - test_nis test_poll test_popen2 test_resource - test_sqlite - test_startfile - test_sunaudiodev """, 'cygwin': """ - test_al - test_applesingle test_bsddb185 test_bsddb3 - test_cd - test_cl test_curses test_dbm - test_gl - test_imgfile test_ioctl test_largefile - test_linuxaudiodev test_locale - test_nis test_ossaudiodev test_socketserver - test_sqlite - test_sunaudiodev """, 'os2emx': """ - test_al - test_applesingle test_audioop test_bsddb185 test_bsddb3 - test_cd - test_cl test_commands test_curses test_dl - test_gl - test_imgfile test_largefile - test_linuxaudiodev test_mhlib test_mmap - test_nis test_openpty test_ossaudiodev test_pty test_resource test_signal - test_sqlite - test_startfile - test_sunaudiodev """, 'freebsd4': """ - test_aepack - test_al - test_applesingle test_bsddb test_bsddb3 - test_cd - test_cl test_gdbm - test_gl - test_imgfile - test_linuxaudiodev test_locale - test_macostools - test_nis test_ossaudiodev test_pep277 - test_plistlib test_pty - test_scriptpackages test_socket_ssl test_socketserver - test_sqlite - test_startfile - test_sunaudiodev test_tcl test_timeout - test_unicode_file test_urllibnet - test_winreg - test_winsound """, 'aix5': """ - test_aepack - test_al - test_applesingle test_bsddb test_bsddb185 test_bsddb3 test_bz2 - test_cd - test_cl test_dl test_gdbm - test_gl test_gzip - test_imgfile - test_linuxaudiodev - test_macostools - test_nis test_ossaudiodev - test_sqlite - test_startfile - test_sunaudiodev test_tcl - test_winreg - test_winsound test_zipimport test_zlib """, 'openbsd3': """ - test_aepack - test_al - test_applesingle test_bsddb test_bsddb3 - test_cd - test_cl test_ctypes test_dl test_gdbm - test_gl - test_imgfile - test_linuxaudiodev test_locale - test_macostools - test_nis test_normalization test_ossaudiodev test_pep277 - test_plistlib - test_scriptpackages test_tcl - test_sqlite - test_startfile - test_sunaudiodev - test_unicode_file - test_winreg - test_winsound """, 'netbsd3': """ - test_aepack - test_al - test_applesingle test_bsddb test_bsddb185 test_bsddb3 - test_cd - test_cl test_ctypes test_curses test_dl test_gdbm - test_gl - test_imgfile - test_linuxaudiodev test_locale - test_macostools - test_nis test_ossaudiodev test_pep277 - test_sqlite - test_startfile - test_sunaudiodev test_tcl - test_unicode_file - test_winreg - test_winsound """, } _expectations['freebsd5'] = _expectations['freebsd4'] @@ -1323,6 +1116,9 @@ s = _expectations[sys.platform] self.expected = set(s.split()) + # expected to be skipped on every platform, even Linux + self.expected.add('test_linuxaudiodev') + if not os.path.supports_unicode_filenames: self.expected.add('test_pep277') @@ -1337,21 +1133,30 @@ if not sys.platform in ("mac", "darwin"): MAC_ONLY = ["test_macostools", "test_aepack", - "test_plistlib", "test_scriptpackages"] + "test_plistlib", "test_scriptpackages", + "test_applesingle"] for skip in MAC_ONLY: self.expected.add(skip) if sys.platform != "win32": + # test_sqlite is only reliable on Windows where the library + # is distributed with Python WIN_ONLY = ["test_unicode_file", "test_winreg", - "test_winsound"] + "test_winsound", "test_startfile", + "test_sqlite"] for skip in WIN_ONLY: self.expected.add(skip) if sys.platform != 'irix': - IRIX_ONLY =["test_imageop"] + IRIX_ONLY = ["test_imageop", "test_al", "test_cd", "test_cl", + "test_gl", "test_imgfile"] for skip in IRIX_ONLY: self.expected.add(skip) + if sys.platform != 'sunos5': + self.expected.add('test_sunaudiodev') + self.expected.add('test_nis') + self.valid = True def isvalid(self): Modified: python/branches/bcannon-objcap/Lib/test/string_tests.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/string_tests.py (original) +++ python/branches/bcannon-objcap/Lib/test/string_tests.py Thu Sep 6 21:35:45 2007 @@ -912,7 +912,6 @@ self.checkequal(u'abc', 'abc', '__getitem__', slice(0, 1000)) self.checkequal(u'a', 'abc', '__getitem__', slice(0, 1)) self.checkequal(u'', 'abc', '__getitem__', slice(0, 0)) - # FIXME What about negative indices? This is handled differently by [] and __getitem__(slice) self.checkraises(TypeError, 'abc', '__getitem__', 'def') @@ -926,10 +925,21 @@ self.checkequal('', 'abc', '__getslice__', 1000, 1000) self.checkequal('', 'abc', '__getslice__', 2000, 1000) self.checkequal('', 'abc', '__getslice__', 2, 1) - # FIXME What about negative indizes? This is handled differently by [] and __getslice__ self.checkraises(TypeError, 'abc', '__getslice__', 'def') + def test_extended_getslice(self): + # Test extended slicing by comparing with list slicing. + s = string.ascii_letters + string.digits + indices = (0, None, 1, 3, 41, -1, -2, -37) + for start in indices: + for stop in indices: + # Skip step 0 (invalid) + for step in indices[1:]: + L = list(s)[start:stop:step] + self.checkequal(u"".join(L), s, '__getitem__', + slice(start, stop, step)) + def test_mul(self): self.checkequal('', 'abc', '__mul__', -1) self.checkequal('', 'abc', '__mul__', 0) Modified: python/branches/bcannon-objcap/Lib/test/test_StringIO.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_StringIO.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_StringIO.py Thu Sep 6 21:35:45 2007 @@ -121,28 +121,6 @@ class TestcStringIO(TestGenericStringIO): MODULE = cStringIO - def test_unicode(self): - - if not test_support.have_unicode: return - - # The cStringIO module converts Unicode strings to character - # strings when writing them to cStringIO objects. - # Check that this works. - - f = self.MODULE.StringIO() - f.write(unicode(self._line[:5])) - s = f.getvalue() - self.assertEqual(s, 'abcde') - self.assertEqual(type(s), types.StringType) - - f = self.MODULE.StringIO(unicode(self._line[:5])) - s = f.getvalue() - self.assertEqual(s, 'abcde') - self.assertEqual(type(s), types.StringType) - - self.assertRaises(UnicodeEncodeError, self.MODULE.StringIO, - unicode('\xf4', 'latin-1')) - import sys if sys.platform.startswith('java'): # Jython doesn't have a buffer object, so we just do a useless Modified: python/branches/bcannon-objcap/Lib/test/test_array.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_array.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_array.py Thu Sep 6 21:35:45 2007 @@ -474,6 +474,18 @@ array.array(self.typecode) ) + def test_extended_getslice(self): + # Test extended slicing by comparing with list slicing + # (Assumes list conversion works correctly, too) + a = array.array(self.typecode, self.example) + indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100) + for start in indices: + for stop in indices: + # Everything except the initial 0 (invalid step) + for step in indices[1:]: + self.assertEqual(list(a[start:stop:step]), + list(a)[start:stop:step]) + def test_setslice(self): a = array.array(self.typecode, self.example) a[:1] = a @@ -557,12 +569,34 @@ a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.__setslice__, 0, 0, None) + self.assertRaises(TypeError, a.__setitem__, slice(0, 0), None) self.assertRaises(TypeError, a.__setitem__, slice(0, 1), None) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.__setslice__, 0, 0, b) + self.assertRaises(TypeError, a.__setitem__, slice(0, 0), b) self.assertRaises(TypeError, a.__setitem__, slice(0, 1), b) + def test_extended_set_del_slice(self): + indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100) + for start in indices: + for stop in indices: + # Everything except the initial 0 (invalid step) + for step in indices[1:]: + a = array.array(self.typecode, self.example) + L = list(a) + # Make sure we have a slice of exactly the right length, + # but with (hopefully) different data. + data = L[start:stop:step] + data.reverse() + L[start:stop:step] = data + a[start:stop:step] = array.array(self.typecode, data) + self.assertEquals(a, array.array(self.typecode, L)) + + del L[start:stop:step] + del a[start:stop:step] + self.assertEquals(a, array.array(self.typecode, L)) + def test_index(self): example = 2*self.example a = array.array(self.typecode, example) Modified: python/branches/bcannon-objcap/Lib/test/test_asynchat.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_asynchat.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_asynchat.py Thu Sep 6 21:35:45 2007 @@ -3,12 +3,17 @@ import thread # If this fails, we can't test this module import asyncore, asynchat, socket, threading, time import unittest +import sys from test import test_support HOST = "127.0.0.1" PORT = 54322 +SERVER_QUIT = 'QUIT\n' class echo_server(threading.Thread): + # parameter to determine the number of bytes passed back to the + # client each send + chunk_size = 1 def run(self): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -17,15 +22,28 @@ PORT = test_support.bind_port(sock, HOST, PORT) sock.listen(1) conn, client = sock.accept() - buffer = "" - while "\n" not in buffer: + self.buffer = "" + # collect data until quit message is seen + while SERVER_QUIT not in self.buffer: data = conn.recv(1) if not data: break - buffer = buffer + data - while buffer: - n = conn.send(buffer) - buffer = buffer[n:] + self.buffer = self.buffer + data + + # remove the SERVER_QUIT message + self.buffer = self.buffer.replace(SERVER_QUIT, '') + + # re-send entire set of collected data + try: + # this may fail on some tests, such as test_close_when_done, since + # the client closes the channel when it's done sending + while self.buffer: + n = conn.send(self.buffer[:self.chunk_size]) + time.sleep(0.001) + self.buffer = self.buffer[n:] + except: + pass + conn.close() sock.close() @@ -33,61 +51,202 @@ def __init__(self, terminator): asynchat.async_chat.__init__(self) - self.contents = None + self.contents = [] self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.connect((HOST, PORT)) self.set_terminator(terminator) - self.buffer = "" + self.buffer = '' def handle_connect(self): pass - ##print "Connected" + + if sys.platform == 'darwin': + # select.poll returns a select.POLLHUP at the end of the tests + # on darwin, so just ignore it + def handle_expt(self): + pass def collect_incoming_data(self, data): - self.buffer = self.buffer + data + self.buffer += data def found_terminator(self): - #print "Received:", repr(self.buffer) - self.contents = self.buffer + self.contents.append(self.buffer) self.buffer = "" - self.close() class TestAsynchat(unittest.TestCase): + usepoll = False + def setUp (self): pass def tearDown (self): pass - def test_line_terminator(self): + def line_terminator_check(self, term, server_chunk): s = echo_server() + s.chunk_size = server_chunk s.start() - time.sleep(1) # Give server time to initialize - c = echo_client('\n') + time.sleep(0.5) # Give server time to initialize + c = echo_client(term) c.push("hello ") - c.push("world\n") - asyncore.loop() + c.push("world%s" % term) + c.push("I'm not dead yet!%s" % term) + c.push(SERVER_QUIT) + asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01) s.join() - self.assertEqual(c.contents, 'hello world') + self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"]) + + # the line terminator tests below check receiving variously-sized + # chunks back from the server in order to exercise all branches of + # async_chat.handle_read + + def test_line_terminator1(self): + # test one-character terminator + for l in (1,2,3): + self.line_terminator_check('\n', l) + + def test_line_terminator2(self): + # test two-character terminator + for l in (1,2,3): + self.line_terminator_check('\r\n', l) + + def test_line_terminator3(self): + # test three-character terminator + for l in (1,2,3): + self.line_terminator_check('qqq', l) - def test_numeric_terminator(self): + def numeric_terminator_check(self, termlen): # Try reading a fixed number of bytes s = echo_server() s.start() - time.sleep(1) # Give server time to initialize - c = echo_client(6L) - c.push("hello ") - c.push("world\n") - asyncore.loop() + time.sleep(0.5) # Give server time to initialize + c = echo_client(termlen) + data = "hello world, I'm not dead yet!\n" + c.push(data) + c.push(SERVER_QUIT) + asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01) + s.join() + + self.assertEqual(c.contents, [data[:termlen]]) + + def test_numeric_terminator1(self): + # check that ints & longs both work (since type is + # explicitly checked in async_chat.handle_read) + self.numeric_terminator_check(1) + self.numeric_terminator_check(1L) + + def test_numeric_terminator2(self): + self.numeric_terminator_check(6L) + + def test_none_terminator(self): + # Try reading a fixed number of bytes + s = echo_server() + s.start() + time.sleep(0.5) # Give server time to initialize + c = echo_client(None) + data = "hello world, I'm not dead yet!\n" + c.push(data) + c.push(SERVER_QUIT) + asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01) + s.join() + + self.assertEqual(c.contents, []) + self.assertEqual(c.buffer, data) + + def test_simple_producer(self): + s = echo_server() + s.start() + time.sleep(0.5) # Give server time to initialize + c = echo_client('\n') + data = "hello world\nI'm not dead yet!\n" + p = asynchat.simple_producer(data+SERVER_QUIT, buffer_size=8) + c.push_with_producer(p) + asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01) + s.join() + + self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"]) + + def test_string_producer(self): + s = echo_server() + s.start() + time.sleep(0.5) # Give server time to initialize + c = echo_client('\n') + data = "hello world\nI'm not dead yet!\n" + c.push_with_producer(data+SERVER_QUIT) + asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01) + s.join() + + self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"]) + + def test_empty_line(self): + # checks that empty lines are handled correctly + s = echo_server() + s.start() + time.sleep(0.5) # Give server time to initialize + c = echo_client('\n') + c.push("hello world\n\nI'm not dead yet!\n") + c.push(SERVER_QUIT) + asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01) + s.join() + + self.assertEqual(c.contents, ["hello world", "", "I'm not dead yet!"]) + + def test_close_when_done(self): + s = echo_server() + s.start() + time.sleep(0.5) # Give server time to initialize + c = echo_client('\n') + c.push("hello world\nI'm not dead yet!\n") + c.push(SERVER_QUIT) + c.close_when_done() + asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01) s.join() - self.assertEqual(c.contents, 'hello ') + self.assertEqual(c.contents, []) + # the server might have been able to send a byte or two back, but this + # at least checks that it received something and didn't just fail + # (which could still result in the client not having received anything) + self.assertTrue(len(s.buffer) > 0) + + +class TestAsynchat_WithPoll(TestAsynchat): + usepoll = True + +class TestHelperFunctions(unittest.TestCase): + def test_find_prefix_at_end(self): + self.assertEqual(asynchat.find_prefix_at_end("qwerty\r", "\r\n"), 1) + self.assertEqual(asynchat.find_prefix_at_end("qwertydkjf", "\r\n"), 0) + +class TestFifo(unittest.TestCase): + def test_basic(self): + f = asynchat.fifo() + f.push(7) + f.push('a') + self.assertEqual(len(f), 2) + self.assertEqual(f.first(), 7) + self.assertEqual(f.pop(), (1, 7)) + self.assertEqual(len(f), 1) + self.assertEqual(f.first(), 'a') + self.assertEqual(f.is_empty(), False) + self.assertEqual(f.pop(), (1, 'a')) + self.assertEqual(len(f), 0) + self.assertEqual(f.is_empty(), True) + self.assertEqual(f.pop(), (0, None)) + + def test_given_list(self): + f = asynchat.fifo(['x', 17, 3]) + self.assertEqual(len(f), 3) + self.assertEqual(f.pop(), (1, 'x')) + self.assertEqual(f.pop(), (1, 17)) + self.assertEqual(f.pop(), (1, 3)) + self.assertEqual(f.pop(), (0, None)) def test_main(verbose=None): - test_support.run_unittest(TestAsynchat) + test_support.run_unittest(TestAsynchat, TestAsynchat_WithPoll, + TestHelperFunctions, TestFifo) if __name__ == "__main__": test_main(verbose=True) Modified: python/branches/bcannon-objcap/Lib/test/test_bsddb.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_bsddb.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_bsddb.py Thu Sep 6 21:35:45 2007 @@ -127,6 +127,22 @@ items.append(self.f.previous()) self.assertSetEquals(items, self.d.items()) + def test_first_while_deleting(self): + # Test for bug 1725856 + self.assert_(len(self.d) >= 2, "test requires >=2 items") + for _ in self.d: + key = self.f.first()[0] + del self.f[key] + self.assertEqual([], self.f.items(), "expected empty db after test") + + def test_last_while_deleting(self): + # Test for bug 1725856's evil twin + self.assert_(len(self.d) >= 2, "test requires >=2 items") + for _ in self.d: + key = self.f.last()[0] + del self.f[key] + self.assertEqual([], self.f.items(), "expected empty db after test") + def test_set_location(self): self.assertEqual(self.f.set_location('e'), ('e', self.d['e'])) Modified: python/branches/bcannon-objcap/Lib/test/test_calendar.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_calendar.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_calendar.py Thu Sep 6 21:35:45 2007 @@ -49,7 +49,7 @@ -Calendar for 2004Calendar for 2004 Modified: python/branches/bcannon-objcap/Lib/test/test_class.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_class.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_class.py Thu Sep 6 21:35:45 2007 @@ -1,6 +1,9 @@ "Test the functionality of Python classes implementing operators." -from test.test_support import TestFailed +import unittest +import sys + +from test import test_support testmeths = [ @@ -64,55 +67,62 @@ # "setattr", # "delattr", +callLst = [] +def trackCall(f): + def track(*args, **kwargs): + callLst.append((f.__name__, args)) + return f(*args, **kwargs) + return track + class AllTests: + trackCall = trackCall + + @trackCall def __coerce__(self, *args): - print "__coerce__:", args return (self,) + args + @trackCall def __hash__(self, *args): - print "__hash__:", args return hash(id(self)) + @trackCall def __str__(self, *args): - print "__str__:", args return "AllTests" + @trackCall def __repr__(self, *args): - print "__repr__:", args return "AllTests" + @trackCall def __int__(self, *args): - print "__int__:", args return 1 + @trackCall def __float__(self, *args): - print "__float__:", args return 1.0 + @trackCall def __long__(self, *args): - print "__long__:", args return 1L + @trackCall def __oct__(self, *args): - print "__oct__:", args return '01' + @trackCall def __hex__(self, *args): - print "__hex__:", args return '0x1' + @trackCall def __cmp__(self, *args): - print "__cmp__:", args return 0 - def __del__(self, *args): - print "__del__:", args - -# Synthesize AllTests methods from the names in testmeths. +# Synthesize all the other AllTests methods from the names in testmeths. method_template = """\ + at trackCall def __%(method)s__(self, *args): - print "__%(method)s__:", args + pass """ for method in testmeths: @@ -120,293 +130,494 @@ del method, method_template -# this also tests __init__ of course. -testme = AllTests() - -# Binary operations - -testme + 1 -1 + testme - -testme - 1 -1 - testme - -testme * 1 -1 * testme - -if 1/2 == 0: - testme / 1 - 1 / testme -else: - # True division is in effect, so "/" doesn't map to __div__ etc; but - # the canned expected-output file requires that __div__ etc get called. - testme.__coerce__(1) - testme.__div__(1) - testme.__coerce__(1) - testme.__rdiv__(1) - -testme % 1 -1 % testme - -divmod(testme,1) -divmod(1, testme) - -testme ** 1 -1 ** testme - -testme >> 1 -1 >> testme - -testme << 1 -1 << testme - -testme & 1 -1 & testme - -testme | 1 -1 | testme - -testme ^ 1 -1 ^ testme - - -# List/dict operations - -class Empty: pass - -try: - 1 in Empty() - print 'failed, should have raised TypeError' -except TypeError: - pass - -1 in testme - -testme[1] -testme[1] = 1 -del testme[1] - -testme[:42] -testme[:42] = "The Answer" -del testme[:42] - -testme[2:1024:10] -testme[2:1024:10] = "A lot" -del testme[2:1024:10] - -testme[:42, ..., :24:, 24, 100] -testme[:42, ..., :24:, 24, 100] = "Strange" -del testme[:42, ..., :24:, 24, 100] - +class ClassTests(unittest.TestCase): + def setUp(self): + callLst[:] = [] + + def assertCallStack(self, expected_calls): + actualCallList = callLst[:] # need to copy because the comparison below will add + # additional calls to callLst + if expected_calls != actualCallList: + self.fail("Expected call list:\n %s\ndoes not match actual call list\n %s" % + (expected_calls, actualCallList)) + + def testInit(self): + foo = AllTests() + self.assertCallStack([("__init__", (foo,))]) + + def testBinaryOps(self): + testme = AllTests() + # Binary operations + + callLst[:] = [] + testme + 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__add__", (testme, 1))]) + + callLst[:] = [] + 1 + testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__radd__", (testme, 1))]) + + callLst[:] = [] + testme - 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__sub__", (testme, 1))]) + + callLst[:] = [] + 1 - testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rsub__", (testme, 1))]) + + callLst[:] = [] + testme * 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__mul__", (testme, 1))]) + + callLst[:] = [] + 1 * testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rmul__", (testme, 1))]) + + if 1/2 == 0: + callLst[:] = [] + testme / 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__div__", (testme, 1))]) + + + callLst[:] = [] + 1 / testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rdiv__", (testme, 1))]) + + callLst[:] = [] + testme % 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__mod__", (testme, 1))]) + + callLst[:] = [] + 1 % testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rmod__", (testme, 1))]) + + + callLst[:] = [] + divmod(testme,1) + self.assertCallStack([("__coerce__", (testme, 1)), ("__divmod__", (testme, 1))]) + + callLst[:] = [] + divmod(1, testme) + self.assertCallStack([("__coerce__", (testme, 1)), ("__rdivmod__", (testme, 1))]) + + callLst[:] = [] + testme ** 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__pow__", (testme, 1))]) + + callLst[:] = [] + 1 ** testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rpow__", (testme, 1))]) + + callLst[:] = [] + testme >> 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__rshift__", (testme, 1))]) + + callLst[:] = [] + 1 >> testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rrshift__", (testme, 1))]) + + callLst[:] = [] + testme << 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__lshift__", (testme, 1))]) + + callLst[:] = [] + 1 << testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rlshift__", (testme, 1))]) + + callLst[:] = [] + testme & 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__and__", (testme, 1))]) + + callLst[:] = [] + 1 & testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rand__", (testme, 1))]) + + callLst[:] = [] + testme | 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__or__", (testme, 1))]) + + callLst[:] = [] + 1 | testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__ror__", (testme, 1))]) + + callLst[:] = [] + testme ^ 1 + self.assertCallStack([("__coerce__", (testme, 1)), ("__xor__", (testme, 1))]) + + callLst[:] = [] + 1 ^ testme + self.assertCallStack([("__coerce__", (testme, 1)), ("__rxor__", (testme, 1))]) + + def testListAndDictOps(self): + testme = AllTests() + + # List/dict operations + + class Empty: pass + + try: + 1 in Empty() + self.fail('failed, should have raised TypeError') + except TypeError: + pass + + callLst[:] = [] + 1 in testme + self.assertCallStack([('__contains__', (testme, 1))]) + + callLst[:] = [] + testme[1] + self.assertCallStack([('__getitem__', (testme, 1))]) + + callLst[:] = [] + testme[1] = 1 + self.assertCallStack([('__setitem__', (testme, 1, 1))]) + + callLst[:] = [] + del testme[1] + self.assertCallStack([('__delitem__', (testme, 1))]) + + callLst[:] = [] + testme[:42] + self.assertCallStack([('__getslice__', (testme, 0, 42))]) + + callLst[:] = [] + testme[:42] = "The Answer" + self.assertCallStack([('__setslice__', (testme, 0, 42, "The Answer"))]) + + callLst[:] = [] + del testme[:42] + self.assertCallStack([('__delslice__', (testme, 0, 42))]) + + callLst[:] = [] + testme[2:1024:10] + self.assertCallStack([('__getitem__', (testme, slice(2, 1024, 10)))]) + + callLst[:] = [] + testme[2:1024:10] = "A lot" + self.assertCallStack([('__setitem__', (testme, slice(2, 1024, 10), + "A lot"))]) + callLst[:] = [] + del testme[2:1024:10] + self.assertCallStack([('__delitem__', (testme, slice(2, 1024, 10)))]) + + callLst[:] = [] + testme[:42, ..., :24:, 24, 100] + self.assertCallStack([('__getitem__', (testme, (slice(None, 42, None), + Ellipsis, + slice(None, 24, None), + 24, 100)))]) + callLst[:] = [] + testme[:42, ..., :24:, 24, 100] = "Strange" + self.assertCallStack([('__setitem__', (testme, (slice(None, 42, None), + Ellipsis, + slice(None, 24, None), + 24, 100), "Strange"))]) + callLst[:] = [] + del testme[:42, ..., :24:, 24, 100] + self.assertCallStack([('__delitem__', (testme, (slice(None, 42, None), + Ellipsis, + slice(None, 24, None), + 24, 100)))]) + + # Now remove the slice hooks to see if converting normal slices to + # slice object works. + + getslice = AllTests.__getslice__ + del AllTests.__getslice__ + setslice = AllTests.__setslice__ + del AllTests.__setslice__ + delslice = AllTests.__delslice__ + del AllTests.__delslice__ + + # XXX when using new-style classes the slice testme[:42] produces + # slice(None, 42, None) instead of slice(0, 42, None). py3k will have + # to change this test. + callLst[:] = [] + testme[:42] + self.assertCallStack([('__getitem__', (testme, slice(0, 42, None)))]) + + callLst[:] = [] + testme[:42] = "The Answer" + self.assertCallStack([('__setitem__', (testme, slice(0, 42, None), + "The Answer"))]) + callLst[:] = [] + del testme[:42] + self.assertCallStack([('__delitem__', (testme, slice(0, 42, None)))]) + + # Restore the slice methods, or the tests will fail with regrtest -R. + AllTests.__getslice__ = getslice + AllTests.__setslice__ = setslice + AllTests.__delslice__ = delslice + + + def testUnaryOps(self): + testme = AllTests() + + callLst[:] = [] + -testme + self.assertCallStack([('__neg__', (testme,))]) + callLst[:] = [] + +testme + self.assertCallStack([('__pos__', (testme,))]) + callLst[:] = [] + abs(testme) + self.assertCallStack([('__abs__', (testme,))]) + callLst[:] = [] + int(testme) + self.assertCallStack([('__int__', (testme,))]) + callLst[:] = [] + long(testme) + self.assertCallStack([('__long__', (testme,))]) + callLst[:] = [] + float(testme) + self.assertCallStack([('__float__', (testme,))]) + callLst[:] = [] + oct(testme) + self.assertCallStack([('__oct__', (testme,))]) + callLst[:] = [] + hex(testme) + self.assertCallStack([('__hex__', (testme,))]) + + + def testMisc(self): + testme = AllTests() + + callLst[:] = [] + hash(testme) + self.assertCallStack([('__hash__', (testme,))]) + + callLst[:] = [] + repr(testme) + self.assertCallStack([('__repr__', (testme,))]) + + callLst[:] = [] + str(testme) + self.assertCallStack([('__str__', (testme,))]) + + callLst[:] = [] + testme == 1 + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) + + callLst[:] = [] + testme < 1 + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) + + callLst[:] = [] + testme > 1 + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) + + callLst[:] = [] + testme <> 1 # XXX kill this in py3k + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) + + callLst[:] = [] + testme != 1 + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) + + callLst[:] = [] + 1 == testme + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) + + callLst[:] = [] + 1 < testme + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) + + callLst[:] = [] + 1 > testme + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) + + callLst[:] = [] + 1 <> testme + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) + + callLst[:] = [] + 1 != testme + self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) + + + def testGetSetAndDel(self): + # Interfering tests + class ExtraTests(AllTests): + @trackCall + def __getattr__(self, *args): + return "SomeVal" + + @trackCall + def __setattr__(self, *args): + pass + + @trackCall + def __delattr__(self, *args): + pass + + testme = ExtraTests() + + callLst[:] = [] + testme.spam + self.assertCallStack([('__getattr__', (testme, "spam"))]) + + callLst[:] = [] + testme.eggs = "spam, spam, spam and ham" + self.assertCallStack([('__setattr__', (testme, "eggs", + "spam, spam, spam and ham"))]) + + callLst[:] = [] + del testme.cardinal + self.assertCallStack([('__delattr__', (testme, "cardinal"))]) + + def testDel(self): + x = [] + + class DelTest: + def __del__(self): + x.append("crab people, crab people") + testme = DelTest() + del testme + import gc + gc.collect() + self.assertEquals(["crab people, crab people"], x) + + def testBadTypeReturned(self): + # return values of some method are type-checked + class BadTypeClass: + def __int__(self): + return None + __float__ = __int__ + __long__ = __int__ + __str__ = __int__ + __repr__ = __int__ + __oct__ = __int__ + __hex__ = __int__ + + for f in [int, float, long, str, repr, oct, hex]: + self.assertRaises(TypeError, f, BadTypeClass()) + + def testMixIntsAndLongs(self): + # mixing up ints and longs is okay + class IntLongMixClass: + @trackCall + def __int__(self): + return 42L + + @trackCall + def __long__(self): + return 64 + + mixIntAndLong = IntLongMixClass() + + callLst[:] = [] + as_int = int(mixIntAndLong) + self.assertEquals(type(as_int), long) + self.assertEquals(as_int, 42L) + self.assertCallStack([('__int__', (mixIntAndLong,))]) + + callLst[:] = [] + as_long = long(mixIntAndLong) + self.assertEquals(type(as_long), int) + self.assertEquals(as_long, 64) + self.assertCallStack([('__long__', (mixIntAndLong,))]) + + def testHashStuff(self): + # Test correct errors from hash() on objects with comparisons but + # no __hash__ + + class C0: + pass + + hash(C0()) # This should work; the next two should raise TypeError + + class C1: + def __cmp__(self, other): return 0 + + self.assertRaises(TypeError, hash, C1()) + + class C2: + def __eq__(self, other): return 1 + + self.assertRaises(TypeError, hash, C2()) + + + def testSFBug532646(self): + # Test for SF bug 532646 + + class A: + pass + A.__call__ = A() + a = A() + + try: + a() # This should not segfault + except RuntimeError: + pass + else: + self.fail("Failed to raise RuntimeError") + + def testForExceptionsRaisedInInstanceGetattr2(self): + # Tests for exceptions raised in instance_getattr2(). + + def booh(self): + raise AttributeError("booh") + + class A: + a = property(booh) + try: + A().a # Raised AttributeError: A instance has no attribute 'a' + except AttributeError, x: + if str(x) != "booh": + self.fail("attribute error for A().a got masked: %s" % x) + + class E: + __eq__ = property(booh) + E() == E() # In debug mode, caused a C-level assert() to fail + + class I: + __init__ = property(booh) + try: + # In debug mode, printed XXX undetected error and + # raises AttributeError + I() + except AttributeError, x: + pass + else: + self.fail("attribute error for I.__init__ got masked") + + def testHashComparisonOfMethods(self): + # Test comparison and hash of methods + class A: + def __init__(self, x): + self.x = x + def f(self): + pass + def g(self): + pass + def __eq__(self, other): + return self.x == other.x + def __hash__(self): + return self.x + class B(A): + pass + + a1 = A(1) + a2 = A(2) + self.assertEquals(a1.f, a1.f) + self.assertNotEquals(a1.f, a2.f) + self.assertNotEquals(a1.f, a1.g) + self.assertEquals(a1.f, A(1).f) + self.assertEquals(hash(a1.f), hash(a1.f)) + self.assertEquals(hash(a1.f), hash(A(1).f)) + + self.assertNotEquals(A.f, a1.f) + self.assertNotEquals(A.f, A.g) + self.assertEquals(B.f, A.f) + self.assertEquals(hash(B.f), hash(A.f)) + + # the following triggers a SystemError in 2.4 + a = A(hash(A.f.im_func)^(-1)) + hash(a.f) -# Now remove the slice hooks to see if converting normal slices to slice -# object works. - -del AllTests.__getslice__ -del AllTests.__setslice__ -del AllTests.__delslice__ - -import sys -if sys.platform[:4] != 'java': - testme[:42] - testme[:42] = "The Answer" - del testme[:42] -else: - # This works under Jython, but the actual slice values are - # different. - print "__getitem__: (slice(0, 42, None),)" - print "__setitem__: (slice(0, 42, None), 'The Answer')" - print "__delitem__: (slice(0, 42, None),)" - -# Unary operations - --testme -+testme -abs(testme) -int(testme) -long(testme) -float(testme) -oct(testme) -hex(testme) - -# And the rest... - -hash(testme) -repr(testme) -str(testme) - -testme == 1 -testme < 1 -testme > 1 -testme <> 1 -testme != 1 -1 == testme -1 < testme -1 > testme -1 <> testme -1 != testme - -# This test has to be last (duh.) - -del testme -if sys.platform[:4] == 'java': - import java - java.lang.System.gc() - -# Interfering tests - -class ExtraTests: - def __getattr__(self, *args): - print "__getattr__:", args - return "SomeVal" - - def __setattr__(self, *args): - print "__setattr__:", args - - def __delattr__(self, *args): - print "__delattr__:", args - -testme = ExtraTests() -testme.spam -testme.eggs = "spam, spam, spam and ham" -del testme.cardinal - - -# return values of some method are type-checked -class BadTypeClass: - def __int__(self): - return None - __float__ = __int__ - __long__ = __int__ - __str__ = __int__ - __repr__ = __int__ - __oct__ = __int__ - __hex__ = __int__ - -def check_exc(stmt, exception): - """Raise TestFailed if executing 'stmt' does not raise 'exception' - """ - try: - exec stmt - except exception: - pass - else: - raise TestFailed, "%s should raise %s" % (stmt, exception) - -check_exc("int(BadTypeClass())", TypeError) -check_exc("float(BadTypeClass())", TypeError) -check_exc("long(BadTypeClass())", TypeError) -check_exc("str(BadTypeClass())", TypeError) -check_exc("repr(BadTypeClass())", TypeError) -check_exc("oct(BadTypeClass())", TypeError) -check_exc("hex(BadTypeClass())", TypeError) - -# mixing up ints and longs is okay -class IntLongMixClass: - def __int__(self): - return 0L - - def __long__(self): - return 0 - -try: - int(IntLongMixClass()) -except TypeError: - raise TestFailed, "TypeError should not be raised" - -try: - long(IntLongMixClass()) -except TypeError: - raise TestFailed, "TypeError should not be raised" - - -# Test correct errors from hash() on objects with comparisons but no __hash__ - -class C0: - pass - -hash(C0()) # This should work; the next two should raise TypeError - -class C1: - def __cmp__(self, other): return 0 - -check_exc("hash(C1())", TypeError) - -class C2: - def __eq__(self, other): return 1 - -check_exc("hash(C2())", TypeError) - -# Test for SF bug 532646 - -class A: - pass -A.__call__ = A() -a = A() -try: - a() # This should not segfault -except RuntimeError: - pass -else: - raise TestFailed, "how could this not have overflowed the stack?" - - -# Tests for exceptions raised in instance_getattr2(). - -def booh(self): - raise AttributeError, "booh" - -class A: - a = property(booh) -try: - A().a # Raised AttributeError: A instance has no attribute 'a' -except AttributeError, x: - if str(x) != "booh": - print "attribute error for A().a got masked:", str(x) - -class E: - __eq__ = property(booh) -E() == E() # In debug mode, caused a C-level assert() to fail - -class I: - __init__ = property(booh) -try: - I() # In debug mode, printed XXX undetected error and raises AttributeError -except AttributeError, x: - pass -else: - print "attribute error for I.__init__ got masked" - - -# Test comparison and hash of methods -class A: - def __init__(self, x): - self.x = x - def f(self): - pass - def g(self): - pass - def __eq__(self, other): - return self.x == other.x - def __hash__(self): - return self.x -class B(A): - pass +def test_main(): + test_support.run_unittest(ClassTests) -a1 = A(1) -a2 = A(2) -assert a1.f == a1.f -assert a1.f != a2.f -assert a1.f != a1.g -assert a1.f == A(1).f -assert hash(a1.f) == hash(a1.f) -assert hash(a1.f) == hash(A(1).f) - -assert A.f != a1.f -assert A.f != A.g -assert B.f == A.f -assert hash(B.f) == hash(A.f) - -# the following triggers a SystemError in 2.4 -a = A(hash(A.f.im_func)^(-1)) -hash(a.f) +if __name__=='__main__': + test_main() Modified: python/branches/bcannon-objcap/Lib/test/test_cmd_line.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_cmd_line.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_cmd_line.py Thu Sep 6 21:35:45 2007 @@ -3,18 +3,25 @@ import sys import subprocess +def _spawn_python(*args): + cmd_line = [sys.executable] + cmd_line.extend(args) + return subprocess.Popen(cmd_line, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + +def _kill_python(p): + p.stdin.close() + data = p.stdout.read() + p.stdout.close() + # try to cleanup the child so we don't appear to leak when running + # with regrtest -R. This should be a no-op on Windows. + subprocess._cleanup() + return data + class CmdLineTest(unittest.TestCase): - def start_python(self, cmd_line): - cmd = '"%s" %s' % (sys.executable, cmd_line) - p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - p.stdin.close() - data = p.stdout.read() - p.stdout.close() - # try to cleanup the child so we don't appear to leak when running - # with regrtest -R. This should be a no-op on Windows. - subprocess._cleanup() - return data + def start_python(self, *args): + p = _spawn_python(*args) + return _kill_python(p) def exit_code(self, *args): cmd_line = [sys.executable] @@ -72,6 +79,17 @@ self.exit_code('-m', 'timeit', '-n', '1'), 0) + def test_run_module_bug1764407(self): + # -m and -i need to play well together + # Runs the timeit module and checks the __main__ + # namespace has been populated appropriately + p = _spawn_python('-i', '-m', 'timeit', '-n', '1') + p.stdin.write('Timer\n') + p.stdin.write('exit()\n') + data = _kill_python(p) + self.assertTrue(data.startswith('1 loop')) + self.assertTrue('__main__.Timer' in data) + def test_run_code(self): # Test expected operation of the '-c' switch # Switch needs an argument Modified: python/branches/bcannon-objcap/Lib/test/test_codeccallbacks.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_codeccallbacks.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_codeccallbacks.py Thu Sep 6 21:35:45 2007 @@ -285,7 +285,8 @@ def test_longstrings(self): # test long strings to check for memory overflow problems - errors = [ "strict", "ignore", "replace", "xmlcharrefreplace", "backslashreplace"] + errors = [ "strict", "ignore", "replace", "xmlcharrefreplace", + "backslashreplace"] # register the handlers under different names, # to prevent the codec from recognizing the name for err in errors: @@ -293,7 +294,8 @@ l = 1000 errors += [ "test." + err for err in errors ] for uni in [ s*l for s in (u"x", u"\u3042", u"a\xe4") ]: - for enc in ("ascii", "latin-1", "iso-8859-1", "iso-8859-15", "utf-8", "utf-7", "utf-16"): + for enc in ("ascii", "latin-1", "iso-8859-1", "iso-8859-15", + "utf-8", "utf-7", "utf-16", "utf-32"): for err in errors: try: uni.encode(enc, err) Modified: python/branches/bcannon-objcap/Lib/test/test_codecencodings_kr.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_codecencodings_kr.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_codecencodings_kr.py Thu Sep 6 21:35:45 2007 @@ -30,6 +30,24 @@ ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\uc894"), ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\uc894\ufffd"), ("abc\x80\x80\xc1\xc4", "ignore", u"abc\uc894"), + + # composed make-up sequence errors + ("\xa4\xd4", "strict", None), + ("\xa4\xd4\xa4", "strict", None), + ("\xa4\xd4\xa4\xb6", "strict", None), + ("\xa4\xd4\xa4\xb6\xa4", "strict", None), + ("\xa4\xd4\xa4\xb6\xa4\xd0", "strict", None), + ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4", "strict", None), + ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xd4", "strict", u"\uc4d4"), + ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xd4x", "strict", u"\uc4d4x"), + ("a\xa4\xd4\xa4\xb6\xa4", "replace", u"a\ufffd"), + ("\xa4\xd4\xa3\xb6\xa4\xd0\xa4\xd4", "strict", None), + ("\xa4\xd4\xa4\xb6\xa3\xd0\xa4\xd4", "strict", None), + ("\xa4\xd4\xa4\xb6\xa4\xd0\xa3\xd4", "strict", None), + ("\xa4\xd4\xa4\xff\xa4\xd0\xa4\xd4", "replace", u"\ufffd"), + ("\xa4\xd4\xa4\xb6\xa4\xff\xa4\xd4", "replace", u"\ufffd"), + ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xff", "replace", u"\ufffd"), + ("\xc1\xc4", "strict", u"\uc894"), ) class Test_JOHAB(test_multibytecodec_support.TestBase, unittest.TestCase): Modified: python/branches/bcannon-objcap/Lib/test/test_codecmaps_cn.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_codecmaps_cn.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_codecmaps_cn.py Thu Sep 6 21:35:45 2007 @@ -19,6 +19,13 @@ mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/VENDORS/' \ 'MICSFT/WINDOWS/CP936.TXT' +class TestGB18030Map(test_multibytecodec_support.TestBase_Mapping, + unittest.TestCase): + encoding = 'gb18030' + mapfileurl = 'http://source.icu-project.org/repos/icu/data/' \ + 'trunk/charset/data/xml/gb-18030-2000.xml' + + def test_main(): test_support.run_unittest(__name__) Modified: python/branches/bcannon-objcap/Lib/test/test_codecmaps_kr.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_codecmaps_kr.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_codecmaps_kr.py Thu Sep 6 21:35:45 2007 @@ -20,6 +20,10 @@ encoding = 'euc_kr' mapfileurl = 'http://people.freebsd.org/~perky/i18n/EUC-KR.TXT' + # A4D4 HANGUL FILLER indicates the begin of 8-bytes make-up sequence. + pass_enctest = [('\xa4\xd4', u'\u3164')] + pass_dectest = [('\xa4\xd4', u'\u3164')] + class TestJOHABMap(test_multibytecodec_support.TestBase_Mapping, unittest.TestCase): Modified: python/branches/bcannon-objcap/Lib/test/test_codecs.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_codecs.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_codecs.py Thu Sep 6 21:35:45 2007 @@ -244,6 +244,137 @@ self.assertEqual(reader.readline(), s5) self.assertEqual(reader.readline(), u"") +class UTF32Test(ReadTest): + encoding = "utf-32" + + spamle = ('\xff\xfe\x00\x00' + 's\x00\x00\x00p\x00\x00\x00a\x00\x00\x00m\x00\x00\x00' + 's\x00\x00\x00p\x00\x00\x00a\x00\x00\x00m\x00\x00\x00') + spambe = ('\x00\x00\xfe\xff' + '\x00\x00\x00s\x00\x00\x00p\x00\x00\x00a\x00\x00\x00m' + '\x00\x00\x00s\x00\x00\x00p\x00\x00\x00a\x00\x00\x00m') + + def test_only_one_bom(self): + _,_,reader,writer = codecs.lookup(self.encoding) + # encode some stream + s = StringIO.StringIO() + f = writer(s) + f.write(u"spam") + f.write(u"spam") + d = s.getvalue() + # check whether there is exactly one BOM in it + self.assert_(d == self.spamle or d == self.spambe) + # try to read it back + s = StringIO.StringIO(d) + f = reader(s) + self.assertEquals(f.read(), u"spamspam") + + def test_badbom(self): + s = StringIO.StringIO(4*"\xff") + f = codecs.getreader(self.encoding)(s) + self.assertRaises(UnicodeError, f.read) + + s = StringIO.StringIO(8*"\xff") + f = codecs.getreader(self.encoding)(s) + self.assertRaises(UnicodeError, f.read) + + def test_partial(self): + self.check_partial( + u"\x00\xff\u0100\uffff", + [ + u"", # first byte of BOM read + u"", # second byte of BOM read + u"", # third byte of BOM read + u"", # fourth byte of BOM read => byteorder known + u"", + u"", + u"", + u"\x00", + u"\x00", + u"\x00", + u"\x00", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100\uffff", + ] + ) + + def test_errors(self): + self.assertRaises(UnicodeDecodeError, codecs.utf_32_decode, + "\xff", "strict", True) + +class UTF32LETest(ReadTest): + encoding = "utf-32-le" + + def test_partial(self): + self.check_partial( + u"\x00\xff\u0100\uffff", + [ + u"", + u"", + u"", + u"\x00", + u"\x00", + u"\x00", + u"\x00", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100\uffff", + ] + ) + + def test_simple(self): + self.assertEqual(u"\U00010203".encode(self.encoding), "\x03\x02\x01\x00") + + def test_errors(self): + self.assertRaises(UnicodeDecodeError, codecs.utf_32_le_decode, + "\xff", "strict", True) + +class UTF32BETest(ReadTest): + encoding = "utf-32-be" + + def test_partial(self): + self.check_partial( + u"\x00\xff\u0100\uffff", + [ + u"", + u"", + u"", + u"\x00", + u"\x00", + u"\x00", + u"\x00", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100", + u"\x00\xff\u0100\uffff", + ] + ) + + def test_simple(self): + self.assertEqual(u"\U00010203".encode(self.encoding), "\x00\x01\x02\x03") + + def test_errors(self): + self.assertRaises(UnicodeDecodeError, codecs.utf_32_be_decode, + "\xff", "strict", True) + class UTF16Test(ReadTest): encoding = "utf-16" @@ -1278,6 +1409,9 @@ def test_main(): test_support.run_unittest( + UTF32Test, + UTF32LETest, + UTF32BETest, UTF16Test, UTF16LETest, UTF16BETest, Modified: python/branches/bcannon-objcap/Lib/test/test_compiler.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_compiler.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_compiler.py Thu Sep 6 21:35:45 2007 @@ -155,6 +155,32 @@ self.assertEquals(dct.get('result'), 1) + def _testErrEnc(self, src, text, offset): + try: + compile(src, "", "exec") + except SyntaxError, e: + self.assertEquals(e.offset, offset) + self.assertEquals(e.text, text) + + def testSourceCodeEncodingsError(self): + # Test SyntaxError with encoding definition + sjis = "print '\x83\x70\x83\x43\x83\x5c\x83\x93', '\n" + ascii = "print '12345678', '\n" + encdef = "#! -*- coding: ShiftJIS -*-\n" + + # ascii source without encdef + self._testErrEnc(ascii, ascii, 19) + + # ascii source with encdef + self._testErrEnc(encdef+ascii, ascii, 19) + + # non-ascii source with encdef + self._testErrEnc(encdef+sjis, sjis, 19) + + # ShiftJIS source without encdef + self._testErrEnc(sjis, sjis, 19) + + NOLINENO = (compiler.ast.Module, compiler.ast.Stmt, compiler.ast.Discard) ############################################################################### Modified: python/branches/bcannon-objcap/Lib/test/test_datetime.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_datetime.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_datetime.py Thu Sep 6 21:35:45 2007 @@ -989,7 +989,7 @@ self.failUnless(self.theclass.min) self.failUnless(self.theclass.max) - def test_srftime_out_of_range(self): + def test_strftime_out_of_range(self): # For nasty technical reasons, we can't handle years before 1900. cls = self.theclass self.assertEqual(cls(1900, 1, 1).strftime("%Y"), "1900") Modified: python/branches/bcannon-objcap/Lib/test/test_exceptions.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_exceptions.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_exceptions.py Thu Sep 6 21:35:45 2007 @@ -6,7 +6,7 @@ import pickle, cPickle from test.test_support import (TESTFN, unlink, run_unittest, - guard_warnings_filter) + catch_warning) from test.test_pep352 import ignore_message_warning # XXX This is not really enough, each *operation* should be tested! @@ -274,7 +274,7 @@ except NameError: pass - with guard_warnings_filter(): + with catch_warning(): ignore_message_warning() for exc, args, expected in exceptionList: try: Modified: python/branches/bcannon-objcap/Lib/test/test_float.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_float.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_float.py Thu Sep 6 21:35:45 2007 @@ -81,6 +81,7 @@ # on an IEEE platform, all we guarantee is that bit patterns # representing infinities or NaNs do not raise an exception; all else # is accident (today). +# let's also try to guarantee that -0.0 and 0.0 don't get confused. class IEEEFormatTestCase(unittest.TestCase): if float.__getformat__("double").startswith("IEEE"): @@ -99,6 +100,20 @@ ('= 0, not -1") + try: + self.dev.setparameters(rate, -2, nchannels, fmt) + except ValueError, err: + self.assertEquals(err.args[0], "expected sample size >= 0, not -2") + try: + self.dev.setparameters(rate, size, 3, fmt) + except ValueError, err: + self.assertEquals(err.args[0], "nchannels must be 1 or 2, not 3") + try: + self.dev.setparameters(rate, size, nchannels, 177) + except ValueError, err: + self.assertEquals(err.args[0], "unknown audio encoding: 177") + try: + self.dev.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE) + except ValueError, err: + self.assertEquals(err.args[0], "for linear unsigned 16-bit little-endian " + "audio, expected sample size 16, not 8") + try: + self.dev.setparameters(rate, 16, nchannels, fmt) + except ValueError, err: + self.assertEquals(err.args[0], "for linear unsigned 8-bit audio, expected " + "sample size 8, not 16") + +def test_main(): try: - a = linuxaudiodev.open('w') + dsp = linuxaudiodev.open('w') except linuxaudiodev.error, msg: - if msg[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY): - raise TestSkipped, msg - raise TestFailed, msg - - # convert the data to 16-bit signed - data = audioop.ulaw2lin(data, 2) - - # set the data format - if sys.byteorder == 'little': - fmt = linuxaudiodev.AFMT_S16_LE - else: - fmt = linuxaudiodev.AFMT_S16_BE - - # at least check that these methods can be invoked - a.bufsize() - a.obufcount() - a.obuffree() - a.getptr() - a.fileno() - - # set parameters based on .au file headers - a.setparameters(rate, 16, nchannels, fmt) - a.write(data) - a.flush() - a.close() - -def test_errors(): - a = linuxaudiodev.open("w") - size = 8 - fmt = linuxaudiodev.AFMT_U8 - rate = 8000 - nchannels = 1 - try: - a.setparameters(-1, size, nchannels, fmt) - except ValueError, msg: - print msg - try: - a.setparameters(rate, -2, nchannels, fmt) - except ValueError, msg: - print msg - try: - a.setparameters(rate, size, 3, fmt) - except ValueError, msg: - print msg - try: - a.setparameters(rate, size, nchannels, 177) - except ValueError, msg: - print msg - try: - a.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE) - except ValueError, msg: - print msg - try: - a.setparameters(rate, 16, nchannels, fmt) - except ValueError, msg: - print msg - -def test(): - play_sound_file(findfile('audiotest.au')) - test_errors() + if msg.args[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY): + raise TestSkipped(msg) + raise + dsp.close() + run_unittest(LinuxAudioDevTests) -test() +if __name__ == '__main__': + test_main() Modified: python/branches/bcannon-objcap/Lib/test/test_macostools.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_macostools.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_macostools.py Thu Sep 6 21:35:45 2007 @@ -52,7 +52,7 @@ def test_touched(self): # This really only tests that nothing unforeseen happens. import warnings - with test_support.guard_warnings_filter(): + with test_support.catch_warning(): warnings.filterwarnings('ignore', 'macostools.touched*', DeprecationWarning) macostools.touched(test_support.TESTFN) Modified: python/branches/bcannon-objcap/Lib/test/test_mailbox.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_mailbox.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_mailbox.py Thu Sep 6 21:35:45 2007 @@ -686,7 +686,18 @@ folder1_alias = box.get_folder('folder1') self.assert_(folder1_alias._factory is dummy_factory) - + def test_directory_in_folder (self): + # Test that mailboxes still work if there's a stray extra directory + # in a folder. + for i in range(10): + self._box.add(mailbox.Message(_sample_message)) + + # Create a stray directory + os.mkdir(os.path.join(self._path, 'cur', 'stray-dir')) + + # Check that looping still works with the directory present. + for msg in self._box: + pass class _TestMboxMMDF(TestMailbox): Modified: python/branches/bcannon-objcap/Lib/test/test_math.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_math.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_math.py Thu Sep 6 21:35:45 2007 @@ -12,7 +12,11 @@ def ftest(self, name, value, expected): if abs(value-expected) > eps: - self.fail('%s returned %f, expected %f'%\ + # Use %r instead of %f so the error message + # displays full precision. Otherwise discrepancies + # in the last few bits will lead to very confusing + # error messages + self.fail('%s returned %r, expected %r' % (name, value, expected)) def testConstants(self): @@ -92,6 +96,10 @@ self.ftest('floor(-0.5)', math.floor(-0.5), -1) self.ftest('floor(-1.0)', math.floor(-1.0), -1) self.ftest('floor(-1.5)', math.floor(-1.5), -2) + # pow() relies on floor() to check for integers + # This fails on some platforms - so check it here + self.ftest('floor(1.23e167)', math.floor(1.23e167), 1.23e167) + self.ftest('floor(-1.23e167)', math.floor(-1.23e167), -1.23e167) def testFmod(self): self.assertRaises(TypeError, math.fmod) Modified: python/branches/bcannon-objcap/Lib/test/test_mmap.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_mmap.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_mmap.py Thu Sep 6 21:35:45 2007 @@ -306,6 +306,40 @@ m[x] = ch = chr(x & 255) self.assertEqual(m[x], ch) + def test_extended_getslice(self): + # Test extended slicing by comparing with list slicing. + s = "".join(chr(c) for c in reversed(range(256))) + m = mmap.mmap(-1, len(s)) + m[:] = s + self.assertEqual(m[:], s) + indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300) + for start in indices: + for stop in indices: + # Skip step 0 (invalid) + for step in indices[1:]: + self.assertEqual(m[start:stop:step], + s[start:stop:step]) + + def test_extended_set_del_slice(self): + # Test extended slicing by comparing with list slicing. + s = "".join(chr(c) for c in reversed(range(256))) + m = mmap.mmap(-1, len(s)) + indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300) + for start in indices: + for stop in indices: + # Skip invalid step 0 + for step in indices[1:]: + m[:] = s + self.assertEqual(m[:], s) + L = list(s) + # Make sure we have a slice of exactly the right length, + # but with different data. + data = L[start:stop:step] + data = "".join(reversed(data)) + L[start:stop:step] = data + m[start:stop:step] = data + self.assertEquals(m[:], "".join(L)) + def test_main(): run_unittest(MmapTests) Modified: python/branches/bcannon-objcap/Lib/test/test_multibytecodec_support.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_multibytecodec_support.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_multibytecodec_support.py Thu Sep 6 21:35:45 2007 @@ -5,7 +5,7 @@ # import sys, codecs, os.path -import unittest +import unittest, re from test import test_support from StringIO import StringIO @@ -272,6 +272,12 @@ return test_support.open_urlresource(self.mapfileurl) def test_mapping_file(self): + if self.mapfileurl.endswith('.xml'): + self._test_mapping_file_ucm() + else: + self._test_mapping_file_plain() + + def _test_mapping_file_plain(self): unichrs = lambda s: u''.join(map(unichr, map(eval, s.split('+')))) urt_wa = {} @@ -303,6 +309,14 @@ self._testpoint(csetch, unich) + def _test_mapping_file_ucm(self): + ucmdata = self.open_mapping_file().read() + uc = re.findall('', ucmdata) + for uni, coded in uc: + unich = unichr(int(uni, 16)) + codech = ''.join(chr(int(c, 16)) for c in coded.split()) + self._testpoint(codech, unich) + def test_mapping_supplemental(self): for mapping in self.supmaps: self._testpoint(*mapping) Modified: python/branches/bcannon-objcap/Lib/test/test_os.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_os.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_os.py Thu Sep 6 21:35:45 2007 @@ -235,10 +235,20 @@ # Restrict test to Win32, since there is no guarantee other # systems support centiseconds if sys.platform == 'win32': - def test_1565150(self): - t1 = 1159195039.25 - os.utime(self.fname, (t1, t1)) - self.assertEquals(os.stat(self.fname).st_mtime, t1) + def get_file_system(path): + import os + root = os.path.splitdrive(os.path.realpath("."))[0] + '\\' + import ctypes + kernel32 = ctypes.windll.kernel32 + buf = ctypes.create_string_buffer("", 100) + if kernel32.GetVolumeInformationA(root, None, 0, None, None, None, buf, len(buf)): + return buf.value + + if get_file_system(test_support.TESTFN) == "NTFS": + def test_1565150(self): + t1 = 1159195039.25 + os.utime(self.fname, (t1, t1)) + self.assertEquals(os.stat(self.fname).st_mtime, t1) def test_1686475(self): # Verify that an open file can be stat'ed Modified: python/branches/bcannon-objcap/Lib/test/test_ossaudiodev.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_ossaudiodev.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_ossaudiodev.py Thu Sep 6 21:35:45 2007 @@ -76,8 +76,7 @@ # set parameters based on .au file headers dsp.setparameters(AFMT_S16_NE, nchannels, rate) - print ("playing test sound file (expected running time: %.2f sec)" - % expected_time) + self.assertEquals("%.2f" % expected_time, "2.93") t1 = time.time() dsp.write(data) dsp.close() @@ -119,7 +118,6 @@ "setparameters%r: returned %r" % (config, result)) def set_bad_parameters(self, dsp): - # Now try some configurations that are presumably bogus: eg. 300 # channels currently exceeds even Hollywood's ambitions, and # negative sampling rate is utter nonsense. setparameters() should @@ -164,10 +162,11 @@ def test_main(): try: dsp = ossaudiodev.open('w') - except IOError, msg: + except (ossaudiodev.error, IOError), msg: if msg[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY): raise TestSkipped(msg) raise + dsp.close() test_support.run_unittest(__name__) if __name__ == "__main__": Modified: python/branches/bcannon-objcap/Lib/test/test_parser.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_parser.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_parser.py Thu Sep 6 21:35:45 2007 @@ -474,6 +474,12 @@ st = parser.suite('1 = 3 + 4') self.assertRaises(SyntaxError, parser.compilest, st) + def test_compile_badunicode(self): + st = parser.suite('a = u"\U12345678"') + self.assertRaises(SyntaxError, parser.compilest, st) + st = parser.suite('a = u"\u1"') + self.assertRaises(SyntaxError, parser.compilest, st) + def test_main(): test_support.run_unittest( RoundtripLegalSyntaxTestCase, Modified: python/branches/bcannon-objcap/Lib/test/test_pep352.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_pep352.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_pep352.py Thu Sep 6 21:35:45 2007 @@ -2,7 +2,7 @@ import __builtin__ import exceptions import warnings -from test.test_support import run_unittest, guard_warnings_filter +from test.test_support import run_unittest, catch_warning import os from platform import system as platform_system @@ -22,7 +22,7 @@ self.failUnless(issubclass(Exception, object)) def verify_instance_interface(self, ins): - with guard_warnings_filter(): + with catch_warning(): ignore_message_warning() for attr in ("args", "message", "__str__", "__repr__", "__getitem__"): @@ -95,7 +95,7 @@ # Make sure interface works properly when given a single argument arg = "spam" exc = Exception(arg) - with guard_warnings_filter(): + with catch_warning(): ignore_message_warning() results = ([len(exc.args), 1], [exc.args[0], arg], [exc.message, arg], @@ -109,7 +109,7 @@ arg_count = 3 args = tuple(range(arg_count)) exc = Exception(*args) - with guard_warnings_filter(): + with catch_warning(): ignore_message_warning() results = ([len(exc.args), arg_count], [exc.args, args], [exc.message, ''], [str(exc), str(args)], @@ -121,7 +121,7 @@ def test_interface_no_arg(self): # Make sure that with no args that interface is correct exc = Exception() - with guard_warnings_filter(): + with catch_warning(): ignore_message_warning() results = ([len(exc.args), 0], [exc.args, tuple()], [exc.message, ''], @@ -132,7 +132,7 @@ def test_message_deprecation(self): # As of Python 2.6, BaseException.message is deprecated. - with guard_warnings_filter(): + with catch_warning(): warnings.resetwarnings() warnings.filterwarnings('error') @@ -219,7 +219,7 @@ def test_catch_string(self): # Catching a string should trigger a DeprecationWarning. - with guard_warnings_filter(): + with catch_warning(): warnings.resetwarnings() warnings.filterwarnings("error") str_exc = "spam" Modified: python/branches/bcannon-objcap/Lib/test/test_pkg.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_pkg.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_pkg.py Thu Sep 6 21:35:45 2007 @@ -1,33 +1,15 @@ # Test packages (dotted-name import) -import sys, os, tempfile, traceback -from os import mkdir, rmdir, extsep # Can't test if these fail -del mkdir, rmdir -from test.test_support import verify, verbose, TestFailed +import sys +import os +import tempfile +import textwrap +import traceback +import unittest +from test import test_support -# Helpers to create and destroy hierarchies. -def mkhier(root, descr): - if not os.path.isdir(root): - mkdir(root) - for name, contents in descr: - comps = name.split() - fullname = root - for c in comps: - fullname = os.path.join(fullname, c) - if contents is None: - mkdir(fullname) - else: - if verbose: print "write", fullname - f = open(fullname, "w") - f.write(contents) - if contents and contents[-1] != '\n': - f.write('\n') - f.close() - -def mkdir(x): - if verbose: print "mkdir", x - os.mkdir(x) +# Helpers to create and destroy hierarchies. def cleanout(root): names = os.listdir(root) @@ -37,223 +19,252 @@ cleanout(fullname) else: os.remove(fullname) - rmdir(root) - -def rmdir(x): - if verbose: print "rmdir", x - os.rmdir(x) + os.rmdir(root) def fixdir(lst): - try: - lst.remove('__builtins__') - except ValueError: - pass + if "__builtins__" in lst: + lst.remove("__builtins__") return lst -# Helper to run a test -def runtest(hier, code): - root = tempfile.mkdtemp() - mkhier(root, hier) - savepath = sys.path[:] - fd, fname = tempfile.mkstemp(text=True) - os.write(fd, code) - os.close(fd) - try: +# XXX Things to test +# +# import package without __init__ +# import package with __init__ +# __init__ importing submodule +# __init__ importing global module +# __init__ defining variables +# submodule importing other submodule +# submodule importing global module +# submodule import submodule via global name +# from package import submodule +# from package import subpackage +# from package import variable (defined in __init__) +# from package import * (defined in __init__) + + +class Test(unittest.TestCase): + + def setUp(self): + self.root = None + self.syspath = list(sys.path) + + def tearDown(self): + sys.path[:] = self.syspath + cleanout(self.root) + + def run_code(self, code): + exec(textwrap.dedent(code), globals(), {"self": self}) + + def mkhier(self, descr): + root = tempfile.mkdtemp() sys.path.insert(0, root) - if verbose: print "sys.path =", sys.path - try: - execfile(fname, globals(), {}) - except: - traceback.print_exc(file=sys.stdout) - finally: - sys.path[:] = savepath - os.unlink(fname) - try: - cleanout(root) - except (os.error, IOError): - pass - -# Test descriptions - -tests = [ - ("t1", [("t1", None), ("t1 __init__"+os.extsep+"py", "")], "import t1"), - - ("t2", [ - ("t2", None), - ("t2 __init__"+os.extsep+"py", "'doc for t2'; print __name__, 'loading'"), - ("t2 sub", None), - ("t2 sub __init__"+os.extsep+"py", ""), - ("t2 sub subsub", None), - ("t2 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"), - ], -""" -import t2 -print t2.__doc__ -import t2.sub -import t2.sub.subsub -print t2.__name__, t2.sub.__name__, t2.sub.subsub.__name__ -import t2 -from t2 import * -print dir() -from t2 import sub -from t2.sub import subsub -from t2.sub.subsub import spam -print sub.__name__, subsub.__name__ -print sub.subsub.__name__ -print dir() -import t2.sub -import t2.sub.subsub -print t2.__name__, t2.sub.__name__, t2.sub.subsub.__name__ -from t2 import * -print dir() -"""), - - ("t3", [ - ("t3", None), - ("t3 __init__"+os.extsep+"py", "print __name__, 'loading'"), - ("t3 sub", None), - ("t3 sub __init__"+os.extsep+"py", ""), - ("t3 sub subsub", None), - ("t3 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"), - ], -""" -import t3.sub.subsub -print t3.__name__, t3.sub.__name__, t3.sub.subsub.__name__ -reload(t3) -reload(t3.sub) -reload(t3.sub.subsub) -"""), - - ("t4", [ - ("t4"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (t4"+os.extsep+"py)'"), - ("t4", None), - ("t4 __init__"+os.extsep+"py", "print __name__, 'loading'"), - ("t4 sub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (sub"+os.extsep+"py)'"), - ("t4 sub", None), - ("t4 sub __init__"+os.extsep+"py", ""), - ("t4 sub subsub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (subsub"+os.extsep+"py)'"), - ("t4 sub subsub", None), - ("t4 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"), - ], -""" -from t4.sub.subsub import * -print "t4.sub.subsub.spam =", spam -"""), - - ("t5", [ - ("t5", None), - ("t5 __init__"+os.extsep+"py", "import t5.foo"), - ("t5 string"+os.extsep+"py", "print __name__, 'loading'; spam = 1"), - ("t5 foo"+os.extsep+"py", - "print __name__, 'loading'; import string; print string.spam"), - ], -""" -import t5 -from t5 import * -print dir() -import t5 -print fixdir(dir(t5)) -print fixdir(dir(t5.foo)) -print fixdir(dir(t5.string)) -"""), - - ("t6", [ - ("t6", None), - ("t6 __init__"+os.extsep+"py", "__all__ = ['spam', 'ham', 'eggs']"), - ("t6 spam"+os.extsep+"py", "print __name__, 'loading'"), - ("t6 ham"+os.extsep+"py", "print __name__, 'loading'"), - ("t6 eggs"+os.extsep+"py", "print __name__, 'loading'"), - ], -""" -import t6 -print fixdir(dir(t6)) -from t6 import * -print fixdir(dir(t6)) -print dir() -"""), - - ("t7", [ - ("t7"+os.extsep+"py", "print 'Importing t7"+os.extsep+"py'"), - ("t7", None), - ("t7 __init__"+os.extsep+"py", "print __name__, 'loading'"), - ("t7 sub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (sub"+os.extsep+"py)'"), - ("t7 sub", None), - ("t7 sub __init__"+os.extsep+"py", ""), - ("t7 sub subsub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (subsub"+os.extsep+"py)'"), - ("t7 sub subsub", None), - ("t7 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"), - ], -""" -t7, sub, subsub = None, None, None -import t7 as tas -print fixdir(dir(tas)) -verify(not t7) -from t7 import sub as subpar -print fixdir(dir(subpar)) -verify(not t7 and not sub) -from t7.sub import subsub as subsubsub -print fixdir(dir(subsubsub)) -verify(not t7 and not sub and not subsub) -from t7.sub.subsub import spam as ham -print "t7.sub.subsub.spam =", ham -verify(not t7 and not sub and not subsub) -"""), - -] - -nontests = [ - ("x5", [], ("import a" + ".a"*400)), - ("x6", [], ("import a" + ".a"*499)), - ("x7", [], ("import a" + ".a"*500)), - ("x8", [], ("import a" + ".a"*1100)), - ("x9", [], ("import " + "a"*400)), - ("x10", [], ("import " + "a"*500)), - ("x11", [], ("import " + "a"*998)), - ("x12", [], ("import " + "a"*999)), - ("x13", [], ("import " + "a"*999)), - ("x14", [], ("import " + "a"*2000)), -] - -"""XXX Things to test - -import package without __init__ -import package with __init__ -__init__ importing submodule -__init__ importing global module -__init__ defining variables -submodule importing other submodule -submodule importing global module -submodule import submodule via global name -from package import submodule -from package import subpackage -from package import variable (defined in __init__) -from package import * (defined in __init__) -""" - -# Run the tests - -args = [] -if __name__ == '__main__': - args = sys.argv[1:] - if args and args[0] == '-q': - verbose = 0 - del args[0] - -for name, hier, code in tests: - if args and name not in args: - print "skipping test", name - continue - print "running test", name - runtest(hier, code) + if not os.path.isdir(root): + os.mkdir(root) + for name, contents in descr: + comps = name.split() + fullname = root + for c in comps: + fullname = os.path.join(fullname, c) + if contents is None: + os.mkdir(fullname) + else: + f = open(fullname, "w") + f.write(contents) + if contents and contents[-1] != '\n': + f.write('\n') + f.close() + self.root = root + + def test_1(self): + hier = [("t1", None), ("t1 __init__"+os.extsep+"py", "")] + self.mkhier(hier) + import t1 + + def test_2(self): + hier = [ + ("t2", None), + ("t2 __init__"+os.extsep+"py", "'doc for t2'"), + ("t2 sub", None), + ("t2 sub __init__"+os.extsep+"py", ""), + ("t2 sub subsub", None), + ("t2 sub subsub __init__"+os.extsep+"py", "spam = 1"), + ] + self.mkhier(hier) + + import t2 + self.assertEqual(t2.__doc__, "doc for t2") + + import t2.sub + import t2.sub.subsub + self.assertEqual(t2.__name__, "t2") + self.assertEqual(t2.sub.__name__, "t2.sub") + self.assertEqual(t2.sub.subsub.__name__, "t2.sub.subsub") + + # This exec crap is needed because Py3k forbids 'import *' outside + # of module-scope and __import__() is insufficient for what we need. + s = """ + import t2 + from t2 import * + self.assertEqual(dir(), ['self', 'sub', 't2']) + """ + self.run_code(s) + + from t2 import sub + from t2.sub import subsub + from t2.sub.subsub import spam + self.assertEqual(sub.__name__, "t2.sub") + self.assertEqual(subsub.__name__, "t2.sub.subsub") + self.assertEqual(sub.subsub.__name__, "t2.sub.subsub") + for name in ['spam', 'sub', 'subsub', 't2']: + self.failUnless(locals()["name"], "Failed to import %s" % name) + + import t2.sub + import t2.sub.subsub + self.assertEqual(t2.__name__, "t2") + self.assertEqual(t2.sub.__name__, "t2.sub") + self.assertEqual(t2.sub.subsub.__name__, "t2.sub.subsub") + + s = """ + from t2 import * + self.failUnless(dir(), ['self', 'sub']) + """ + self.run_code(s) + + def test_3(self): + hier = [ + ("t3", None), + ("t3 __init__"+os.extsep+"py", ""), + ("t3 sub", None), + ("t3 sub __init__"+os.extsep+"py", ""), + ("t3 sub subsub", None), + ("t3 sub subsub __init__"+os.extsep+"py", "spam = 1"), + ] + self.mkhier(hier) + + import t3.sub.subsub + self.assertEqual(t3.__name__, "t3") + self.assertEqual(t3.sub.__name__, "t3.sub") + self.assertEqual(t3.sub.subsub.__name__, "t3.sub.subsub") + + def test_4(self): + hier = [ + ("t4.py", "raise RuntimeError('Shouldnt load t4.py')"), + ("t4", None), + ("t4 __init__"+os.extsep+"py", ""), + ("t4 sub.py", "raise RuntimeError('Shouldnt load sub.py')"), + ("t4 sub", None), + ("t4 sub __init__"+os.extsep+"py", ""), + ("t4 sub subsub"+os.extsep+"py", + "raise RuntimeError('Shouldnt load subsub.py')"), + ("t4 sub subsub", None), + ("t4 sub subsub __init__"+os.extsep+"py", "spam = 1"), + ] + self.mkhier(hier) + + s = """ + from t4.sub.subsub import * + self.assertEqual(spam, 1) + """ + self.run_code(s) + + def test_5(self): + hier = [ + ("t5", None), + ("t5 __init__"+os.extsep+"py", "import t5.foo"), + ("t5 string"+os.extsep+"py", "spam = 1"), + ("t5 foo"+os.extsep+"py", + "from . import string; assert string.spam == 1"), + ] + self.mkhier(hier) + + import t5 + s = """ + from t5 import * + self.assertEqual(dir(), ['foo', 'self', 'string', 't5']) + """ + self.run_code(s) + + import t5 + self.assertEqual(fixdir(dir(t5)), + ['__doc__', '__file__', '__name__', + '__path__', 'foo', 'string', 't5']) + self.assertEqual(fixdir(dir(t5.foo)), + ['__doc__', '__file__', '__name__', 'string']) + self.assertEqual(fixdir(dir(t5.string)), + ['__doc__', '__file__', '__name__', 'spam']) + + def test_6(self): + hier = [ + ("t6", None), + ("t6 __init__"+os.extsep+"py", + "__all__ = ['spam', 'ham', 'eggs']"), + ("t6 spam"+os.extsep+"py", ""), + ("t6 ham"+os.extsep+"py", ""), + ("t6 eggs"+os.extsep+"py", ""), + ] + self.mkhier(hier) + + import t6 + self.assertEqual(fixdir(dir(t6)), + ['__all__', '__doc__', '__file__', + '__name__', '__path__']) + s = """ + import t6 + from t6 import * + self.assertEqual(fixdir(dir(t6)), + ['__all__', '__doc__', '__file__', + '__name__', '__path__', 'eggs', + 'ham', 'spam']) + self.assertEqual(dir(), ['eggs', 'ham', 'self', 'spam', 't6']) + """ + self.run_code(s) + + def test_7(self): + hier = [ + ("t7"+os.extsep+"py", ""), + ("t7", None), + ("t7 __init__"+os.extsep+"py", ""), + ("t7 sub"+os.extsep+"py", + "raise RuntimeError('Shouldnt load sub.py')"), + ("t7 sub", None), + ("t7 sub __init__"+os.extsep+"py", ""), + ("t7 sub "+os.extsep+"py", + "raise RuntimeError('Shouldnt load subsub.py')"), + ("t7 sub subsub", None), + ("t7 sub subsub __init__"+os.extsep+"py", + "spam = 1"), + ] + self.mkhier(hier) + + + t7, sub, subsub = None, None, None + import t7 as tas + self.assertEqual(fixdir(dir(tas)), + ['__doc__', '__file__', '__name__', '__path__']) + self.failIf(t7) + from t7 import sub as subpar + self.assertEqual(fixdir(dir(subpar)), + ['__doc__', '__file__', '__name__', '__path__']) + self.failIf(t7) + self.failIf(sub) + from t7.sub import subsub as subsubsub + self.assertEqual(fixdir(dir(subsubsub)), + ['__doc__', '__file__', '__name__', '__path__', + 'spam']) + self.failIf(t7) + self.failIf(sub) + self.failIf(subsub) + from t7.sub.subsub import spam as ham + self.assertEqual(ham, 1) + self.failIf(t7) + self.failIf(sub) + self.failIf(subsub) -# Test -import sys -import imp -try: - import sys.imp -except ImportError: - # This is what we expect - pass -else: - raise TestFailed, "No ImportError exception on 'import sys.imp'" + +def test_main(): + test_support.run_unittest(__name__) + + +if __name__ == "__main__": + test_main() Modified: python/branches/bcannon-objcap/Lib/test/test_pow.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_pow.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_pow.py Thu Sep 6 21:35:45 2007 @@ -106,6 +106,9 @@ # platform pow() was buggy, and Python didn't worm around it. eq = self.assertEquals a = -1.0 + # The next two tests can still fail if the platform floor() + # function doesn't treat all large inputs as integers + # test_math should also fail if that is happening eq(pow(a, 1.23e167), 1.0) eq(pow(a, -1.23e167), 1.0) for b in range(-10, 11): Modified: python/branches/bcannon-objcap/Lib/test/test_random.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_random.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_random.py Thu Sep 6 21:35:45 2007 @@ -178,7 +178,7 @@ def test_bigrand(self): # Verify warnings are raised when randrange is too large for random() - with test_support.guard_warnings_filter(): + with test_support.catch_warning(): warnings.filterwarnings("error", "Underlying random") self.assertRaises(UserWarning, self.gen.randrange, 2**60) Modified: python/branches/bcannon-objcap/Lib/test/test_re.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_re.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_re.py Thu Sep 6 21:35:45 2007 @@ -1,7 +1,7 @@ import sys sys.path = ['.'] + sys.path -from test.test_support import verbose, run_unittest, guard_warnings_filter +from test.test_support import verbose, run_unittest, catch_warning import re from re import Scanner import sys, os, traceback @@ -416,7 +416,7 @@ self.pickle_test(cPickle) # old pickles expect the _compile() reconstructor in sre module import warnings - with guard_warnings_filter(): + with catch_warning(): warnings.filterwarnings("ignore", "The sre module is deprecated", DeprecationWarning) from sre import _compile Modified: python/branches/bcannon-objcap/Lib/test/test_resource.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_resource.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_resource.py Thu Sep 6 21:35:45 2007 @@ -49,17 +49,24 @@ except ValueError: limit_set = False f = open(test_support.TESTFN, "wb") - f.write("X" * 1024) try: - f.write("Y") - f.flush() - except IOError: - if not limit_set: - raise - f.close() - os.unlink(test_support.TESTFN) + f.write("X" * 1024) + try: + f.write("Y") + f.flush() + except IOError: + if not limit_set: + raise + if limit_set: + # Close will attempt to flush the byte we wrote + # Restore limit first to avoid getting a spurious error + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + finally: + f.close() + os.unlink(test_support.TESTFN) finally: - resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + if limit_set: + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) def test_fsize_toobig(self): # Be sure that setrlimit is checking for really large values Modified: python/branches/bcannon-objcap/Lib/test/test_robotparser.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_robotparser.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_robotparser.py Thu Sep 6 21:35:45 2007 @@ -134,8 +134,19 @@ RobotTest(7, doc, good, bad) +class TestCase(unittest.TestCase): + def runTest(self): + test_support.requires('network') + # whole site is password-protected. + url = 'http://mueblesmoraleda.com' + parser = robotparser.RobotFileParser() + parser.set_url(url) + parser.read() + self.assertEqual(parser.can_fetch("*", url+"/robots.txt"), False) + def test_main(): test_support.run_unittest(tests) + TestCase().run() if __name__=='__main__': test_support.Verbose = 1 Modified: python/branches/bcannon-objcap/Lib/test/test_runpy.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_runpy.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_runpy.py Thu Sep 6 21:35:45 2007 @@ -4,8 +4,8 @@ import os.path import sys import tempfile -from test.test_support import verbose, run_unittest -from runpy import _run_module_code, run_module +from test.test_support import verbose, run_unittest, forget +from runpy import _run_code, _run_module_code, _run_module_as_main, run_module # Set up the test code and expected results @@ -21,14 +21,24 @@ "# Check the sys module\n" "import sys\n" "run_argv0 = sys.argv[0]\n" - "if __name__ in sys.modules:\n" - " run_name = sys.modules[__name__].__name__\n" + "run_name_in_sys_modules = __name__ in sys.modules\n" + "if run_name_in_sys_modules:\n" + " module_in_sys_modules = globals() is sys.modules[__name__].__dict__\n" "# Check nested operation\n" "import runpy\n" - "nested = runpy._run_module_code('x=1\\n', mod_name='',\n" - " alter_sys=True)\n" + "nested = runpy._run_module_code('x=1\\n', mod_name='')\n" ) + def test_run_code(self): + saved_argv0 = sys.argv[0] + d = _run_code(self.test_source, {}) + self.failUnless(d["result"] == self.expected_result) + self.failUnless(d["__name__"] is None) + self.failUnless(d["__file__"] is None) + self.failUnless(d["__loader__"] is None) + self.failUnless(d["run_argv0"] is saved_argv0) + self.failUnless("run_name" not in d) + self.failUnless(sys.argv[0] is saved_argv0) def test_run_module_code(self): initial = object() @@ -41,30 +51,20 @@ d1, name, file, - loader, - True) + loader) self.failUnless("result" not in d1) self.failUnless(d2["initial"] is initial) self.failUnless(d2["result"] == self.expected_result) self.failUnless(d2["nested"]["x"] == 1) self.failUnless(d2["__name__"] is name) - self.failUnless(d2["run_name"] is name) + self.failUnless(d2["run_name_in_sys_modules"]) + self.failUnless(d2["module_in_sys_modules"]) self.failUnless(d2["__file__"] is file) self.failUnless(d2["run_argv0"] is file) self.failUnless(d2["__loader__"] is loader) self.failUnless(sys.argv[0] is saved_argv0) self.failUnless(name not in sys.modules) - def test_run_module_code_defaults(self): - saved_argv0 = sys.argv[0] - d = _run_module_code(self.test_source) - self.failUnless(d["result"] == self.expected_result) - self.failUnless(d["__name__"] is None) - self.failUnless(d["__file__"] is None) - self.failUnless(d["__loader__"] is None) - self.failUnless(d["run_argv0"] is saved_argv0) - self.failUnless("run_name" not in d) - self.failUnless(sys.argv[0] is saved_argv0) class RunModuleTest(unittest.TestCase): @@ -77,19 +77,29 @@ self.fail("Expected import error for " + mod_name) def test_invalid_names(self): + # Builtin module self.expect_import_error("sys") + # Non-existent modules self.expect_import_error("sys.imp.eric") self.expect_import_error("os.path.half") self.expect_import_error("a.bee") self.expect_import_error(".howard") self.expect_import_error("..eaten") + # Package + self.expect_import_error("logging") def test_library_module(self): run_module("runpy") + def _add_pkg_dir(self, pkg_dir): + os.mkdir(pkg_dir) + pkg_fname = os.path.join(pkg_dir, "__init__"+os.extsep+"py") + pkg_file = open(pkg_fname, "w") + pkg_file.close() + return pkg_fname + def _make_pkg(self, source, depth): pkg_name = "__runpy_pkg__" - init_fname = "__init__"+os.extsep+"py" test_fname = "runpy_test"+os.extsep+"py" pkg_dir = sub_dir = tempfile.mkdtemp() if verbose: print " Package tree in:", sub_dir @@ -97,11 +107,8 @@ if verbose: print " Updated sys.path:", sys.path[0] for i in range(depth): sub_dir = os.path.join(sub_dir, pkg_name) - os.mkdir(sub_dir) + pkg_fname = self._add_pkg_dir(sub_dir) if verbose: print " Next level in:", sub_dir - pkg_fname = os.path.join(sub_dir, init_fname) - pkg_file = open(pkg_fname, "w") - pkg_file.close() if verbose: print " Created:", pkg_fname mod_fname = os.path.join(sub_dir, test_fname) mod_file = open(mod_fname, "w") @@ -112,13 +119,9 @@ return pkg_dir, mod_fname, mod_name def _del_pkg(self, top, depth, mod_name): - for i in range(depth+1): # Don't forget the module itself - parts = mod_name.rsplit(".", i) - entry = parts[0] - try: + for entry in list(sys.modules): + if entry.startswith("__runpy_pkg__"): del sys.modules[entry] - except KeyError, ex: - if verbose: print ex # Persist with cleaning up if verbose: print " Removed sys.modules entries" del sys.path[0] if verbose: print " Removed sys.path entry" @@ -143,26 +146,85 @@ def _check_module(self, depth): pkg_dir, mod_fname, mod_name = ( self._make_pkg("x=1\n", depth)) + forget(mod_name) try: if verbose: print "Running from source:", mod_name d1 = run_module(mod_name) # Read from source + self.failUnless("x" in d1) self.failUnless(d1["x"] == 1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print "Running from compiled:", mod_name d2 = run_module(mod_name) # Read from bytecode + self.failUnless("x" in d2) self.failUnless(d2["x"] == 1) del d2 # Ensure __loader__ entry doesn't keep file open finally: self._del_pkg(pkg_dir, depth, mod_name) if verbose: print "Module executed successfully" + def _add_relative_modules(self, base_dir, depth): + if depth <= 1: + raise ValueError("Relative module test needs depth > 1") + pkg_name = "__runpy_pkg__" + module_dir = base_dir + for i in range(depth): + parent_dir = module_dir + module_dir = os.path.join(module_dir, pkg_name) + # Add sibling module + sibling_fname = os.path.join(module_dir, "sibling"+os.extsep+"py") + sibling_file = open(sibling_fname, "w") + sibling_file.close() + if verbose: print " Added sibling module:", sibling_fname + # Add nephew module + uncle_dir = os.path.join(parent_dir, "uncle") + self._add_pkg_dir(uncle_dir) + if verbose: print " Added uncle package:", uncle_dir + cousin_dir = os.path.join(uncle_dir, "cousin") + self._add_pkg_dir(cousin_dir) + if verbose: print " Added cousin package:", cousin_dir + nephew_fname = os.path.join(cousin_dir, "nephew"+os.extsep+"py") + nephew_file = open(nephew_fname, "w") + nephew_file.close() + if verbose: print " Added nephew module:", nephew_fname + + def _check_relative_imports(self, depth, run_name=None): + contents = """\ +from __future__ import absolute_import +from . import sibling +from ..uncle.cousin import nephew +""" + pkg_dir, mod_fname, mod_name = ( + self._make_pkg(contents, depth)) + try: + self._add_relative_modules(pkg_dir, depth) + if verbose: print "Running from source:", mod_name + d1 = run_module(mod_name) # Read from source + self.failUnless("sibling" in d1) + self.failUnless("nephew" in d1) + del d1 # Ensure __loader__ entry doesn't keep file open + __import__(mod_name) + os.remove(mod_fname) + if verbose: print "Running from compiled:", mod_name + d2 = run_module(mod_name) # Read from bytecode + self.failUnless("sibling" in d2) + self.failUnless("nephew" in d2) + del d2 # Ensure __loader__ entry doesn't keep file open + finally: + self._del_pkg(pkg_dir, depth, mod_name) + if verbose: print "Module executed successfully" + def test_run_module(self): for depth in range(4): if verbose: print "Testing package depth:", depth self._check_module(depth) + def test_explicit_relative_import(self): + for depth in range(2, 5): + if verbose: print "Testing relative imports at depth:", depth + self._check_relative_imports(depth) + def test_main(): run_unittest(RunModuleCodeTest) Modified: python/branches/bcannon-objcap/Lib/test/test_signal.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_signal.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_signal.py Thu Sep 6 21:35:45 2007 @@ -1,167 +1,177 @@ -# Test the signal module -from test.test_support import verbose, TestSkipped, TestFailed, vereq +import unittest +from test import test_support import signal import os, sys, time -if sys.platform[:3] in ('win', 'os2') or sys.platform=='riscos': - raise TestSkipped, "Can't test signal on %s" % sys.platform +class HandlerBCalled(Exception): + pass -MAX_DURATION = 20 # Entire test should last at most 20 sec. +class InterProcessSignalTests(unittest.TestCase): + MAX_DURATION = 20 # Entire test should last at most 20 sec. -if verbose: - x = '-x' -else: - x = '+x' - -pid = os.getpid() -if verbose: - print "test runner's pid is", pid - -# Shell script that will send us asynchronous signals -script = """ - ( - set %(x)s - sleep 2 - kill -HUP %(pid)d - sleep 2 - kill -USR1 %(pid)d - sleep 2 - kill -USR2 %(pid)d - ) & -""" % vars() - -a_called = b_called = False - -def handlerA(*args): - global a_called - a_called = True - if verbose: - print "handlerA invoked", args + # Set up a child to send signals to us (the parent) after waiting + # long enough to receive the alarm. It seems we miss the alarm + # for some reason. This will hopefully stop the hangs on + # Tru64/Alpha. Alas, it doesn't. Tru64 appears to miss all the + # signals at times, or seemingly random subsets of them, and + # nothing done in force_test_exit so far has actually helped. + def spawn_force_test_exit_process(self, parent_pid): + # Sigh, both imports seem necessary to avoid errors. + import os + fork_pid = os.fork() + if fork_pid: + # In parent. + return fork_pid + + # In child. + import os, time + try: + # Wait 5 seconds longer than the expected alarm to give enough + # time for the normal sequence of events to occur. This is + # just a stop-gap to try to prevent the test from hanging. + time.sleep(self.MAX_DURATION + 5) + print >> sys.__stdout__, " child should not have to kill parent" + for signame in "SIGHUP", "SIGUSR1", "SIGUSR2", "SIGALRM": + os.kill(parent_pid, getattr(signal, signame)) + print >> sys.__stdout__, " child sent", signame, "to", \ + parent_pid + time.sleep(1) + finally: + os._exit(0) + + def handlerA(self, *args): + self.a_called = True + if test_support.verbose: + print "handlerA invoked", args + + def handlerB(self, *args): + self.b_called = True + if test_support.verbose: + print "handlerB invoked", args + raise HandlerBCalled(*args) + + def test_main(self): + self.assertEquals(signal.getsignal(signal.SIGHUP), self.handlerA) + self.assertEquals(signal.getsignal(signal.SIGUSR1), self.handlerB) + self.assertEquals(signal.getsignal(signal.SIGUSR2), signal.SIG_IGN) + self.assertEquals(signal.getsignal(signal.SIGALRM), + signal.default_int_handler) + + # Launch an external script to send us signals. + # We expect the external script to: + # send HUP, which invokes handlerA to set a_called + # send USR1, which invokes handlerB to set b_called and raise + # HandlerBCalled + # send USR2, which is ignored + # + # Then we expect the alarm to go off, and its handler raises + # KeyboardInterrupt, finally getting us out of the loop. + + if test_support.verbose: + verboseflag = '-x' + else: + verboseflag = '+x' + + pid = self.pid + if test_support.verbose: + print "test runner's pid is", pid + + # Shell script that will send us asynchronous signals + script = """ + ( + set %(verboseflag)s + sleep 2 + kill -HUP %(pid)d + sleep 2 + kill -USR1 %(pid)d + sleep 2 + kill -USR2 %(pid)d + ) & + """ % vars() + + signal.alarm(self.MAX_DURATION) + + handler_b_exception_raised = False + + os.system(script) + try: + if test_support.verbose: + print "starting pause() loop..." + while 1: + try: + if test_support.verbose: + print "call pause()..." + signal.pause() + if test_support.verbose: + print "pause() returned" + except HandlerBCalled: + handler_b_exception_raised = True + if test_support.verbose: + print "HandlerBCalled exception caught" + + except KeyboardInterrupt: + if test_support.verbose: + print "KeyboardInterrupt (the alarm() went off)" + + self.assert_(self.a_called) + self.assert_(self.b_called) + self.assert_(handler_b_exception_raised) + + def setUp(self): + # Install handlers. + self.hup = signal.signal(signal.SIGHUP, self.handlerA) + self.usr1 = signal.signal(signal.SIGUSR1, self.handlerB) + self.usr2 = signal.signal(signal.SIGUSR2, signal.SIG_IGN) + self.alrm = signal.signal(signal.SIGALRM, + signal.default_int_handler) + self.a_called = False + self.b_called = False + self.pid = os.getpid() + self.fork_pid = self.spawn_force_test_exit_process(self.pid) + + def tearDown(self): + # Forcibly kill the child we created to ping us if there was a + # test error. + try: + # Make sure we don't kill ourself if there was a fork + # error. + if self.fork_pid > 0: + os.kill(self.fork_pid, signal.SIGKILL) + except: + # If the child killed us, it has probably exited. Killing + # a non-existent process will raise an error which we + # don't care about. + pass + + # Restore handlers. + signal.alarm(0) # cancel alarm in case we died early + signal.signal(signal.SIGHUP, self.hup) + signal.signal(signal.SIGUSR1, self.usr1) + signal.signal(signal.SIGUSR2, self.usr2) + signal.signal(signal.SIGALRM, self.alrm) + + +class BasicSignalTests(unittest.TestCase): + def test_out_of_range_signal_number_raises_error(self): + self.assertRaises(ValueError, signal.getsignal, 4242) + + def trivial_signal_handler(*args): + pass + + self.assertRaises(ValueError, signal.signal, 4242, + trivial_signal_handler) + + def test_setting_signal_handler_to_none_raises_error(self): + self.assertRaises(TypeError, signal.signal, + signal.SIGUSR1, None) + +def test_main(): + if sys.platform[:3] in ('win', 'os2') or sys.platform == 'riscos': + raise test_support.TestSkipped("Can't test signal on %s" % \ + sys.platform) + + test_support.run_unittest(BasicSignalTests, InterProcessSignalTests) -class HandlerBCalled(Exception): - pass -def handlerB(*args): - global b_called - b_called = True - if verbose: - print "handlerB invoked", args - raise HandlerBCalled, args - -# Set up a child to send signals to us (the parent) after waiting long -# enough to receive the alarm. It seems we miss the alarm for some -# reason. This will hopefully stop the hangs on Tru64/Alpha. -# Alas, it doesn't. Tru64 appears to miss all the signals at times, or -# seemingly random subsets of them, and nothing done in force_test_exit -# so far has actually helped. -def force_test_exit(): - # Sigh, both imports seem necessary to avoid errors. - import os - fork_pid = os.fork() - if fork_pid: - # In parent. - return fork_pid - - # In child. - import os, time - try: - # Wait 5 seconds longer than the expected alarm to give enough - # time for the normal sequence of events to occur. This is - # just a stop-gap to try to prevent the test from hanging. - time.sleep(MAX_DURATION + 5) - print >> sys.__stdout__, ' child should not have to kill parent' - for signame in "SIGHUP", "SIGUSR1", "SIGUSR2", "SIGALRM": - os.kill(pid, getattr(signal, signame)) - print >> sys.__stdout__, " child sent", signame, "to", pid - time.sleep(1) - finally: - os._exit(0) - -# Install handlers. -hup = signal.signal(signal.SIGHUP, handlerA) -usr1 = signal.signal(signal.SIGUSR1, handlerB) -usr2 = signal.signal(signal.SIGUSR2, signal.SIG_IGN) -alrm = signal.signal(signal.SIGALRM, signal.default_int_handler) - -try: - - signal.alarm(MAX_DURATION) - vereq(signal.getsignal(signal.SIGHUP), handlerA) - vereq(signal.getsignal(signal.SIGUSR1), handlerB) - vereq(signal.getsignal(signal.SIGUSR2), signal.SIG_IGN) - vereq(signal.getsignal(signal.SIGALRM), signal.default_int_handler) - - # Try to ensure this test exits even if there is some problem with alarm. - # Tru64/Alpha often hangs and is ultimately killed by the buildbot. - fork_pid = force_test_exit() - - try: - signal.getsignal(4242) - raise TestFailed('expected ValueError for invalid signal # to ' - 'getsignal()') - except ValueError: - pass - - try: - signal.signal(4242, handlerB) - raise TestFailed('expected ValueError for invalid signal # to ' - 'signal()') - except ValueError: - pass - - try: - signal.signal(signal.SIGUSR1, None) - raise TestFailed('expected TypeError for non-callable') - except TypeError: - pass - - # Launch an external script to send us signals. - # We expect the external script to: - # send HUP, which invokes handlerA to set a_called - # send USR1, which invokes handlerB to set b_called and raise - # HandlerBCalled - # send USR2, which is ignored - # - # Then we expect the alarm to go off, and its handler raises - # KeyboardInterrupt, finally getting us out of the loop. - os.system(script) - try: - print "starting pause() loop..." - while 1: - try: - if verbose: - print "call pause()..." - signal.pause() - if verbose: - print "pause() returned" - except HandlerBCalled: - if verbose: - print "HandlerBCalled exception caught" - - except KeyboardInterrupt: - if verbose: - print "KeyboardInterrupt (the alarm() went off)" - - if not a_called: - print 'HandlerA not called' - - if not b_called: - print 'HandlerB not called' - -finally: - # Forcibly kill the child we created to ping us if there was a test error. - try: - # Make sure we don't kill ourself if there was a fork error. - if fork_pid > 0: - os.kill(fork_pid, signal.SIGKILL) - except: - # If the child killed us, it has probably exited. Killing a - # non-existent process will raise an error which we don't care about. - pass - - # Restore handlers. - signal.alarm(0) # cancel alarm in case we died early - signal.signal(signal.SIGHUP, hup) - signal.signal(signal.SIGUSR1, usr1) - signal.signal(signal.SIGUSR2, usr2) - signal.signal(signal.SIGALRM, alrm) +if __name__ == "__main__": + test_main() Modified: python/branches/bcannon-objcap/Lib/test/test_smtplib.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_smtplib.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_smtplib.py Thu Sep 6 21:35:45 2007 @@ -1,53 +1,112 @@ +import asyncore +import email.utils import socket import threading +import smtpd import smtplib +import StringIO +import sys import time +import select from unittest import TestCase from test import test_support +# PORT is used to communicate the port number assigned to the server +# to the test client +HOST = "localhost" +PORT = None -def server(evt): - serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - serv.settimeout(3) - serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - serv.bind(("", 9091)) - serv.listen(5) +def server(evt, buf): try: + serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + serv.settimeout(3) + serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + serv.bind(("", 0)) + global PORT + PORT = serv.getsockname()[1] + serv.listen(5) conn, addr = serv.accept() except socket.timeout: pass else: - conn.send("220 Hola mundo\n") + n = 500 + while buf and n > 0: + r, w, e = select.select([], [conn], []) + if w: + sent = conn.send(buf) + buf = buf[sent:] + + n -= 1 + time.sleep(0.01) + conn.close() finally: serv.close() + PORT = None evt.set() class GeneralTests(TestCase): def setUp(self): self.evt = threading.Event() - threading.Thread(target=server, args=(self.evt,)).start() - time.sleep(.1) + servargs = (self.evt, "220 Hola mundo\n") + threading.Thread(target=server, args=servargs).start() + + # wait until server thread has assigned a port number + n = 500 + while PORT is None and n > 0: + time.sleep(0.01) + n -= 1 + + # wait a little longer (sometimes connections are refused + # on slow machines without this additional wait) + time.sleep(0.5) def tearDown(self): self.evt.wait() - def testBasic(self): + def testBasic1(self): # connects - smtp = smtplib.SMTP("localhost", 9091) + smtp = smtplib.SMTP(HOST, PORT) + smtp.sock.close() + + def testBasic2(self): + # connects, include port in host name + smtp = smtplib.SMTP("%s:%s" % (HOST, PORT)) smtp.sock.close() + def testNotConnected(self): + # Test various operations on an unconnected SMTP object that + # should raise exceptions (at present the attempt in SMTP.send + # to reference the nonexistent 'sock' attribute of the SMTP object + # causes an AttributeError) + smtp = smtplib.SMTP() + self.assertRaises(AttributeError, smtp.ehlo) + self.assertRaises(AttributeError, smtp.send, 'test msg') + + def testLocalHostName(self): + # check that supplied local_hostname is used + smtp = smtplib.SMTP(HOST, PORT, local_hostname="testhost") + self.assertEqual(smtp.local_hostname, "testhost") + smtp.sock.close() + + def testNonnumericPort(self): + # check that non-numeric port raises socket.error + self.assertRaises(socket.error, smtplib.SMTP, + "localhost", "bogus") + self.assertRaises(socket.error, smtplib.SMTP, + "localhost:bogus") + def testTimeoutDefault(self): # default - smtp = smtplib.SMTP("localhost", 9091) + smtp = smtplib.SMTP(HOST, PORT) self.assertTrue(smtp.sock.gettimeout() is None) smtp.sock.close() def testTimeoutValue(self): # a value - smtp = smtplib.SMTP("localhost", 9091, timeout=30) + smtp = smtplib.SMTP(HOST, PORT, timeout=30) self.assertEqual(smtp.sock.gettimeout(), 30) smtp.sock.close() @@ -56,16 +115,318 @@ previous = socket.getdefaulttimeout() socket.setdefaulttimeout(30) try: - smtp = smtplib.SMTP("localhost", 9091, timeout=None) + smtp = smtplib.SMTP(HOST, PORT, timeout=None) finally: socket.setdefaulttimeout(previous) self.assertEqual(smtp.sock.gettimeout(), 30) smtp.sock.close() +# Test server thread using the specified SMTP server class +def debugging_server(server_class, serv_evt, client_evt): + serv = server_class(("", 0), ('nowhere', -1)) + global PORT + PORT = serv.getsockname()[1] + + try: + if hasattr(select, 'poll'): + poll_fun = asyncore.poll2 + else: + poll_fun = asyncore.poll + + n = 1000 + while asyncore.socket_map and n > 0: + poll_fun(0.01, asyncore.socket_map) + + # when the client conversation is finished, it will + # set client_evt, and it's then ok to kill the server + if client_evt.isSet(): + serv.close() + break + + n -= 1 + + except socket.timeout: + pass + finally: + # allow some time for the client to read the result + time.sleep(0.5) + serv.close() + asyncore.close_all() + PORT = None + time.sleep(0.5) + serv_evt.set() + +MSG_BEGIN = '---------- MESSAGE FOLLOWS ----------\n' +MSG_END = '------------ END MESSAGE ------------\n' + +# NOTE: Some SMTP objects in the tests below are created with a non-default +# local_hostname argument to the constructor, since (on some systems) the FQDN +# lookup caused by the default local_hostname sometimes takes so long that the +# test server times out, causing the test to fail. + +# Test behavior of smtpd.DebuggingServer +class DebuggingServerTests(TestCase): + + def setUp(self): + # temporarily replace sys.stdout to capture DebuggingServer output + self.old_stdout = sys.stdout + self.output = StringIO.StringIO() + sys.stdout = self.output + + self.serv_evt = threading.Event() + self.client_evt = threading.Event() + serv_args = (smtpd.DebuggingServer, self.serv_evt, self.client_evt) + threading.Thread(target=debugging_server, args=serv_args).start() + + # wait until server thread has assigned a port number + n = 500 + while PORT is None and n > 0: + time.sleep(0.01) + n -= 1 + + # wait a little longer (sometimes connections are refused + # on slow machines without this additional wait) + time.sleep(0.5) + + def tearDown(self): + # indicate that the client is finished + self.client_evt.set() + # wait for the server thread to terminate + self.serv_evt.wait() + # restore sys.stdout + sys.stdout = self.old_stdout + + def testBasic(self): + # connect + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + smtp.quit() + + def testNOOP(self): + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + expected = (250, 'Ok') + self.assertEqual(smtp.noop(), expected) + smtp.quit() + + def testRSET(self): + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + expected = (250, 'Ok') + self.assertEqual(smtp.rset(), expected) + smtp.quit() + + def testNotImplemented(self): + # EHLO isn't implemented in DebuggingServer + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + expected = (502, 'Error: command "EHLO" not implemented') + self.assertEqual(smtp.ehlo(), expected) + smtp.quit() + + def testVRFY(self): + # VRFY isn't implemented in DebuggingServer + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + expected = (502, 'Error: command "VRFY" not implemented') + self.assertEqual(smtp.vrfy('nobody at nowhere.com'), expected) + self.assertEqual(smtp.verify('nobody at nowhere.com'), expected) + smtp.quit() + + def testSecondHELO(self): + # check that a second HELO returns a message that it's a duplicate + # (this behavior is specific to smtpd.SMTPChannel) + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + smtp.helo() + expected = (503, 'Duplicate HELO/EHLO') + self.assertEqual(smtp.helo(), expected) + smtp.quit() + + def testHELP(self): + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + self.assertEqual(smtp.help(), 'Error: command "HELP" not implemented') + smtp.quit() + + def testSend(self): + # connect and send mail + m = 'A test message' + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + smtp.sendmail('John', 'Sally', m) + smtp.quit() + + self.client_evt.set() + self.serv_evt.wait() + self.output.flush() + mexpect = '%s%s\n%s' % (MSG_BEGIN, m, MSG_END) + self.assertEqual(self.output.getvalue(), mexpect) + + +# test response of client to a non-successful HELO message +class BadHELOServerTests(TestCase): + + def setUp(self): + self.old_stdout = sys.stdout + self.output = StringIO.StringIO() + sys.stdout = self.output + + self.evt = threading.Event() + servargs = (self.evt, "199 no hello for you!\n") + threading.Thread(target=server, args=servargs).start() + + # wait until server thread has assigned a port number + n = 500 + while PORT is None and n > 0: + time.sleep(0.01) + n -= 1 + + # wait a little longer (sometimes connections are refused + # on slow machines without this additional wait) + time.sleep(0.5) + + def tearDown(self): + self.evt.wait() + sys.stdout = self.old_stdout + + def testFailingHELO(self): + self.assertRaises(smtplib.SMTPConnectError, smtplib.SMTP, + HOST, PORT, 'localhost', 3) + + +sim_users = {'Mr.A at somewhere.com':'John A', + 'Ms.B at somewhere.com':'Sally B', + 'Mrs.C at somewhereesle.com':'Ruth C', + } + +sim_lists = {'list-1':['Mr.A at somewhere.com','Mrs.C at somewhereesle.com'], + 'list-2':['Ms.B at somewhere.com',], + } + +# Simulated SMTP channel & server +class SimSMTPChannel(smtpd.SMTPChannel): + def smtp_EHLO(self, arg): + resp = '250-testhost\r\n' \ + '250-EXPN\r\n' \ + '250-SIZE 20000000\r\n' \ + '250-STARTTLS\r\n' \ + '250-DELIVERBY\r\n' \ + '250 HELP' + self.push(resp) + + def smtp_VRFY(self, arg): +# print '\nsmtp_VRFY(%r)\n' % arg + + raw_addr = email.utils.parseaddr(arg)[1] + quoted_addr = smtplib.quoteaddr(arg) + if raw_addr in sim_users: + self.push('250 %s %s' % (sim_users[raw_addr], quoted_addr)) + else: + self.push('550 No such user: %s' % arg) + + def smtp_EXPN(self, arg): +# print '\nsmtp_EXPN(%r)\n' % arg + + list_name = email.utils.parseaddr(arg)[1].lower() + if list_name in sim_lists: + user_list = sim_lists[list_name] + for n, user_email in enumerate(user_list): + quoted_addr = smtplib.quoteaddr(user_email) + if n < len(user_list) - 1: + self.push('250-%s %s' % (sim_users[user_email], quoted_addr)) + else: + self.push('250 %s %s' % (sim_users[user_email], quoted_addr)) + else: + self.push('550 No access for you!') + + +class SimSMTPServer(smtpd.SMTPServer): + def handle_accept(self): + conn, addr = self.accept() + channel = SimSMTPChannel(self, conn, addr) + + def process_message(self, peer, mailfrom, rcpttos, data): + pass + + +# Test various SMTP & ESMTP commands/behaviors that require a simulated server +# (i.e., something with more features than DebuggingServer) +class SMTPSimTests(TestCase): + + def setUp(self): + self.serv_evt = threading.Event() + self.client_evt = threading.Event() + serv_args = (SimSMTPServer, self.serv_evt, self.client_evt) + threading.Thread(target=debugging_server, args=serv_args).start() + + # wait until server thread has assigned a port number + n = 500 + while PORT is None and n > 0: + time.sleep(0.01) + n -= 1 + + # wait a little longer (sometimes connections are refused + # on slow machines without this additional wait) + time.sleep(0.5) + + def tearDown(self): + # indicate that the client is finished + self.client_evt.set() + # wait for the server thread to terminate + self.serv_evt.wait() + + def testBasic(self): + # smoke test + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + smtp.quit() + + def testEHLO(self): + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + + # no features should be present before the EHLO + self.assertEqual(smtp.esmtp_features, {}) + + # features expected from the test server + expected_features = {'expn':'', + 'size': '20000000', + 'starttls': '', + 'deliverby': '', + 'help': '', + } + + smtp.ehlo() + self.assertEqual(smtp.esmtp_features, expected_features) + for k in expected_features: + self.assertTrue(smtp.has_extn(k)) + self.assertFalse(smtp.has_extn('unsupported-feature')) + smtp.quit() + + def testVRFY(self): + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + + for email, name in sim_users.items(): + expected_known = (250, '%s %s' % (name, smtplib.quoteaddr(email))) + self.assertEqual(smtp.vrfy(email), expected_known) + + u = 'nobody at nowhere.com' + expected_unknown = (550, 'No such user: %s' % smtplib.quoteaddr(u)) + self.assertEqual(smtp.vrfy(u), expected_unknown) + smtp.quit() + + def testEXPN(self): + smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) + + for listname, members in sim_lists.items(): + users = [] + for m in members: + users.append('%s %s' % (sim_users[m], smtplib.quoteaddr(m))) + expected_known = (250, '\n'.join(users)) + self.assertEqual(smtp.expn(listname), expected_known) + + u = 'PSU-Members-List' + expected_unknown = (550, 'No access for you!') + self.assertEqual(smtp.expn(u), expected_unknown) + smtp.quit() + + def test_main(verbose=None): - test_support.run_unittest(GeneralTests) + test_support.run_unittest(GeneralTests, DebuggingServerTests, + BadHELOServerTests, SMTPSimTests) if __name__ == '__main__': test_main() Modified: python/branches/bcannon-objcap/Lib/test/test_socket_ssl.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_socket_ssl.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_socket_ssl.py Thu Sep 6 21:35:45 2007 @@ -106,6 +106,25 @@ connector() t.join() + def test_978833(self): + if test_support.verbose: + print "test_978833 ..." + + import os, httplib, ssl + with test_support.transient_internet(): + s = socket.socket(socket.AF_INET) + s.connect(("www.sf.net", 443)) + fd = s._sock.fileno() + sock = ssl.sslsocket(s) + s = None + sock.close() + try: + os.fstat(fd) + except OSError: + pass + else: + raise test_support.TestFailed("Failed to close socket") + class OpenSSLTests(unittest.TestCase): def testBasic(self): Modified: python/branches/bcannon-objcap/Lib/test/test_socketserver.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_socketserver.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_socketserver.py Thu Sep 6 21:35:45 2007 @@ -212,6 +212,7 @@ # If the import lock is held, the threads will hang. raise TestSkipped("can't run when import lock is held") + reap_children() try: testall() finally: Modified: python/branches/bcannon-objcap/Lib/test/test_struct.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_struct.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_struct.py Thu Sep 6 21:35:45 2007 @@ -50,7 +50,7 @@ def with_warning_restore(func): def _with_warning_restore(*args, **kw): - with test.test_support.guard_warnings_filter(): + with test.test_support.catch_warning(): # Grrr, we need this function to warn every time. Without removing # the warningregistry, running test_tarfile then test_struct would fail # on 64-bit platforms. Modified: python/branches/bcannon-objcap/Lib/test/test_structmembers.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_structmembers.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_structmembers.py Thu Sep 6 21:35:45 2007 @@ -5,7 +5,7 @@ LONG_MAX, LONG_MIN, ULONG_MAX, \ LLONG_MAX, LLONG_MIN, ULLONG_MAX -import warnings, exceptions, unittest +import warnings, exceptions, unittest, sys from test import test_support ts=test_structmembersType(1,2,3,4,5,6,7,8,9.99999,10.1010101010) @@ -59,7 +59,7 @@ class TestWarnings(unittest.TestCase): def has_warned(self, w): - self.assert_(w.category is RuntimeWarning) + self.assertEqual(w.category, RuntimeWarning) def test_byte_max(self): with test_support.catch_warning() as w: @@ -94,10 +94,13 @@ def test_main(verbose=None): - test_support.run_unittest( - ReadWriteTests, - TestWarnings - ) + # Obscure hack so that this test passes after reloads or repeated calls + # to test_main (regrtest -R). + if '__warningregistry__' in globals(): + del globals()['__warningregistry__'] + if hasattr(sys, '__warningregistry__'): + del sys.__warningregistry__ + test_support.run_unittest(__name__) if __name__ == "__main__": test_main(verbose=True) Modified: python/branches/bcannon-objcap/Lib/test/test_structseq.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_structseq.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_structseq.py Thu Sep 6 21:35:45 2007 @@ -97,6 +97,18 @@ t = time.gmtime() x = t.__reduce__() + def test_extended_getslice(self): + # Test extended slicing by comparing with list slicing. + t = time.gmtime() + L = list(t) + indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300) + for start in indices: + for stop in indices: + # Skip step 0 (invalid) + for step in indices[1:]: + self.assertEqual(list(t[start:stop:step]), + L[start:stop:step]) + def test_main(): test_support.run_unittest(StructSeqTest) Modified: python/branches/bcannon-objcap/Lib/test/test_sundry.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_sundry.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_sundry.py Thu Sep 6 21:35:45 2007 @@ -1,10 +1,10 @@ """Do a minimal test of all the modules that aren't otherwise tested.""" -from test.test_support import guard_warnings_filter +from test.test_support import catch_warning import sys import warnings -with guard_warnings_filter(): +with catch_warning(): warnings.filterwarnings('ignore', r".*posixfile", DeprecationWarning) warnings.filterwarnings('ignore', r".*mimify", DeprecationWarning) @@ -89,7 +89,6 @@ import opcode import os2emxpath import pdb - import pipes import posixfile import pstats import py_compile Modified: python/branches/bcannon-objcap/Lib/test/test_support.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_support.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_support.py Thu Sep 6 21:35:45 2007 @@ -271,14 +271,6 @@ fn, _ = urllib.urlretrieve(url, filename) return open(fn) - at contextlib.contextmanager -def guard_warnings_filter(): - """Guard the warnings filter from being permanently changed.""" - original_filters = warnings.filters[:] - try: - yield - finally: - warnings.filters = original_filters class WarningMessage(object): "Holds the result of the latest showwarning() call" @@ -302,7 +294,7 @@ Use like this: - with catch_warning as w: + with catch_warning() as w: warnings.warn("foo") assert str(w.message) == "foo" """ @@ -382,6 +374,22 @@ return contextlib.nested(time_out, socket_peer_reset, ioerror_peer_reset) + at contextlib.contextmanager +def captured_stdout(): + """Run the with statement body using a StringIO object as sys.stdout. + Example use:: + + with captured_stdout() as s: + print "hello" + assert s.getvalue() == "hello" + """ + import StringIO + orig_stdout = sys.stdout + sys.stdout = StringIO.StringIO() + yield sys.stdout + sys.stdout = orig_stdout + + #======================================================================= # Decorator for running a function in a different locale, correctly resetting # it afterwards. Modified: python/branches/bcannon-objcap/Lib/test/test_tarfile.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_tarfile.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_tarfile.py Thu Sep 6 21:35:45 2007 @@ -141,11 +141,25 @@ class MiscReadTest(ReadTest): - def test_no_filename(self): + def test_no_name_argument(self): fobj = open(self.tarname, "rb") tar = tarfile.open(fileobj=fobj, mode=self.mode) self.assertEqual(tar.name, os.path.abspath(fobj.name)) + def test_no_name_attribute(self): + data = open(self.tarname, "rb").read() + fobj = StringIO.StringIO(data) + self.assertRaises(AttributeError, getattr, fobj, "name") + tar = tarfile.open(fileobj=fobj, mode=self.mode) + self.assertEqual(tar.name, None) + + def test_empty_name_attribute(self): + data = open(self.tarname, "rb").read() + fobj = StringIO.StringIO(data) + fobj.name = "" + tar = tarfile.open(fileobj=fobj, mode=self.mode) + self.assertEqual(tar.name, None) + def test_fail_comp(self): # For Gzip and Bz2 Tests: fail with a ReadError on an uncompressed file. if self.mode == "r:": Modified: python/branches/bcannon-objcap/Lib/test/test_unicode.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_unicode.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_unicode.py Thu Sep 6 21:35:45 2007 @@ -55,9 +55,9 @@ def test_literals(self): self.assertEqual(u'\xff', u'\u00ff') self.assertEqual(u'\uffff', u'\U0000ffff') - self.assertRaises(UnicodeError, eval, 'u\'\\Ufffffffe\'') - self.assertRaises(UnicodeError, eval, 'u\'\\Uffffffff\'') - self.assertRaises(UnicodeError, eval, 'u\'\\U%08x\'' % 0x110000) + self.assertRaises(SyntaxError, eval, 'u\'\\Ufffffffe\'') + self.assertRaises(SyntaxError, eval, 'u\'\\Uffffffff\'') + self.assertRaises(SyntaxError, eval, 'u\'\\U%08x\'' % 0x110000) def test_repr(self): if not sys.platform.startswith('java'): Modified: python/branches/bcannon-objcap/Lib/test/test_unicodedata.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_unicodedata.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_unicodedata.py Thu Sep 6 21:35:45 2007 @@ -214,6 +214,9 @@ count += 1 self.assert_(count >= 10) # should have tested at least the ASCII digits + def test_bug_1704793(self): + self.assertEquals(self.db.lookup("GOTHIC LETTER FAIHU"), u'\U00010346') + def test_main(): test.test_support.run_unittest( UnicodeMiscTest, Modified: python/branches/bcannon-objcap/Lib/test/test_urllib2.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_urllib2.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_urllib2.py Thu Sep 6 21:35:45 2007 @@ -381,6 +381,12 @@ class OpenerDirectorTests(unittest.TestCase): + def test_add_non_handler(self): + class NonHandler(object): + pass + self.assertRaises(TypeError, + OpenerDirector().add_handler, NonHandler()) + def test_badly_named_methods(self): # test work-around for three methods that accidentally follow the # naming conventions for handler methods Modified: python/branches/bcannon-objcap/Lib/test/test_urllib2_localnet.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_urllib2_localnet.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_urllib2_localnet.py Thu Sep 6 21:35:45 2007 @@ -40,14 +40,16 @@ class LoopbackHttpServerThread(threading.Thread): """Stoppable thread that runs a loopback http server.""" - def __init__(self, port, RequestHandlerClass): + def __init__(self, request_handler): threading.Thread.__init__(self) - self._RequestHandlerClass = RequestHandlerClass self._stop = False - self._port = port - self._server_address = ('127.0.0.1', self._port) self.ready = threading.Event() - self.error = None + request_handler.protocol_version = "HTTP/1.0" + self.httpd = LoopbackHttpServer(('127.0.0.1', 0), + request_handler) + #print "Serving HTTP on %s port %s" % (self.httpd.server_name, + # self.httpd.server_port) + self.port = self.httpd.server_port def stop(self): """Stops the webserver if it's currently running.""" @@ -58,24 +60,9 @@ self.join() def run(self): - protocol = "HTTP/1.0" - - try: - self._RequestHandlerClass.protocol_version = protocol - httpd = LoopbackHttpServer(self._server_address, - self._RequestHandlerClass) - - sa = httpd.socket.getsockname() - #print "Serving HTTP on", sa[0], "port", sa[1], "..." - except: - # Fail "gracefully" if we are unable to start. - self.ready.set() - self.error = sys.exc_info()[1] - raise - self.ready.set() while not self._stop: - httpd.handle_request() + self.httpd.handle_request() # Authentication infrastructure @@ -232,26 +219,21 @@ class ProxyAuthTests(unittest.TestCase): URL = "http://www.foo.com" - PORT = 8080 USER = "tester" PASSWD = "test123" REALM = "TestRealm" - PROXY_URL = "http://127.0.0.1:%d" % PORT - def setUp(self): FakeProxyHandler.digest_auth_handler.set_users({ self.USER : self.PASSWD }) FakeProxyHandler.digest_auth_handler.set_realm(self.REALM) - self.server = LoopbackHttpServerThread(self.PORT, FakeProxyHandler) + self.server = LoopbackHttpServerThread(FakeProxyHandler) self.server.start() self.server.ready.wait() - if self.server.error: - raise self.server.error - - handler = urllib2.ProxyHandler({"http" : self.PROXY_URL}) + proxy_url = "http://127.0.0.1:%d" % self.server.port + handler = urllib2.ProxyHandler({"http" : proxy_url}) self._digest_auth_handler = urllib2.ProxyDigestAuthHandler() self.opener = urllib2.build_opener(handler, self._digest_auth_handler) Modified: python/branches/bcannon-objcap/Lib/test/test_userstring.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_userstring.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_userstring.py Thu Sep 6 21:35:45 2007 @@ -3,6 +3,7 @@ # UserString instances should behave similar to builtin string objects. import unittest +import string from test import test_support, string_tests from UserString import UserString, MutableString @@ -88,6 +89,28 @@ del s[-1:10] self.assertEqual(s, "fo") + def test_extended_set_del_slice(self): + indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100) + orig = string.ascii_letters + string.digits + for start in indices: + for stop in indices: + # Use indices[1:] when MutableString can handle real + # extended slices + for step in (None, 1, -1): + s = self.type2test(orig) + L = list(orig) + # Make sure we have a slice of exactly the right length, + # but with (hopefully) different data. + data = L[start:stop:step] + data.reverse() + L[start:stop:step] = data + s[start:stop:step] = "".join(data) + self.assertEquals(s, "".join(L)) + + del L[start:stop:step] + del s[start:stop:step] + self.assertEquals(s, "".join(L)) + def test_immutable(self): s = self.type2test("foobar") s2 = s.immutable() Modified: python/branches/bcannon-objcap/Lib/test/test_warnings.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_warnings.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_warnings.py Thu Sep 6 21:35:45 2007 @@ -1,5 +1,6 @@ import warnings import os +import sys import unittest from test import test_support @@ -61,7 +62,7 @@ def test_options(self): # Uses the private _setoption() function to test the parsing # of command-line warning arguments - with test_support.guard_warnings_filter(): + with test_support.catch_warning(): self.assertRaises(warnings._OptionError, warnings._setoption, '1:2:3:4:5:6') self.assertRaises(warnings._OptionError, @@ -101,6 +102,10 @@ # to test_main (regrtest -R). if '__warningregistry__' in globals(): del globals()['__warningregistry__'] + if hasattr(warning_tests, '__warningregistry__'): + del warning_tests.__warningregistry__ + if hasattr(sys, '__warningregistry__'): + del sys.__warningregistry__ test_support.run_unittest(TestModule) if __name__ == "__main__": Modified: python/branches/bcannon-objcap/Lib/test/test_winreg.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_winreg.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_winreg.py Thu Sep 6 21:35:45 2007 @@ -3,8 +3,9 @@ from _winreg import * import os, sys +import unittest -from test.test_support import verify, have_unicode +from test import test_support test_key_name = "SOFTWARE\\Python Registry Test Key - Delete Me" @@ -17,140 +18,157 @@ ("Big String", "x"*(2**14-1), REG_SZ), ("Big Binary", "x"*(2**14), REG_BINARY), ] -if have_unicode: - test_data+=[ - (unicode("Unicode Val"), unicode("A Unicode value"), REG_SZ,), - ("UnicodeExpand", unicode("The path is %path%"), REG_EXPAND_SZ), - ("Multi-unicode", [unicode("Lots"), unicode("of"), unicode("unicode"), unicode("values")], REG_MULTI_SZ), - ("Multi-mixed", [unicode("Unicode"), unicode("and"), "string", "values"],REG_MULTI_SZ), + +if test_support.have_unicode: + test_data += [ + (unicode("Unicode Val"), unicode("A Unicode value"), REG_SZ,), + ("UnicodeExpand", unicode("The path is %path%"), REG_EXPAND_SZ), + ("Multi-unicode", [unicode("Lots"), unicode("of"), unicode("unicode"), + unicode("values")], REG_MULTI_SZ), + ("Multi-mixed", [unicode("Unicode"), unicode("and"), "string", + "values"], REG_MULTI_SZ), ] -def WriteTestData(root_key): - # Set the default value for this key. - SetValue(root_key, test_key_name, REG_SZ, "Default value") - key = CreateKey(root_key, test_key_name) - # Create a sub-key - sub_key = CreateKey(key, "sub_key") - # Give the sub-key some named values - - for value_name, value_data, value_type in test_data: - SetValueEx(sub_key, value_name, 0, value_type, value_data) - - # Check we wrote as many items as we thought. - nkeys, nvalues, since_mod = QueryInfoKey(key) - verify(nkeys==1, "Not the correct number of sub keys") - verify(nvalues==1, "Not the correct number of values") - nkeys, nvalues, since_mod = QueryInfoKey(sub_key) - verify(nkeys==0, "Not the correct number of sub keys") - verify(nvalues==len(test_data), "Not the correct number of values") - # Close this key this way... - # (but before we do, copy the key as an integer - this allows - # us to test that the key really gets closed). - int_sub_key = int(sub_key) - CloseKey(sub_key) - try: - QueryInfoKey(int_sub_key) - raise RuntimeError, "It appears the CloseKey() function does not close the actual key!" - except EnvironmentError: - pass - # ... and close that key that way :-) - int_key = int(key) - key.Close() - try: - QueryInfoKey(int_key) - raise RuntimeError, "It appears the key.Close() function does not close the actual key!" - except EnvironmentError: - pass - -def ReadTestData(root_key): - # Check we can get default value for this key. - val = QueryValue(root_key, test_key_name) - verify(val=="Default value", "Registry didn't give back the correct value") - - key = OpenKey(root_key, test_key_name) - # Read the sub-keys - sub_key = OpenKey(key, "sub_key") - # Check I can enumerate over the values. - index = 0 - while 1: +class WinregTests(unittest.TestCase): + remote_name = None + + def WriteTestData(self, root_key): + # Set the default value for this key. + SetValue(root_key, test_key_name, REG_SZ, "Default value") + key = CreateKey(root_key, test_key_name) + # Create a sub-key + sub_key = CreateKey(key, "sub_key") + # Give the sub-key some named values + + for value_name, value_data, value_type in test_data: + SetValueEx(sub_key, value_name, 0, value_type, value_data) + + # Check we wrote as many items as we thought. + nkeys, nvalues, since_mod = QueryInfoKey(key) + self.assertEquals(nkeys, 1, "Not the correct number of sub keys") + self.assertEquals(nvalues, 1, "Not the correct number of values") + nkeys, nvalues, since_mod = QueryInfoKey(sub_key) + self.assertEquals(nkeys, 0, "Not the correct number of sub keys") + self.assertEquals(nvalues, len(test_data), + "Not the correct number of values") + # Close this key this way... + # (but before we do, copy the key as an integer - this allows + # us to test that the key really gets closed). + int_sub_key = int(sub_key) + CloseKey(sub_key) try: - data = EnumValue(sub_key, index) + QueryInfoKey(int_sub_key) + self.fail("It appears the CloseKey() function does " + "not close the actual key!") except EnvironmentError: - break - verify(data in test_data, "Didn't read back the correct test data") - index = index + 1 - verify(index==len(test_data), "Didn't read the correct number of items") - # Check I can directly access each item - for value_name, value_data, value_type in test_data: - read_val, read_typ = QueryValueEx(sub_key, value_name) - verify(read_val==value_data and read_typ == value_type, \ - "Could not directly read the value" ) - sub_key.Close() - # Enumerate our main key. - read_val = EnumKey(key, 0) - verify(read_val == "sub_key", "Read subkey value wrong") - try: - EnumKey(key, 1) - verify(0, "Was able to get a second key when I only have one!") - except EnvironmentError: - pass - - key.Close() - -def DeleteTestData(root_key): - key = OpenKey(root_key, test_key_name, 0, KEY_ALL_ACCESS) - sub_key = OpenKey(key, "sub_key", 0, KEY_ALL_ACCESS) - # It is not necessary to delete the values before deleting - # the key (although subkeys must not exist). We delete them - # manually just to prove we can :-) - for value_name, value_data, value_type in test_data: - DeleteValue(sub_key, value_name) - - nkeys, nvalues, since_mod = QueryInfoKey(sub_key) - verify(nkeys==0 and nvalues==0, "subkey not empty before delete") - sub_key.Close() - DeleteKey(key, "sub_key") + pass + # ... and close that key that way :-) + int_key = int(key) + key.Close() + try: + QueryInfoKey(int_key) + self.fail("It appears the key.Close() function " + "does not close the actual key!") + except EnvironmentError: + pass + + def ReadTestData(self, root_key): + # Check we can get default value for this key. + val = QueryValue(root_key, test_key_name) + self.assertEquals(val, "Default value", + "Registry didn't give back the correct value") - try: - # Shouldnt be able to delete it twice! - DeleteKey(key, "sub_key") - verify(0, "Deleting the key twice succeeded") - except EnvironmentError: - pass - key.Close() - DeleteKey(root_key, test_key_name) - # Opening should now fail! - try: key = OpenKey(root_key, test_key_name) - verify(0, "Could open the non-existent key") - except WindowsError: # Use this error name this time - pass - -def TestAll(root_key): - WriteTestData(root_key) - ReadTestData(root_key) - DeleteTestData(root_key) - -# Test on my local machine. -TestAll(HKEY_CURRENT_USER) -print "Local registry tests worked" -try: - remote_name = sys.argv[sys.argv.index("--remote")+1] -except (IndexError, ValueError): - remote_name = None + # Read the sub-keys + sub_key = OpenKey(key, "sub_key") + # Check I can enumerate over the values. + index = 0 + while 1: + try: + data = EnumValue(sub_key, index) + except EnvironmentError: + break + self.assertEquals(data in test_data, True, + "Didn't read back the correct test data") + index = index + 1 + self.assertEquals(index, len(test_data), + "Didn't read the correct number of items") + # Check I can directly access each item + for value_name, value_data, value_type in test_data: + read_val, read_typ = QueryValueEx(sub_key, value_name) + self.assertEquals(read_val, value_data, + "Could not directly read the value") + self.assertEquals(read_typ, value_type, + "Could not directly read the value") + sub_key.Close() + # Enumerate our main key. + read_val = EnumKey(key, 0) + self.assertEquals(read_val, "sub_key", "Read subkey value wrong") + try: + EnumKey(key, 1) + self.fail("Was able to get a second key when I only have one!") + except EnvironmentError: + pass -if remote_name is not None: - try: - remote_key = ConnectRegistry(remote_name, HKEY_CURRENT_USER) - except EnvironmentError, exc: - print "Could not connect to the remote machine -", exc.strerror - remote_key = None - if remote_key is not None: - TestAll(remote_key) - print "Remote registry tests worked" -else: - print "Remote registry calls can be tested using", - print "'test_winreg.py --remote \\\\machine_name'" - # perform minimal ConnectRegistry test which just invokes it - h = ConnectRegistry(None, HKEY_LOCAL_MACHINE) - h.Close() + key.Close() + + def DeleteTestData(self, root_key): + key = OpenKey(root_key, test_key_name, 0, KEY_ALL_ACCESS) + sub_key = OpenKey(key, "sub_key", 0, KEY_ALL_ACCESS) + # It is not necessary to delete the values before deleting + # the key (although subkeys must not exist). We delete them + # manually just to prove we can :-) + for value_name, value_data, value_type in test_data: + DeleteValue(sub_key, value_name) + + nkeys, nvalues, since_mod = QueryInfoKey(sub_key) + self.assertEquals(nkeys, 0, "subkey not empty before delete") + self.assertEquals(nvalues, 0, "subkey not empty before delete") + sub_key.Close() + DeleteKey(key, "sub_key") + + try: + # Shouldnt be able to delete it twice! + DeleteKey(key, "sub_key") + self.fail("Deleting the key twice succeeded") + except EnvironmentError: + pass + key.Close() + DeleteKey(root_key, test_key_name) + # Opening should now fail! + try: + key = OpenKey(root_key, test_key_name) + self.fail("Could open the non-existent key") + except WindowsError: # Use this error name this time + pass + + def TestAll(self, root_key): + self.WriteTestData(root_key) + self.ReadTestData(root_key) + self.DeleteTestData(root_key) + + def testLocalMachineRegistryWorks(self): + self.TestAll(HKEY_CURRENT_USER) + + def testConnectRegistryToLocalMachineWorks(self): + # perform minimal ConnectRegistry test which just invokes it + h = ConnectRegistry(None, HKEY_LOCAL_MACHINE) + h.Close() + + def testRemoteMachineRegistryWorks(self): + if not self.remote_name: + return # remote machine name not specified + remote_key = ConnectRegistry(self.remote_name, HKEY_CURRENT_USER) + self.TestAll(remote_key) + +def test_main(): + test_support.run_unittest(WinregTests) + +if __name__ == "__main__": + try: + WinregTests.remote_name = sys.argv[sys.argv.index("--remote")+1] + except (IndexError, ValueError): + print "Remote registry calls can be tested using", + print "'test_winreg.py --remote \\\\machine_name'" + WinregTests.remote_name = None + test_main() Modified: python/branches/bcannon-objcap/Lib/test/test_xmlrpc.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_xmlrpc.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_xmlrpc.py Thu Sep 6 21:35:45 2007 @@ -1,7 +1,12 @@ +import base64 import datetime import sys +import time import unittest import xmlrpclib +import SimpleXMLRPCServer +import threading +import mimetools from test import test_support try: @@ -25,6 +30,10 @@ (2005, 02, 10, 11, 41, 23, 0, 1, -1)), 'datetime3': xmlrpclib.DateTime( datetime.datetime(2005, 02, 10, 11, 41, 23)), + 'datetime4': xmlrpclib.DateTime( + datetime.date(2005, 02, 10)), + 'datetime5': xmlrpclib.DateTime( + datetime.time(11, 41, 23)), }] class XMLRPCTestCase(unittest.TestCase): @@ -101,11 +110,37 @@ def test_dump_bad_dict(self): self.assertRaises(TypeError, xmlrpclib.dumps, ({(1,2,3): 1},)) + def test_dump_recursive_seq(self): + l = [1,2,3] + t = [3,4,5,l] + l.append(t) + self.assertRaises(TypeError, xmlrpclib.dumps, (l,)) + + def test_dump_recursive_dict(self): + d = {'1':1, '2':1} + t = {'3':3, 'd':d} + d['t'] = t + self.assertRaises(TypeError, xmlrpclib.dumps, (d,)) + def test_dump_big_int(self): if sys.maxint > 2L**31-1: self.assertRaises(OverflowError, xmlrpclib.dumps, (int(2L**34),)) + xmlrpclib.dumps((xmlrpclib.MAXINT, xmlrpclib.MININT)) + self.assertRaises(OverflowError, xmlrpclib.dumps, (xmlrpclib.MAXINT+1,)) + self.assertRaises(OverflowError, xmlrpclib.dumps, (xmlrpclib.MININT-1,)) + + def dummy_write(s): + pass + + m = xmlrpclib.Marshaller() + m.dump_int(xmlrpclib.MAXINT, dummy_write) + m.dump_int(xmlrpclib.MININT, dummy_write) + self.assertRaises(OverflowError, m.dump_int, xmlrpclib.MAXINT+1, dummy_write) + self.assertRaises(OverflowError, m.dump_int, xmlrpclib.MININT-1, dummy_write) + + def test_dump_none(self): value = alist + [None] arg1 = (alist + [None],) @@ -156,9 +191,354 @@ self.assertEquals(s, "abc \xc2\x95") self.assertEquals(items, [("def \xc2\x96", "ghi \xc2\x97")]) + +class HelperTestCase(unittest.TestCase): + def test_escape(self): + self.assertEqual(xmlrpclib.escape("a&b"), "a&b") + self.assertEqual(xmlrpclib.escape("ab"), "a>b") + +class FaultTestCase(unittest.TestCase): + def test_repr(self): + f = xmlrpclib.Fault(42, 'Test Fault') + self.assertEqual(repr(f), "") + self.assertEqual(repr(f), str(f)) + + def test_dump_fault(self): + f = xmlrpclib.Fault(42, 'Test Fault') + s = xmlrpclib.dumps((f,)) + (newf,), m = xmlrpclib.loads(s) + self.assertEquals(newf, {'faultCode': 42, 'faultString': 'Test Fault'}) + self.assertEquals(m, None) + + s = xmlrpclib.Marshaller().dumps(f) + self.assertRaises(xmlrpclib.Fault, xmlrpclib.loads, s) + + +class DateTimeTestCase(unittest.TestCase): + def test_default(self): + t = xmlrpclib.DateTime() + + def test_time(self): + d = 1181399930.036952 + t = xmlrpclib.DateTime(d) + self.assertEqual(str(t), time.strftime("%Y%m%dT%H:%M:%S", time.localtime(d))) + + def test_time_tuple(self): + d = (2007,6,9,10,38,50,5,160,0) + t = xmlrpclib.DateTime(d) + self.assertEqual(str(t), '20070609T10:38:50') + + def test_time_struct(self): + d = time.localtime(1181399930.036952) + t = xmlrpclib.DateTime(d) + self.assertEqual(str(t), time.strftime("%Y%m%dT%H:%M:%S", d)) + + def test_datetime_datetime(self): + d = datetime.datetime(2007,1,2,3,4,5) + t = xmlrpclib.DateTime(d) + self.assertEqual(str(t), '20070102T03:04:05') + + def test_datetime_date(self): + d = datetime.date(2007,9,8) + t = xmlrpclib.DateTime(d) + self.assertEqual(str(t), '20070908T00:00:00') + + def test_datetime_time(self): + d = datetime.time(13,17,19) + # allow for date rollover by checking today's or tomorrow's dates + dd1 = datetime.datetime.now().date() + dd2 = dd1 + datetime.timedelta(days=1) + vals = (dd1.strftime('%Y%m%dT13:17:19'), + dd2.strftime('%Y%m%dT13:17:19')) + t = xmlrpclib.DateTime(d) + self.assertEqual(str(t) in vals, True) + + def test_repr(self): + d = datetime.datetime(2007,1,2,3,4,5) + t = xmlrpclib.DateTime(d) + val ="" % id(t) + self.assertEqual(repr(t), val) + + def test_decode(self): + d = ' 20070908T07:11:13 ' + t1 = xmlrpclib.DateTime() + t1.decode(d) + tref = xmlrpclib.DateTime(datetime.datetime(2007,9,8,7,11,13)) + self.assertEqual(t1, tref) + + t2 = xmlrpclib._datetime(d) + self.assertEqual(t1, tref) + +class BinaryTestCase(unittest.TestCase): + def test_default(self): + t = xmlrpclib.Binary() + self.assertEqual(str(t), '') + + def test_string(self): + d = '\x01\x02\x03abc123\xff\xfe' + t = xmlrpclib.Binary(d) + self.assertEqual(str(t), d) + + def test_decode(self): + d = '\x01\x02\x03abc123\xff\xfe' + de = base64.encodestring(d) + t1 = xmlrpclib.Binary() + t1.decode(de) + self.assertEqual(str(t1), d) + + t2 = xmlrpclib._binary(de) + self.assertEqual(str(t2), d) + + +PORT = None + +def http_server(evt, numrequests): + class TestInstanceClass: + def div(self, x, y): + '''This is the div function''' + return x // y + + try: + serv = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 0), + logRequests=False, bind_and_activate=False) + serv.socket.settimeout(3) + serv.server_bind() + global PORT + PORT = serv.socket.getsockname()[1] + serv.server_activate() + serv.register_introspection_functions() + serv.register_multicall_functions() + serv.register_function(pow) + serv.register_function(lambda x,y: x+y, 'add') + serv.register_instance(TestInstanceClass()) + + # handle up to 'numrequests' requests + while numrequests > 0: + serv.handle_request() + numrequests -= 1 + + except socket.timeout: + pass + finally: + serv.socket.close() + PORT = None + evt.set() + + +def is_unavailable_exception(e): + '''Returns True if the given ProtocolError is the product of a server-side + exception caused by the 'temporarily unavailable' response sometimes + given by operations on non-blocking sockets.''' + # sometimes we get a -1 error code and/or empty headers + if e.errcode == -1 or e.headers is None: + return True + + exc_mess = e.headers.get('X-exception') + if exc_mess and 'temporarily unavailable' in exc_mess.lower(): + return True + + return False + +# NOTE: The tests in SimpleServerTestCase will ignore failures caused by +# "temporarily unavailable" exceptions raised in SimpleXMLRPCServer. This +# condition occurs infrequently on some platforms, frequently on others, and +# is apparently caused by using SimpleXMLRPCServer with a non-blocking socket. +# If the server class is updated at some point in the future to handle this +# situation more gracefully, these tests should be modified appropriately. + +class SimpleServerTestCase(unittest.TestCase): + def setUp(self): + # enable traceback reporting + SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = True + + self.evt = threading.Event() + # start server thread to handle requests + serv_args = (self.evt, 1) + threading.Thread(target=http_server, args=serv_args).start() + + # wait for port to be assigned to server + n = 1000 + while n > 0 and PORT is None: + time.sleep(0.001) + n -= 1 + + time.sleep(0.5) + + def tearDown(self): + # wait on the server thread to terminate + self.evt.wait() + + # disable traceback reporting + SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = False + + def test_simple1(self): + try: + p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT) + self.assertEqual(p.pow(6,8), 6**8) + except xmlrpclib.ProtocolError, e: + # ignore failures due to non-blocking socket 'unavailable' errors + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, e.headers)) + + def test_introspection1(self): + try: + p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT) + meth = p.system.listMethods() + expected_methods = set(['pow', 'div', 'add', 'system.listMethods', + 'system.methodHelp', 'system.methodSignature', 'system.multicall']) + self.assertEqual(set(meth), expected_methods) + except xmlrpclib.ProtocolError, e: + # ignore failures due to non-blocking socket 'unavailable' errors + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, e.headers)) + + def test_introspection2(self): + try: + p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT) + divhelp = p.system.methodHelp('div') + self.assertEqual(divhelp, 'This is the div function') + except xmlrpclib.ProtocolError, e: + # ignore failures due to non-blocking socket 'unavailable' errors + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, e.headers)) + + def test_introspection3(self): + # the SimpleXMLRPCServer doesn't support signatures, but + # at least check that we can try making the call + try: + p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT) + divsig = p.system.methodSignature('div') + self.assertEqual(divsig, 'signatures not supported') + except xmlrpclib.ProtocolError, e: + # ignore failures due to non-blocking socket 'unavailable' errors + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, e.headers)) + + def test_multicall(self): + try: + p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT) + multicall = xmlrpclib.MultiCall(p) + multicall.add(2,3) + multicall.pow(6,8) + multicall.div(127,42) + add_result, pow_result, div_result = multicall() + self.assertEqual(add_result, 2+3) + self.assertEqual(pow_result, 6**8) + self.assertEqual(div_result, 127//42) + except xmlrpclib.ProtocolError, e: + # ignore failures due to non-blocking socket 'unavailable' errors + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, e.headers)) + + +# This is a contrived way to make a failure occur on the server side +# in order to test the _send_traceback_header flag on the server +class FailingMessageClass(mimetools.Message): + def __getitem__(self, key): + key = key.lower() + if key == 'content-length': + return 'I am broken' + return mimetools.Message.__getitem__(self, key) + + +class FailingServerTestCase(unittest.TestCase): + def setUp(self): + self.evt = threading.Event() + # start server thread to handle requests + serv_args = (self.evt, 2) + threading.Thread(target=http_server, args=serv_args).start() + + # wait for port to be assigned to server + n = 1000 + while n > 0 and PORT is None: + time.sleep(0.001) + n -= 1 + + time.sleep(0.5) + + def tearDown(self): + # wait on the server thread to terminate + self.evt.wait() + # reset flag + SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = False + # reset message class + SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.MessageClass = mimetools.Message + + def test_basic(self): + # check that flag is false by default + flagval = SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header + self.assertEqual(flagval, False) + + # enable traceback reporting + SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = True + + # test a call that shouldn't fail just as a smoke test + try: + p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT) + self.assertEqual(p.pow(6,8), 6**8) + except xmlrpclib.ProtocolError, e: + # ignore failures due to non-blocking socket 'unavailable' errors + if not is_unavailable_exception(e): + # protocol error; provide additional information in test output + self.fail("%s\n%s" % (e, e.headers)) + + def test_fail_no_info(self): + # use the broken message class + SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.MessageClass = FailingMessageClass + + try: + p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT) + p.pow(6,8) + except xmlrpclib.ProtocolError, e: + # ignore failures due to non-blocking socket 'unavailable' errors + if not is_unavailable_exception(e): + # The two server-side error headers shouldn't be sent back in this case + self.assertTrue(e.headers.get("X-exception") is None) + self.assertTrue(e.headers.get("X-traceback") is None) + else: + self.fail('ProtocolError not raised') + + def test_fail_with_info(self): + # use the broken message class + SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.MessageClass = FailingMessageClass + + # Check that errors in the server send back exception/traceback + # info when flag is set + SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = True + + try: + p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT) + p.pow(6,8) + except xmlrpclib.ProtocolError, e: + # ignore failures due to non-blocking socket 'unavailable' errors + if not is_unavailable_exception(e): + # We should get error info in the response + expected_err = "invalid literal for int() with base 10: 'I am broken'" + self.assertEqual(e.headers.get("x-exception"), expected_err) + self.assertTrue(e.headers.get("x-traceback") is not None) + else: + self.fail('ProtocolError not raised') + + def test_main(): - test_support.run_unittest(XMLRPCTestCase) + xmlrpc_tests = [XMLRPCTestCase, HelperTestCase, DateTimeTestCase, + BinaryTestCase, FaultTestCase] + + # The test cases against a SimpleXMLRPCServer raise a socket error + # 10035 (WSAEWOULDBLOCK) in the server thread handle_request call when + # run on Windows. This only happens on the first test to run, but it + # fails every time and so these tests are skipped on win32 platforms. + if sys.platform != 'win32': + xmlrpc_tests.append(SimpleServerTestCase) + xmlrpc_tests.append(FailingServerTestCase) + test_support.run_unittest(*xmlrpc_tests) if __name__ == "__main__": test_main() Modified: python/branches/bcannon-objcap/Lib/test/test_zipfile.py ============================================================================== --- python/branches/bcannon-objcap/Lib/test/test_zipfile.py (original) +++ python/branches/bcannon-objcap/Lib/test/test_zipfile.py Thu Sep 6 21:35:45 2007 @@ -14,12 +14,12 @@ from test.test_support import TESTFN, run_unittest TESTFN2 = TESTFN + "2" -FIXEDTEST_SIZE = 10 +FIXEDTEST_SIZE = 1000 class TestsWithSourceFile(unittest.TestCase): def setUp(self): - self.line_gen = ("Zipfile test line %d. random float: %f" % (i, random()) - for i in xrange(FIXEDTEST_SIZE)) + self.line_gen = ["Zipfile test line %d. random float: %f" % (i, random()) + for i in xrange(FIXEDTEST_SIZE)] self.data = '\n'.join(self.line_gen) + '\n' # Make a source file with some lines @@ -239,6 +239,63 @@ self.assertEqual(zipfp.namelist(), ["absolute"]) zipfp.close() + def testAppendToZipFile(self): + # Test appending to an existing zipfile + zipfp = zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) + zipfp.write(TESTFN, TESTFN) + zipfp.close() + zipfp = zipfile.ZipFile(TESTFN2, "a", zipfile.ZIP_STORED) + zipfp.writestr("strfile", self.data) + self.assertEqual(zipfp.namelist(), [TESTFN, "strfile"]) + zipfp.close() + + def testAppendToNonZipFile(self): + # Test appending to an existing file that is not a zipfile + # NOTE: this test fails if len(d) < 22 because of the first + # line "fpin.seek(-22, 2)" in _EndRecData + d = 'I am not a ZipFile!'*10 + f = file(TESTFN2, 'wb') + f.write(d) + f.close() + zipfp = zipfile.ZipFile(TESTFN2, "a", zipfile.ZIP_STORED) + zipfp.write(TESTFN, TESTFN) + zipfp.close() + + f = file(TESTFN2, 'rb') + f.seek(len(d)) + zipfp = zipfile.ZipFile(f, "r") + self.assertEqual(zipfp.namelist(), [TESTFN]) + zipfp.close() + f.close() + + def test_WriteDefaultName(self): + # Check that calling ZipFile.write without arcname specified produces the expected result + zipfp = zipfile.ZipFile(TESTFN2, "w") + zipfp.write(TESTFN) + self.assertEqual(zipfp.read(TESTFN), file(TESTFN).read()) + zipfp.close() + + def test_PerFileCompression(self): + # Check that files within a Zip archive can have different compression options + zipfp = zipfile.ZipFile(TESTFN2, "w") + zipfp.write(TESTFN, 'storeme', zipfile.ZIP_STORED) + zipfp.write(TESTFN, 'deflateme', zipfile.ZIP_DEFLATED) + sinfo = zipfp.getinfo('storeme') + dinfo = zipfp.getinfo('deflateme') + self.assertEqual(sinfo.compress_type, zipfile.ZIP_STORED) + self.assertEqual(dinfo.compress_type, zipfile.ZIP_DEFLATED) + zipfp.close() + + def test_WriteToReadonly(self): + # Check that trying to call write() on a readonly ZipFile object + # raises a RuntimeError + zipf = zipfile.ZipFile(TESTFN2, mode="w") + zipf.writestr("somefile.txt", "bogus") + zipf.close() + zipf = zipfile.ZipFile(TESTFN2, mode="r") + self.assertRaises(RuntimeError, zipf.write, TESTFN) + zipf.close() + def tearDown(self): os.remove(TESTFN) os.remove(TESTFN2) @@ -361,7 +418,6 @@ self.assertEqual(zipfp.namelist(), ["absolute"]) zipfp.close() - def tearDown(self): zipfile.ZIP64_LIMIT = self._limit os.remove(TESTFN) @@ -432,6 +488,11 @@ finally: shutil.rmtree(TESTFN2) + def testWriteNonPyfile(self): + zipfp = zipfile.PyZipFile(TemporaryFile(), "w") + file(TESTFN, 'w').write('most definitely not a python file') + self.assertRaises(RuntimeError, zipfp.writepy, TESTFN) + os.remove(TESTFN) class OtherTests(unittest.TestCase): @@ -513,7 +574,56 @@ # a RuntimeError, and so should calling .testzip. An earlier # version of .testzip would swallow this exception (and any other) # and report that the first file in the archive was corrupt. + self.assertRaises(RuntimeError, zipf.read, "foo.txt") + self.assertRaises(RuntimeError, zipf.open, "foo.txt") self.assertRaises(RuntimeError, zipf.testzip) + self.assertRaises(RuntimeError, zipf.writestr, "bogus.txt", "bogus") + file(TESTFN, 'w').write('zipfile test data') + self.assertRaises(RuntimeError, zipf.write, TESTFN) + + def test_BadConstructorMode(self): + # Check that bad modes passed to ZipFile constructor are caught + self.assertRaises(RuntimeError, zipfile.ZipFile, TESTFN, "q") + + def test_BadOpenMode(self): + # Check that bad modes passed to ZipFile.open are caught + zipf = zipfile.ZipFile(TESTFN, mode="w") + zipf.writestr("foo.txt", "O, for a Muse of Fire!") + zipf.close() + zipf = zipfile.ZipFile(TESTFN, mode="r") + # read the data to make sure the file is there + zipf.read("foo.txt") + self.assertRaises(RuntimeError, zipf.open, "foo.txt", "q") + zipf.close() + + def test_Read0(self): + # Check that calling read(0) on a ZipExtFile object returns an empty + # string and doesn't advance file pointer + zipf = zipfile.ZipFile(TESTFN, mode="w") + zipf.writestr("foo.txt", "O, for a Muse of Fire!") + # read the data to make sure the file is there + f = zipf.open("foo.txt") + for i in xrange(FIXEDTEST_SIZE): + self.assertEqual(f.read(0), '') + + self.assertEqual(f.read(), "O, for a Muse of Fire!") + zipf.close() + + def test_OpenNonexistentItem(self): + # Check that attempting to call open() for an item that doesn't + # exist in the archive raises a RuntimeError + zipf = zipfile.ZipFile(TESTFN, mode="w") + self.assertRaises(KeyError, zipf.open, "foo.txt", "r") + + def test_BadCompressionMode(self): + # Check that bad compression methods passed to ZipFile.open are caught + self.assertRaises(RuntimeError, zipfile.ZipFile, TESTFN, "w", -1) + + def test_NullByteInFilename(self): + # Check that a filename containing a null byte is properly terminated + zipf = zipfile.ZipFile(TESTFN, mode="w") + zipf.writestr("foo.txt\x00qqq", "O, for a Muse of Fire!") + self.assertEqual(zipf.namelist(), ['foo.txt']) def tearDown(self): support.unlink(TESTFN) Modified: python/branches/bcannon-objcap/Lib/threading.py ============================================================================== --- python/branches/bcannon-objcap/Lib/threading.py (original) +++ python/branches/bcannon-objcap/Lib/threading.py Thu Sep 6 21:35:45 2007 @@ -85,9 +85,10 @@ self.__count = 0 def __repr__(self): + owner = self.__owner return "<%s(%s, %d)>" % ( self.__class__.__name__, - self.__owner and self.__owner.getName(), + owner and owner.getName(), self.__count) def acquire(self, blocking=1): @@ -445,6 +446,26 @@ self.__target(*self.__args, **self.__kwargs) def __bootstrap(self): + # Wrapper around the real bootstrap code that ignores + # exceptions during interpreter cleanup. Those typically + # happen when a daemon thread wakes up at an unfortunate + # moment, finds the world around it destroyed, and raises some + # random exception *** while trying to report the exception in + # __bootstrap_inner() below ***. Those random exceptions + # don't help anybody, and they confuse users, so we suppress + # them. We suppress them only when it appears that the world + # indeed has already been destroyed, so that exceptions in + # __bootstrap_inner() during normal business hours are properly + # reported. Also, we only suppress them for daemonic threads; + # if a non-daemonic encounters this, something else is wrong. + try: + self.__bootstrap_inner() + except: + if self.__daemonic and _sys is None: + return + raise + + def __bootstrap_inner(self): try: self.__started = True _active_limbo_lock.acquire() Modified: python/branches/bcannon-objcap/Lib/urllib.py ============================================================================== --- python/branches/bcannon-objcap/Lib/urllib.py (original) +++ python/branches/bcannon-objcap/Lib/urllib.py Thu Sep 6 21:35:45 2007 @@ -91,6 +91,14 @@ if _urlopener: _urlopener.cleanup() +# check for SSL +try: + import ssl +except: + _have_ssl = False +else: + _have_ssl = True + # exception raised when downloaded size does not match content-length class ContentTooShortError(IOError): def __init__(self, message, content): @@ -361,9 +369,10 @@ fp.close() raise IOError, ('http error', errcode, errmsg, headers) - if hasattr(socket, "ssl"): + if _have_ssl: def open_https(self, url, data=None): """Use HTTPS protocol.""" + import httplib user_passwd = None proxy_passwd = None Modified: python/branches/bcannon-objcap/Lib/urllib2.py ============================================================================== --- python/branches/bcannon-objcap/Lib/urllib2.py (original) +++ python/branches/bcannon-objcap/Lib/urllib2.py Thu Sep 6 21:35:45 2007 @@ -295,6 +295,10 @@ self.process_request = {} def add_handler(self, handler): + if not hasattr(handler, "add_parent"): + raise TypeError("expected BaseHandler instance, got %r" % + type(handler)) + added = False for meth in dir(handler): if meth in ["redirect_request", "do_open", "proxy_open"]: Modified: python/branches/bcannon-objcap/Lib/uuid.py ============================================================================== --- python/branches/bcannon-objcap/Lib/uuid.py (original) +++ python/branches/bcannon-objcap/Lib/uuid.py Thu Sep 6 21:35:45 2007 @@ -393,7 +393,6 @@ _uuid_generate_random = _uuid_generate_time = _UuidCreate = None try: import ctypes, ctypes.util - _buffer = ctypes.create_string_buffer(16) # The uuid_generate_* routines are provided by libuuid on at least # Linux and FreeBSD, and provided by libc on Mac OS X. @@ -426,11 +425,13 @@ def _unixdll_getnode(): """Get the hardware address on Unix using ctypes.""" + _buffer = ctypes.create_string_buffer(16) _uuid_generate_time(_buffer) return UUID(bytes=_buffer.raw).node def _windll_getnode(): """Get the hardware address on Windows using ctypes.""" + _buffer = ctypes.create_string_buffer(16) if _UuidCreate(_buffer) == 0: return UUID(bytes=_buffer.raw).node @@ -478,6 +479,7 @@ # When the system provides a version-1 UUID generator, use it (but don't # use UuidCreate here because its UUIDs don't conform to RFC 4122). + _buffer = ctypes.create_string_buffer(16) if _uuid_generate_time and node is clock_seq is None: _uuid_generate_time(_buffer) return UUID(bytes=_buffer.raw) @@ -514,6 +516,7 @@ """Generate a random UUID.""" # When the system provides a version-4 UUID generator, use it. + _buffer = ctypes.create_string_buffer(16) if _uuid_generate_random: _uuid_generate_random(_buffer) return UUID(bytes=_buffer.raw) Modified: python/branches/bcannon-objcap/Lib/webbrowser.py ============================================================================== --- python/branches/bcannon-objcap/Lib/webbrowser.py (original) +++ python/branches/bcannon-objcap/Lib/webbrowser.py Thu Sep 6 21:35:45 2007 @@ -1,5 +1,6 @@ #! /usr/bin/env python """Interfaces for launching and remotely controlling Web browsers.""" +# Maintained by Georg Brandl. import os import shlex @@ -160,6 +161,7 @@ def __init__(self, name): if isinstance(name, basestring): self.name = name + self.args = ["%s"] else: # name should be a list with arguments self.name = name[0] Modified: python/branches/bcannon-objcap/Lib/zipfile.py ============================================================================== --- python/branches/bcannon-objcap/Lib/zipfile.py (original) +++ python/branches/bcannon-objcap/Lib/zipfile.py Thu Sep 6 21:35:45 2007 @@ -568,8 +568,9 @@ def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=False): """Open the ZIP file with mode read "r", write "w" or append "a".""" - self._allowZip64 = allowZip64 - self._didModify = False + if mode not in ("r", "w", "a"): + raise RuntimeError('ZipFile() requires mode "r", "w", or "a"') + if compression == ZIP_STORED: pass elif compression == ZIP_DEFLATED: @@ -578,6 +579,9 @@ "Compression requires the (missing) zlib module" else: raise RuntimeError, "That compression method is not supported" + + self._allowZip64 = allowZip64 + self._didModify = False self.debug = 0 # Level of printing: 0 through 3 self.NameToInfo = {} # Find file info given name self.filelist = [] # List of ZipInfo instances for archive @@ -720,7 +724,12 @@ def getinfo(self, name): """Return the instance of ZipInfo given 'name'.""" - return self.NameToInfo[name] + info = self.NameToInfo.get(name) + if info is None: + raise KeyError( + 'There is no item named %r in the archive' % name) + + return info def setpassword(self, pwd): """Set default password for encrypted files.""" @@ -824,6 +833,10 @@ def write(self, filename, arcname=None, compress_type=None): """Put the bytes from filename into the archive under the name arcname.""" + if not self.fp: + raise RuntimeError( + "Attempt to write to ZIP archive that was already closed") + st = os.stat(filename) mtime = time.localtime(st.st_mtime) date_time = mtime[0:6] @@ -896,6 +909,11 @@ zinfo.compress_type = self.compression else: zinfo = zinfo_or_arcname + + if not self.fp: + raise RuntimeError( + "Attempt to write to ZIP archive that was already closed") + zinfo.file_size = len(bytes) # Uncompressed size zinfo.header_offset = self.fp.tell() # Start of header bytes self._writecheck(zinfo) Modified: python/branches/bcannon-objcap/Makefile.pre.in ============================================================================== --- python/branches/bcannon-objcap/Makefile.pre.in (original) +++ python/branches/bcannon-objcap/Makefile.pre.in Thu Sep 6 21:35:45 2007 @@ -61,7 +61,7 @@ # Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to # be able to build extension modules using the directories specified in the # environment variables -CPPFLAGS= -I. -I$(srcdir)/Include @CPPFLAGS@ +CPPFLAGS= -I. -IInclude -I$(srcdir)/Include @CPPFLAGS@ LDFLAGS= @LDFLAGS@ LDLAST= @LDLAST@ SGI_ABI= @SGI_ABI@ @@ -392,7 +392,7 @@ -compatibility_version $(VERSION) \ -current_version $(VERSION); \ else \ - libtool -o $(LDLIBRARY) -dynamic $(OTHER_LIBTOOL_OPT) $(LIBRARY) \ + /usr/bin/libtool -o $(LDLIBRARY) -dynamic $(OTHER_LIBTOOL_OPT) $(LIBRARY) \ @LIBTOOL_CRUFT@ ;\ fi $(INSTALL) -d -m $(DIRMODE) \ @@ -471,6 +471,7 @@ $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) + -@ mkdir Include -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) $(PGEN): $(PGENOBJS) @@ -601,7 +602,11 @@ # Like testall, but with a single pass only +# run an optional script to include some information about the build environment buildbottest: all platform + - at if which pybuildbot.identify >/dev/null 2>&1; then \ + pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \ + fi $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall -rw QUICKTESTOPTS= $(TESTOPTS) -x test_thread test_signal test_strftime \ Modified: python/branches/bcannon-objcap/Misc/ACKS ============================================================================== --- python/branches/bcannon-objcap/Misc/ACKS (original) +++ python/branches/bcannon-objcap/Misc/ACKS Thu Sep 6 21:35:45 2007 @@ -80,6 +80,7 @@ Peter Bosch Eric Bouck Thierry Bousch +Sebastian Boving Monty Brandenberg Georg Brandl Terrence Brannon @@ -319,6 +320,7 @@ Tony Ingraldi John Interrante Bob Ippolito +Atsuo Ishimoto Ben Jackson Paul Jackson David Jacobs Modified: python/branches/bcannon-objcap/Misc/BeOS-NOTES ============================================================================== --- python/branches/bcannon-objcap/Misc/BeOS-NOTES (original) +++ python/branches/bcannon-objcap/Misc/BeOS-NOTES Thu Sep 6 21:35:45 2007 @@ -39,4 +39,5 @@ make install -Maintainer: Mikael Jansson (mail at mikael.jansson.be) +Maintainer: None (please volunteer if you would like to see this port continue +to exist!) Modified: python/branches/bcannon-objcap/Misc/NEWS ============================================================================== --- python/branches/bcannon-objcap/Misc/NEWS (original) +++ python/branches/bcannon-objcap/Misc/NEWS Thu Sep 6 21:35:45 2007 @@ -12,6 +12,18 @@ Core and builtins ----------------- +- Patch #1031213: Decode source line in SyntaxErrors back to its original source + encoding. + +- Py_ssize_t fields work in structmember when HAVE_LONG_LONG is not defined. + +- PEP 3123: Provide forward compatibility with Python 3.0, while keeping + backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and + PyVarObject_HEAD_INIT. + +- Patch #1673759: add a missing overflow check when formatting floats + with %G. + - Patch #1733960: Allow T_LONGLONG to accept ints. - T_PYSSIZET can now be used in PyMemberDef lists for Py_ssize_t members. @@ -231,6 +243,42 @@ Library ------- +- Bug #1709599: Run test_1565150 only if the file system is NTFS. + +- When encountering a password-protected robots.txt file the RobotFileParser + no longer prompts interactively for a username and password (bug 813986). + +- TarFile.__init__() no longer fails if no name argument is passed and + the fileobj argument has no usable name attribute (e.g. StringIO). + +- The functools module now provides 'reduce', for forward compatibility + with Python 3000. + +- Server-side SSL support and cert verification added, by Bill Janssen. + +- socket.ssl deprecated; use new ssl module instead. + +- uuid creation is now threadsafe. + +- EUC-KR codec now handles the cheot-ga-keut composed make-up hangul + syllables. + +- GB18030 codec now can encode additional two-byte characters that + are missing in GBK. + +- Add new codecs for UTF-32, UTF-32-LE and UTF-32-BE. + +- Bug #1704793: Return UTF-16 pair if unicodedata.lookup cannot + represent the result in a single character. + +- Bug #978833: Close https sockets by releasing the _ssl object. + +- Change location of the package index to pypi.python.org/pypi + +- Bug #1701409: Fix a segfault in printing ctypes.c_char_p and + ctypes.c_wchar_p when they point to an invalid location. As a + sideeffect the representation of these instances has changed. + - tarfile.py: Added "exclude" keyword argument to TarFile.add(). - Bug #1734723: Fix repr.Repr() so it doesn't ignore the maxtuple attribute. @@ -417,6 +465,10 @@ - Patch #1481079: add support for HTTP_REFERER to CGIHTTPServer. +- Patch #1675424: Added tests for uncovered code in the zipfile module. + The KeyError raised by Zipfile.getinfo for nonexistent names now has + a descriptive message. + - Bug #1115886: os.path.splitext('.cshrc') gives now ('.cshrc', ''). - unittest now verifies more of its assumptions. In particular, TestCase @@ -697,6 +749,12 @@ Extension Modules ----------------- +- Patch #1388440: Add set_completion_display_matches_hook and + get_completion_type to readline. + +- Bug #1649098: Avoid declaration of zero-sized array declaration in + structure. + - Removed the rgbimg module; been deprecated since Python 2.5. - Bug #1721309: prevent bsddb module from freeing random memory. @@ -752,10 +810,6 @@ - Patch #1576166: Support os.utime for directories on Windows NT+. -- Bug #1548891: The cStringIO.StringIO() constructor now encodes unicode - arguments with the system default encoding just like the write() - method does, instead of converting it to a raw buffer. - - Patch #1572724: fix typo ('=' instead of '==') in _msi.c. - Bug #1572832: fix a bug in ISO-2022 codecs which may cause segfault @@ -790,17 +844,24 @@ - fixed a bug with bsddb.DB.stat: the flags and txn keyword arguments were transposed. -- Added support for linking the bsddb module against BerkeleyDB 4.5.x. +- Added support for linking the bsddb module against BerkeleyDB 4.5.x + and 4.6.x. - Bug #1633621: if curses.resizeterm() or curses.resize_term() is called, update _curses.LINES, _curses.COLS, curses.LINES and curses.COLS. - Fix an off-by-one bug in locale.strxfrm(). +- Fix libffi configure for hppa*-*-linux* | parisc*-*-linux*. + Tests ----- +- Make test_runpy reentrant by fixing _check_module to clear out any module + being tested. Was causing an error by __import__ doing a reload on the + second run and thus suppressing bytecode recreation. + - Capture socket connection resets and timeouts in test_socket_ssl and test_urllib2net and raise test.test_support.ResourceDenied. @@ -816,10 +877,6 @@ context manager so that one can temporarily set or unset environment variables. -- Added guard_warnings_filter to test.test_support. It returns a context - manager that protects the 'warnings' module's filter from being mutated - once the context has been exited. - - Added some tests for modulefinder. - Converted test_imp to use unittest. @@ -834,6 +891,9 @@ Tools ----- +- Tools/18n/pygettext.py was added to the list of scripts installed by + Tools/scripts/setup.py (tracker item 642309). + - Added IronPython and Jython support to pybench (part of which was patch #1563844) @@ -844,10 +904,12 @@ platform.python_implementation(); this will now be saved in the benchmark pickle - Documentation ------------- +- Bug #1637365: add subsection about "__name__ == __main__" to the + Python tutorial. + - Patch #1698768: updated the "using Python on the Mac" intro. - Bug #1569057: Document that calling file.next() when the file is open for @@ -898,6 +960,15 @@ Build ----- +- Patch #786737: Allow building in a tree of symlinks pointing to + a readonly source. + +- Bug #1737210: Change Manufacturer of Windows installer to PSF. + +- Bug #1746880: Correctly install DLLs into system32 folder on Win64. + +- Define _BSD_SOURCE, to get access to POSIX extensions on OpenBSD 4.1+. + - Stop supporting AtheOS and cause a build error in configure for the platform. - Bug #1655392: don't add -L/usr/lib/pythonX.Y/config to the LDFLAGS @@ -928,6 +999,10 @@ - Fix the build of the library reference in info format. +- Allow Emacs 22 for building the documentation in info format. + +- Makefile.pre.in(buildbottest): Run an optional script pybuildbot.identify + to include some information about the build environment. C API ----- Modified: python/branches/bcannon-objcap/Misc/build.sh ============================================================================== --- python/branches/bcannon-objcap/Misc/build.sh (original) +++ python/branches/bcannon-objcap/Misc/build.sh Thu Sep 6 21:35:45 2007 @@ -214,17 +214,22 @@ cd $DIR/Doc F="make-doc.out" start=`current_time` +# XXX(nnorwitz): For now, keep the code that checks for a conflicted file until +# after the first release of 2.6a1 or 3.0a1. At that point, it will be clear +# if there will be a similar problem with the new doc system. + # Doc/commontex/boilerplate.tex is expected to always have an outstanding # modification for the date. When a release is cut, a conflict occurs. # This allows us to detect this problem and not try to build the docs # which will definitely fail with a conflict. -CONFLICTED_FILE=commontex/boilerplate.tex -conflict_count=`grep -c "<<<" $CONFLICTED_FILE` +#CONFLICTED_FILE=commontex/boilerplate.tex +#conflict_count=`grep -c "<<<" $CONFLICTED_FILE` +conflict_count=0 if [ $conflict_count != 0 ]; then echo "Conflict detected in $CONFLICTED_FILE. Doc build skipped." > ../build/$F err=1 else - make >& ../build/$F + make update html >& ../build/$F err=$? fi update_status "Making doc" "$F" $start @@ -238,6 +243,6 @@ echo "" >> $RESULT_FILE ## copy results -rsync $RSYNC_OPTS html/* $REMOTE_SYSTEM:$REMOTE_DIR +rsync $RSYNC_OPTS build/html/* $REMOTE_SYSTEM:$REMOTE_DIR cd ../build rsync $RSYNC_OPTS index.html *.out $REMOTE_SYSTEM:$REMOTE_DIR/results/ Modified: python/branches/bcannon-objcap/Misc/developers.txt ============================================================================== --- python/branches/bcannon-objcap/Misc/developers.txt (original) +++ python/branches/bcannon-objcap/Misc/developers.txt Thu Sep 6 21:35:45 2007 @@ -17,13 +17,17 @@ Permissions History ------------------- -- Senthil Kumaran was given SVN access on June 16 2007 - by MvL, for his Summer-of-Code project, mentored by - Skip Montanaro. - -- Alexandre Vassalotti was given SVN access on May 21 2007 - by MvL, for his Summer-of-Code project, mentored by - Brett Cannon. +- Bill Janssen was given SVN access on 28 August 2007 by NCN, + for his work on the SSL module and other things related to (SSL) sockets. + +- Jeffrey Yasskin was given SVN access on 9 August 2007 by NCN, + for his work on PEPs and other general patches. + +- Senthil Kumaran was given SVN access on 16 June 2007 by MvL, + for his Summer-of-Code project, mentored by Skip Montanaro. + +- Alexandre Vassalotti was given SVN access on 21 May 2007 by MvL, + for his Summer-of-Code project, mentored by Brett Cannon. - Travis Oliphant was given SVN access on 17 Apr 2007 by MvL, for implementing the extended buffer protocol. Modified: python/branches/bcannon-objcap/Modules/_bsddb.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_bsddb.c (original) +++ python/branches/bcannon-objcap/Modules/_bsddb.c Thu Sep 6 21:35:45 2007 @@ -300,13 +300,13 @@ staticforward PyTypeObject DB_Type, DBCursor_Type, DBEnv_Type, DBTxn_Type, DBLock_Type; -#define DBObject_Check(v) ((v)->ob_type == &DB_Type) -#define DBCursorObject_Check(v) ((v)->ob_type == &DBCursor_Type) -#define DBEnvObject_Check(v) ((v)->ob_type == &DBEnv_Type) -#define DBTxnObject_Check(v) ((v)->ob_type == &DBTxn_Type) -#define DBLockObject_Check(v) ((v)->ob_type == &DBLock_Type) +#define DBObject_Check(v) (Py_Type(v) == &DB_Type) +#define DBCursorObject_Check(v) (Py_Type(v) == &DBCursor_Type) +#define DBEnvObject_Check(v) (Py_Type(v) == &DBEnv_Type) +#define DBTxnObject_Check(v) (Py_Type(v) == &DBTxn_Type) +#define DBLockObject_Check(v) (Py_Type(v) == &DBLock_Type) #if (DBVER >= 43) -#define DBSequenceObject_Check(v) ((v)->ob_type == &DBSequence_Type) +#define DBSequenceObject_Check(v) (Py_Type(v) == &DBSequence_Type) #endif @@ -461,7 +461,7 @@ else { PyErr_Format(PyExc_TypeError, "String or Integer object expected for key, %s found", - keyobj->ob_type->tp_name); + Py_Type(keyobj)->tp_name); return 0; } @@ -616,7 +616,7 @@ static void makeTypeError(char* expected, PyObject* found) { PyErr_Format(PyExc_TypeError, "Expected %s argument, %s found.", - expected, found->ob_type->tp_name); + expected, Py_Type(found)->tp_name); } @@ -5666,13 +5666,13 @@ /* Initialize the type of the new type objects here; doing it here is required for portability to Windows without requiring C++. */ - DB_Type.ob_type = &PyType_Type; - DBCursor_Type.ob_type = &PyType_Type; - DBEnv_Type.ob_type = &PyType_Type; - DBTxn_Type.ob_type = &PyType_Type; - DBLock_Type.ob_type = &PyType_Type; + Py_Type(&DB_Type) = &PyType_Type; + Py_Type(&DBCursor_Type) = &PyType_Type; + Py_Type(&DBEnv_Type) = &PyType_Type; + Py_Type(&DBTxn_Type) = &PyType_Type; + Py_Type(&DBLock_Type) = &PyType_Type; #if (DBVER >= 43) - DBSequence_Type.ob_type = &PyType_Type; + Py_Type(&DBSequence_Type) = &PyType_Type; #endif Modified: python/branches/bcannon-objcap/Modules/_codecsmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_codecsmodule.c (original) +++ python/branches/bcannon-objcap/Modules/_codecsmodule.c Thu Sep 6 21:35:45 2007 @@ -10,7 +10,7 @@ register(search_function) -> None - lookup(encoding) -> (encoder, decoder, stream_reader, stream_writer) + lookup(encoding) -> CodecInfo object The builtin Unicode codecs use the following interface: @@ -45,7 +45,8 @@ \n\ Register a codec search function. Search functions are expected to take\n\ one argument, the encoding name in all lower case letters, and return\n\ -a tuple of functions (encoder, decoder, stream_reader, stream_writer)."); +a tuple of functions (encoder, decoder, stream_reader, stream_writer)\n\ +(or a CodecInfo object)."); static PyObject *codec_register(PyObject *self, PyObject *search_function) @@ -57,10 +58,10 @@ } PyDoc_STRVAR(lookup__doc__, -"lookup(encoding) -> (encoder, decoder, stream_reader, stream_writer)\n\ +"lookup(encoding) -> CodecInfo\n\ \n\ Looks up a codec tuple in the Python codec registry and returns\n\ -a tuple of functions."); +a tuple of function (or a CodecInfo object)."); static PyObject *codec_lookup(PyObject *self, PyObject *args) @@ -391,6 +392,126 @@ } static PyObject * +utf_32_decode(PyObject *self, + PyObject *args) +{ + const char *data; + Py_ssize_t size; + const char *errors = NULL; + int byteorder = 0; + int final = 0; + Py_ssize_t consumed; + PyObject *decoded; + + if (!PyArg_ParseTuple(args, "t#|zi:utf_32_decode", + &data, &size, &errors, &final)) + return NULL; + if (size < 0) { + PyErr_SetString(PyExc_ValueError, "negative argument"); + return 0; + } + consumed = size; /* This is overwritten unless final is true. */ + decoded = PyUnicode_DecodeUTF32Stateful(data, size, errors, &byteorder, + final ? NULL : &consumed); + if (decoded == NULL) + return NULL; + return codec_tuple(decoded, consumed); +} + +static PyObject * +utf_32_le_decode(PyObject *self, + PyObject *args) +{ + const char *data; + Py_ssize_t size; + const char *errors = NULL; + int byteorder = -1; + int final = 0; + Py_ssize_t consumed; + PyObject *decoded = NULL; + + if (!PyArg_ParseTuple(args, "t#|zi:utf_32_le_decode", + &data, &size, &errors, &final)) + return NULL; + + if (size < 0) { + PyErr_SetString(PyExc_ValueError, "negative argument"); + return 0; + } + consumed = size; /* This is overwritten unless final is true. */ + decoded = PyUnicode_DecodeUTF32Stateful(data, size, errors, + &byteorder, final ? NULL : &consumed); + if (decoded == NULL) + return NULL; + return codec_tuple(decoded, consumed); + +} + +static PyObject * +utf_32_be_decode(PyObject *self, + PyObject *args) +{ + const char *data; + Py_ssize_t size; + const char *errors = NULL; + int byteorder = 1; + int final = 0; + Py_ssize_t consumed; + PyObject *decoded = NULL; + + if (!PyArg_ParseTuple(args, "t#|zi:utf_32_be_decode", + &data, &size, &errors, &final)) + return NULL; + if (size < 0) { + PyErr_SetString(PyExc_ValueError, "negative argument"); + return 0; + } + consumed = size; /* This is overwritten unless final is true. */ + decoded = PyUnicode_DecodeUTF32Stateful(data, size, errors, + &byteorder, final ? NULL : &consumed); + if (decoded == NULL) + return NULL; + return codec_tuple(decoded, consumed); +} + +/* This non-standard version also provides access to the byteorder + parameter of the builtin UTF-32 codec. + + It returns a tuple (unicode, bytesread, byteorder) with byteorder + being the value in effect at the end of data. + +*/ + +static PyObject * +utf_32_ex_decode(PyObject *self, + PyObject *args) +{ + const char *data; + Py_ssize_t size; + const char *errors = NULL; + int byteorder = 0; + PyObject *unicode, *tuple; + int final = 0; + Py_ssize_t consumed; + + if (!PyArg_ParseTuple(args, "t#|zii:utf_32_ex_decode", + &data, &size, &errors, &byteorder, &final)) + return NULL; + if (size < 0) { + PyErr_SetString(PyExc_ValueError, "negative argument"); + return 0; + } + consumed = size; /* This is overwritten unless final is true. */ + unicode = PyUnicode_DecodeUTF32Stateful(data, size, errors, &byteorder, + final ? NULL : &consumed); + if (unicode == NULL) + return NULL; + tuple = Py_BuildValue("Oni", unicode, consumed, byteorder); + Py_DECREF(unicode); + return tuple; +} + +static PyObject * unicode_escape_decode(PyObject *self, PyObject *args) { @@ -682,6 +803,83 @@ return v; } +/* This version provides access to the byteorder parameter of the + builtin UTF-32 codecs as optional third argument. It defaults to 0 + which means: use the native byte order and prepend the data with a + BOM mark. + +*/ + +static PyObject * +utf_32_encode(PyObject *self, + PyObject *args) +{ + PyObject *str, *v; + const char *errors = NULL; + int byteorder = 0; + + if (!PyArg_ParseTuple(args, "O|zi:utf_32_encode", + &str, &errors, &byteorder)) + return NULL; + + str = PyUnicode_FromObject(str); + if (str == NULL) + return NULL; + v = codec_tuple(PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(str), + PyUnicode_GET_SIZE(str), + errors, + byteorder), + PyUnicode_GET_SIZE(str)); + Py_DECREF(str); + return v; +} + +static PyObject * +utf_32_le_encode(PyObject *self, + PyObject *args) +{ + PyObject *str, *v; + const char *errors = NULL; + + if (!PyArg_ParseTuple(args, "O|z:utf_32_le_encode", + &str, &errors)) + return NULL; + + str = PyUnicode_FromObject(str); + if (str == NULL) + return NULL; + v = codec_tuple(PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(str), + PyUnicode_GET_SIZE(str), + errors, + -1), + PyUnicode_GET_SIZE(str)); + Py_DECREF(str); + return v; +} + +static PyObject * +utf_32_be_encode(PyObject *self, + PyObject *args) +{ + PyObject *str, *v; + const char *errors = NULL; + + if (!PyArg_ParseTuple(args, "O|z:utf_32_be_encode", + &str, &errors)) + return NULL; + + str = PyUnicode_FromObject(str); + if (str == NULL) + return NULL; + v = codec_tuple(PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(str), + PyUnicode_GET_SIZE(str), + errors, + +1), + PyUnicode_GET_SIZE(str)); + Py_DECREF(str); + return v; +} + static PyObject * unicode_escape_encode(PyObject *self, PyObject *args) @@ -900,6 +1098,13 @@ {"utf_16_le_decode", utf_16_le_decode, METH_VARARGS}, {"utf_16_be_decode", utf_16_be_decode, METH_VARARGS}, {"utf_16_ex_decode", utf_16_ex_decode, METH_VARARGS}, + {"utf_32_encode", utf_32_encode, METH_VARARGS}, + {"utf_32_le_encode", utf_32_le_encode, METH_VARARGS}, + {"utf_32_be_encode", utf_32_be_encode, METH_VARARGS}, + {"utf_32_decode", utf_32_decode, METH_VARARGS}, + {"utf_32_le_decode", utf_32_le_decode, METH_VARARGS}, + {"utf_32_be_decode", utf_32_be_decode, METH_VARARGS}, + {"utf_32_ex_decode", utf_32_ex_decode, METH_VARARGS}, {"unicode_escape_encode", unicode_escape_encode, METH_VARARGS}, {"unicode_escape_decode", unicode_escape_decode, METH_VARARGS}, {"unicode_internal_encode", unicode_internal_encode, METH_VARARGS}, Modified: python/branches/bcannon-objcap/Modules/_collectionsmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_collectionsmodule.c (original) +++ python/branches/bcannon-objcap/Modules/_collectionsmodule.c Thu Sep 6 21:35:45 2007 @@ -544,7 +544,7 @@ } deque->leftblock = NULL; deque->rightblock = NULL; - deque->ob_type->tp_free(deque); + Py_Type(deque)->tp_free(deque); } static int @@ -579,7 +579,7 @@ static PyObject * deque_copy(PyObject *deque) { - return PyObject_CallFunctionObjArgs((PyObject *)(deque->ob_type), + return PyObject_CallFunctionObjArgs((PyObject *)(Py_Type(deque)), deque, NULL); } @@ -601,7 +601,7 @@ Py_DECREF(dict); return NULL; } - result = Py_BuildValue("O()ON", deque->ob_type, dict, it); + result = Py_BuildValue("O()ON", Py_Type(deque), dict, it); Py_DECREF(dict); return result; } @@ -825,8 +825,7 @@ Build an ordered collection accessible from endpoints only."); static PyTypeObject deque_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "collections.deque", /* tp_name */ sizeof(dequeobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -903,7 +902,7 @@ dequeiter_dealloc(dequeiterobject *dio) { Py_XDECREF(dio->deque); - dio->ob_type->tp_free(dio); + Py_Type(dio)->tp_free(dio); } static PyObject * @@ -948,8 +947,7 @@ }; PyTypeObject dequeiter_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "deque_iterator", /* tp_name */ sizeof(dequeiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1031,8 +1029,7 @@ } PyTypeObject dequereviter_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "deque_reverse_iterator", /* tp_name */ sizeof(dequeiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1113,7 +1110,7 @@ whose class constructor has the same signature. Subclasses that define a different constructor signature must override copy(). */ - return PyObject_CallFunctionObjArgs((PyObject *)dd->dict.ob_type, + return PyObject_CallFunctionObjArgs(Py_Type(dd), dd->default_factory, dd, NULL); } @@ -1156,7 +1153,7 @@ Py_DECREF(args); return NULL; } - result = PyTuple_Pack(5, dd->dict.ob_type, args, + result = PyTuple_Pack(5, Py_Type(dd), args, Py_None, Py_None, items); Py_DECREF(items); Py_DECREF(args); @@ -1288,8 +1285,7 @@ #define DEFERRED_ADDRESS(ADDR) 0 static PyTypeObject defdict_type = { - PyObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type)) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0) "collections.defaultdict", /* tp_name */ sizeof(defdictobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_csv.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_csv.c (original) +++ python/branches/bcannon-objcap/Modules/_csv.c Thu Sep 6 21:35:45 2007 @@ -125,7 +125,7 @@ staticforward PyTypeObject Reader_Type; -#define ReaderObject_Check(v) ((v)->ob_type == &Reader_Type) +#define ReaderObject_Check(v) (Py_Type(v) == &Reader_Type) typedef struct { PyObject_HEAD @@ -310,7 +310,7 @@ Dialect_dealloc(DialectObj *self) { Py_XDECREF(self->lineterminator); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static char *dialect_kws[] = { @@ -460,8 +460,7 @@ "The Dialect type records CSV parsing and generation options.\n"); static PyTypeObject Dialect_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_csv.Dialect", /* tp_name */ sizeof(DialectObj), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -869,8 +868,7 @@ static PyTypeObject Reader_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_csv.reader", /*tp_name*/ sizeof(ReaderObj), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -1280,8 +1278,7 @@ ); static PyTypeObject Writer_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_csv.writer", /*tp_name*/ sizeof(WriterObj), /*tp_basicsize*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/Modules/_ctypes/_ctypes.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_ctypes/_ctypes.c (original) +++ python/branches/bcannon-objcap/Modules/_ctypes/_ctypes.c Thu Sep 6 21:35:45 2007 @@ -333,7 +333,7 @@ Py_INCREF(value); return value; } - ob_name = (ob) ? ob->ob_type->tp_name : "???"; + ob_name = (ob) ? Py_Type(ob)->tp_name : "???"; PyErr_Format(PyExc_TypeError, "expected %s instance instead of pointer to %s", ((PyTypeObject *)type)->tp_name, ob_name); @@ -349,7 +349,7 @@ PyErr_Format(PyExc_TypeError, "expected %s instance instead of %s", ((PyTypeObject *)type)->tp_name, - value->ob_type->tp_name); + Py_Type(value)->tp_name); return NULL; } @@ -435,8 +435,7 @@ PyTypeObject StructType_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.StructType", /* tp_name */ 0, /* tp_basicsize */ 0, /* tp_itemsize */ @@ -478,8 +477,7 @@ }; static PyTypeObject UnionType_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.UnionType", /* tp_name */ 0, /* tp_basicsize */ 0, /* tp_itemsize */ @@ -693,8 +691,7 @@ }; PyTypeObject PointerType_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.PointerType", /* tp_name */ 0, /* tp_basicsize */ 0, /* tp_itemsize */ @@ -751,7 +748,7 @@ char *ptr; Py_ssize_t size; if (PyBuffer_Check(value)) { - size = value->ob_type->tp_as_buffer->bf_getreadbuffer(value, 0, (void *)&ptr); + size = Py_Type(value)->tp_as_buffer->bf_getreadbuffer(value, 0, (void *)&ptr); if (size < 0) return -1; } else if (-1 == PyString_AsStringAndSize(value, &ptr, &size)) { @@ -800,7 +797,7 @@ } else if (!PyString_Check(value)) { PyErr_Format(PyExc_TypeError, "string expected instead of %s instance", - value->ob_type->tp_name); + Py_Type(value)->tp_name); return -1; } else Py_INCREF(value); @@ -855,7 +852,7 @@ } else if (!PyUnicode_Check(value)) { PyErr_Format(PyExc_TypeError, "unicode string expected instead of %s instance", - value->ob_type->tp_name); + Py_Type(value)->tp_name); return -1; } else Py_INCREF(value); @@ -1051,8 +1048,7 @@ } PyTypeObject ArrayType_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.ArrayType", /* tp_name */ 0, /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1684,8 +1680,7 @@ }; PyTypeObject SimpleType_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.SimpleType", /* tp_name */ 0, /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1899,8 +1894,7 @@ } PyTypeObject CFuncPtrType_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.CFuncPtrType", /* tp_name */ 0, /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2076,7 +2070,7 @@ CData_dealloc(PyObject *self) { CData_clear((CDataObject *)self); - self->ob_type->tp_free(self); + Py_Type(self)->tp_free(self); } static PyMemberDef CData_members[] = { @@ -2143,8 +2137,7 @@ }; PyTypeObject CData_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes._CData", sizeof(CDataObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2350,7 +2343,7 @@ PyErr_Format(PyExc_TypeError, "expected %s instance, got %s", ((PyTypeObject *)type)->tp_name, - value->ob_type->tp_name); + Py_Type(value)->tp_name); return NULL; } } @@ -2381,7 +2374,7 @@ if (p1->proto != p2->proto) { PyErr_Format(PyExc_TypeError, "incompatible types, %s instance instead of %s instance", - value->ob_type->tp_name, + Py_Type(value)->tp_name, ((PyTypeObject *)type)->tp_name); return NULL; } @@ -2400,7 +2393,7 @@ } PyErr_Format(PyExc_TypeError, "incompatible types, %s instance instead of %s instance", - value->ob_type->tp_name, + Py_Type(value)->tp_name, ((PyTypeObject *)type)->tp_name); return NULL; } @@ -2661,7 +2654,7 @@ Py_SAFE_DOWNCAST(index, Py_ssize_t, int), PyType_Check(arg) ? ((PyTypeObject *)arg)->tp_name : - arg->ob_type->tp_name); + Py_Type(arg)->tp_name); return 0; } @@ -3447,7 +3440,7 @@ CFuncPtr_dealloc(CFuncPtrObject *self) { CFuncPtr_clear(self); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static PyObject * @@ -3457,17 +3450,16 @@ if (self->index) return PyString_FromFormat("", self->index - 0x1000, - self->ob_type->tp_name, + Py_Type(self)->tp_name, self); #endif return PyString_FromFormat("<%s object at %p>", - self->ob_type->tp_name, + Py_Type(self)->tp_name, self); } PyTypeObject CFuncPtr_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.CFuncPtr", sizeof(CFuncPtrObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -3595,8 +3587,7 @@ } static PyTypeObject Struct_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.Structure", sizeof(CDataObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -3638,8 +3629,7 @@ }; static PyTypeObject Union_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.Union", sizeof(CDataObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -3778,6 +3768,108 @@ return (PyObject *)np; } +static PyObject * +Array_subscript(PyObject *_self, PyObject *item) +{ + CDataObject *self = (CDataObject *)_self; + + if (PyIndex_Check(item)) { + Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); + + if (i == -1 && PyErr_Occurred()) + return NULL; + if (i < 0) + i += self->b_length; + return Array_item(_self, i); + } + else if PySlice_Check(item) { + StgDictObject *stgdict, *itemdict; + PyObject *proto; + PyObject *np; + Py_ssize_t start, stop, step, slicelen, cur, i; + + if (PySlice_GetIndicesEx((PySliceObject *)item, + self->b_length, &start, &stop, + &step, &slicelen) < 0) { + return NULL; + } + + stgdict = PyObject_stgdict((PyObject *)self); + assert(stgdict); /* Cannot be NULL for array object instances */ + proto = stgdict->proto; + itemdict = PyType_stgdict(proto); + assert(itemdict); /* proto is the item type of the array, a + ctypes type, so this cannot be NULL */ + + if (itemdict->getfunc == getentry("c")->getfunc) { + char *ptr = (char *)self->b_ptr; + char *dest; + + if (slicelen <= 0) + return PyString_FromString(""); + if (step == 1) { + return PyString_FromStringAndSize(ptr + start, + slicelen); + } + dest = (char *)PyMem_Malloc(slicelen); + + if (dest == NULL) + return PyErr_NoMemory(); + + for (cur = start, i = 0; i < slicelen; + cur += step, i++) { + dest[i] = ptr[cur]; + } + + np = PyString_FromStringAndSize(dest, slicelen); + PyMem_Free(dest); + return np; + } +#ifdef CTYPES_UNICODE + if (itemdict->getfunc == getentry("u")->getfunc) { + wchar_t *ptr = (wchar_t *)self->b_ptr; + wchar_t *dest; + + if (slicelen <= 0) + return PyUnicode_FromUnicode(NULL, 0); + if (step == 1) { + return PyUnicode_FromWideChar(ptr + start, + slicelen); + } + + dest = (wchar_t *)PyMem_Malloc( + slicelen * sizeof(wchar_t)); + + for (cur = start, i = 0; i < slicelen; + cur += step, i++) { + dest[i] = ptr[cur]; + } + + np = PyUnicode_FromWideChar(dest, slicelen); + PyMem_Free(dest); + return np; + } +#endif + + np = PyList_New(slicelen); + if (np == NULL) + return NULL; + + for (cur = start, i = 0; i < slicelen; + cur += step, i++) { + PyObject *v = Array_item(_self, cur); + PyList_SET_ITEM(np, i, v); + } + return np; + } + else { + PyErr_SetString(PyExc_TypeError, + "indices must be integers"); + return NULL; + } + +} + static int Array_ass_item(PyObject *_self, Py_ssize_t index, PyObject *value) { @@ -3849,6 +3941,63 @@ return 0; } +static int +Array_ass_subscript(PyObject *_self, PyObject *item, PyObject *value) +{ + CDataObject *self = (CDataObject *)_self; + + if (value == NULL) { + PyErr_SetString(PyExc_TypeError, + "Array does not support item deletion"); + return -1; + } + + if (PyIndex_Check(item)) { + Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); + + if (i == -1 && PyErr_Occurred()) + return -1; + if (i < 0) + i += self->b_length; + return Array_ass_item(_self, i, value); + } + else if (PySlice_Check(item)) { + Py_ssize_t start, stop, step, slicelen, otherlen, i, cur; + + if (PySlice_GetIndicesEx((PySliceObject *)item, + self->b_length, &start, &stop, + &step, &slicelen) < 0) { + return -1; + } + if ((step < 0 && start < stop) || + (step > 0 && start > stop)) + stop = start; + + otherlen = PySequence_Length(value); + if (otherlen != slicelen) { + PyErr_SetString(PyExc_ValueError, + "Can only assign sequence of same size"); + return -1; + } + for (cur = start, i = 0; i < otherlen; cur += step, i++) { + PyObject *item = PySequence_GetItem(value, i); + int result; + if (item == NULL) + return -1; + result = Array_ass_item(_self, cur, item); + Py_DECREF(item); + if (result == -1) + return -1; + } + return 0; + } + else { + PyErr_SetString(PyExc_TypeError, + "indices must be integer"); + return -1; + } +} + static Py_ssize_t Array_length(PyObject *_self) { @@ -3870,9 +4019,14 @@ 0, /* sq_inplace_repeat; */ }; +static PyMappingMethods Array_as_mapping = { + Array_length, + Array_subscript, + Array_ass_subscript, +}; + PyTypeObject Array_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.Array", sizeof(CDataObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -3884,7 +4038,7 @@ 0, /* tp_repr */ 0, /* tp_as_number */ &Array_as_sequence, /* tp_as_sequence */ - 0, /* tp_as_mapping */ + &Array_as_mapping, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ @@ -4025,7 +4179,7 @@ static PyObject * Simple_from_outparm(PyObject *self, PyObject *args) { - if (IsSimpleSubType((PyObject *)self->ob_type)) { + if (IsSimpleSubType((PyObject *)Py_Type(self))) { Py_INCREF(self); return self; } @@ -4090,9 +4244,9 @@ PyObject *val, *name, *args, *result; static PyObject *format; - if (self->ob_type->tp_base != &Simple_Type) { + if (Py_Type(self)->tp_base != &Simple_Type) { return PyString_FromFormat("<%s object at %p>", - self->ob_type->tp_name, self); + Py_Type(self)->tp_name, self); } if (format == NULL) { @@ -4105,7 +4259,7 @@ if (val == NULL) return NULL; - name = PyString_FromString(self->ob_type->tp_name); + name = PyString_FromString(Py_Type(self)->tp_name); if (name == NULL) { Py_DECREF(val); return NULL; @@ -4123,8 +4277,7 @@ } static PyTypeObject Simple_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes._SimpleCData", sizeof(CDataObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -4277,7 +4430,7 @@ PyErr_Format(PyExc_TypeError, "expected %s instead of %s", ((PyTypeObject *)(stgdict->proto))->tp_name, - value->ob_type->tp_name); + Py_Type(value)->tp_name); return -1; } @@ -4371,6 +4524,139 @@ return (PyObject *)np; } +static PyObject * +Pointer_subscript(PyObject *_self, PyObject *item) +{ + CDataObject *self = (CDataObject *)_self; + if (PyIndex_Check(item)) { + Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); + if (i == -1 && PyErr_Occurred()) + return NULL; + return Pointer_item(_self, i); + } + else if (PySlice_Check(item)) { + PySliceObject *slice = (PySliceObject *)item; + Py_ssize_t start, stop, step; + PyObject *np; + StgDictObject *stgdict, *itemdict; + PyObject *proto; + Py_ssize_t i, len, cur; + + /* Since pointers have no length, and we want to apply + different semantics to negative indices than normal + slicing, we have to dissect the slice object ourselves.*/ + if (slice->step == Py_None) { + step = 1; + } + else { + step = PyNumber_AsSsize_t(slice->step, + PyExc_ValueError); + if (step == -1 && PyErr_Occurred()) + return NULL; + if (step == 0) { + PyErr_SetString(PyExc_ValueError, + "slice step cannot be zero"); + return NULL; + } + } + if (slice->start == Py_None) { + if (step < 0) { + PyErr_SetString(PyExc_ValueError, + "slice start is required " + "for step < 0"); + return NULL; + } + start = 0; + } + else { + start = PyNumber_AsSsize_t(slice->start, + PyExc_ValueError); + if (start == -1 && PyErr_Occurred()) + return NULL; + } + if (slice->stop == Py_None) { + PyErr_SetString(PyExc_ValueError, + "slice stop is required"); + return NULL; + } + stop = PyNumber_AsSsize_t(slice->stop, + PyExc_ValueError); + if (stop == -1 && PyErr_Occurred()) + return NULL; + if ((step > 0 && start > stop) || + (step < 0 && start < stop)) + len = 0; + else if (step > 0) + len = (stop - start - 1) / step + 1; + else + len = (stop - start + 1) / step + 1; + + stgdict = PyObject_stgdict((PyObject *)self); + assert(stgdict); /* Cannot be NULL for pointer instances */ + proto = stgdict->proto; + assert(proto); + itemdict = PyType_stgdict(proto); + assert(itemdict); + if (itemdict->getfunc == getentry("c")->getfunc) { + char *ptr = *(char **)self->b_ptr; + char *dest; + + if (len <= 0) + return PyString_FromString(""); + if (step == 1) { + return PyString_FromStringAndSize(ptr + start, + len); + } + dest = (char *)PyMem_Malloc(len); + if (dest == NULL) + return PyErr_NoMemory(); + for (cur = start, i = 0; i < len; cur += step, i++) { + dest[i] = ptr[cur]; + } + np = PyString_FromStringAndSize(dest, len); + PyMem_Free(dest); + return np; + } +#ifdef CTYPES_UNICODE + if (itemdict->getfunc == getentry("u")->getfunc) { + wchar_t *ptr = *(wchar_t **)self->b_ptr; + wchar_t *dest; + + if (len <= 0) + return PyUnicode_FromUnicode(NULL, 0); + if (step == 1) { + return PyUnicode_FromWideChar(ptr + start, + len); + } + dest = (wchar_t *)PyMem_Malloc(len * sizeof(wchar_t)); + if (dest == NULL) + return PyErr_NoMemory(); + for (cur = start, i = 0; i < len; cur += step, i++) { + dest[i] = ptr[cur]; + } + np = PyUnicode_FromWideChar(dest, len); + PyMem_Free(dest); + return np; + } +#endif + + np = PyList_New(len); + if (np == NULL) + return NULL; + + for (cur = start, i = 0; i < len; cur += step, i++) { + PyObject *v = Pointer_item(_self, cur); + PyList_SET_ITEM(np, i, v); + } + return np; + } + else { + PyErr_SetString(PyExc_TypeError, + "Pointer indices must be integer"); + return NULL; + } +} + static PySequenceMethods Pointer_as_sequence = { 0, /* inquiry sq_length; */ 0, /* binaryfunc sq_concat; */ @@ -4385,6 +4671,11 @@ 0, /* intargfunc sq_inplace_repeat; */ }; +static PyMappingMethods Pointer_as_mapping = { + 0, + Pointer_subscript, +}; + static int Pointer_nonzero(CDataObject *self) { @@ -4406,8 +4697,7 @@ }; PyTypeObject Pointer_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes._Pointer", sizeof(CDataObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -4419,7 +4709,7 @@ 0, /* tp_repr */ &Pointer_as_number, /* tp_as_number */ &Pointer_as_sequence, /* tp_as_sequence */ - 0, /* tp_as_mapping */ + &Pointer_as_mapping, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ @@ -4520,11 +4810,6 @@ PyObject *s; int status; - ComError = PyErr_NewException("_ctypes.COMError", - NULL, - dict); - if (ComError == NULL) - return -1; while (methods->ml_name) { /* get a wrapper for the built-in function */ PyObject *func = PyCFunction_New(methods, NULL); @@ -4539,13 +4824,24 @@ Py_DECREF(meth); ++methods; } - Py_INCREF(ComError); + s = PyString_FromString(comerror_doc); if (s == NULL) return -1; status = PyDict_SetItemString(dict, "__doc__", s); Py_DECREF(s); - return status; + if (status == -1) { + Py_DECREF(dict); + return -1; + } + + ComError = PyErr_NewException("_ctypes.COMError", + NULL, + dict); + if (ComError == NULL) + return -1; + + return 0; } #endif @@ -4579,7 +4875,7 @@ "cast() argument 2 must be a pointer type, not %s", PyType_Check(arg) ? ((PyTypeObject *)arg)->tp_name - : arg->ob_type->tp_name); + : Py_Type(arg)->tp_name); return 0; } @@ -4706,37 +5002,37 @@ if (PyType_Ready(&CData_Type) < 0) return; - Struct_Type.ob_type = &StructType_Type; + Py_Type(&Struct_Type) = &StructType_Type; Struct_Type.tp_base = &CData_Type; if (PyType_Ready(&Struct_Type) < 0) return; PyModule_AddObject(m, "Structure", (PyObject *)&Struct_Type); - Union_Type.ob_type = &UnionType_Type; + Py_Type(&Union_Type) = &UnionType_Type; Union_Type.tp_base = &CData_Type; if (PyType_Ready(&Union_Type) < 0) return; PyModule_AddObject(m, "Union", (PyObject *)&Union_Type); - Pointer_Type.ob_type = &PointerType_Type; + Py_Type(&Pointer_Type) = &PointerType_Type; Pointer_Type.tp_base = &CData_Type; if (PyType_Ready(&Pointer_Type) < 0) return; PyModule_AddObject(m, "_Pointer", (PyObject *)&Pointer_Type); - Array_Type.ob_type = &ArrayType_Type; + Py_Type(&Array_Type) = &ArrayType_Type; Array_Type.tp_base = &CData_Type; if (PyType_Ready(&Array_Type) < 0) return; PyModule_AddObject(m, "Array", (PyObject *)&Array_Type); - Simple_Type.ob_type = &SimpleType_Type; + Py_Type(&Simple_Type) = &SimpleType_Type; Simple_Type.tp_base = &CData_Type; if (PyType_Ready(&Simple_Type) < 0) return; PyModule_AddObject(m, "_SimpleCData", (PyObject *)&Simple_Type); - CFuncPtr_Type.ob_type = &CFuncPtrType_Type; + Py_Type(&CFuncPtr_Type) = &CFuncPtrType_Type; CFuncPtr_Type.tp_base = &CData_Type; if (PyType_Ready(&CFuncPtr_Type) < 0) return; Modified: python/branches/bcannon-objcap/Modules/_ctypes/callbacks.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_ctypes/callbacks.c (original) +++ python/branches/bcannon-objcap/Modules/_ctypes/callbacks.c Thu Sep 6 21:35:45 2007 @@ -268,7 +268,7 @@ ffi_abi cc; nArgs = PySequence_Size(converters); - p = (ffi_info *)PyMem_Malloc(sizeof(ffi_info) + sizeof(ffi_type) * (nArgs + 1)); + p = (ffi_info *)PyMem_Malloc(sizeof(ffi_info) + sizeof(ffi_type) * (nArgs)); if (p == NULL) { PyErr_NoMemory(); return NULL; Modified: python/branches/bcannon-objcap/Modules/_ctypes/callproc.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_ctypes/callproc.c (original) +++ python/branches/bcannon-objcap/Modules/_ctypes/callproc.c Thu Sep 6 21:35:45 2007 @@ -381,8 +381,7 @@ }; PyTypeObject PyCArg_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "CArgObject", sizeof(PyCArgObject), 0, @@ -1180,7 +1179,7 @@ if (!CDataObject_Check(pcom) || (pcom->b_size != sizeof(void *))) { PyErr_Format(PyExc_TypeError, "COM Pointer expected instead of %s instance", - pcom->ob_type->tp_name); + Py_Type(pcom)->tp_name); return NULL; } @@ -1420,7 +1419,7 @@ if (!CDataObject_Check(obj)) { PyErr_Format(PyExc_TypeError, "byref() argument must be a ctypes instance, not '%s'", - obj->ob_type->tp_name); + Py_Type(obj)->tp_name); return NULL; } Modified: python/branches/bcannon-objcap/Modules/_ctypes/cfield.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_ctypes/cfield.c (original) +++ python/branches/bcannon-objcap/Modules/_ctypes/cfield.c Thu Sep 6 21:35:45 2007 @@ -286,8 +286,7 @@ } PyTypeObject CField_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_ctypes.CField", /* tp_name */ sizeof(CFieldObject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_ctypes/ctypes.h ============================================================================== --- python/branches/bcannon-objcap/Modules/_ctypes/ctypes.h (original) +++ python/branches/bcannon-objcap/Modules/_ctypes/ctypes.h Thu Sep 6 21:35:45 2007 @@ -75,7 +75,7 @@ PyObject *callable; SETFUNC setfunc; ffi_type *restype; - ffi_type *atypes[0]; + ffi_type *atypes[1]; } ffi_info; typedef struct { Modified: python/branches/bcannon-objcap/Modules/_ctypes/libffi/configure ============================================================================== --- python/branches/bcannon-objcap/Modules/_ctypes/libffi/configure (original) +++ python/branches/bcannon-objcap/Modules/_ctypes/libffi/configure Thu Sep 6 21:35:45 2007 @@ -3533,7 +3533,7 @@ sh-*-linux* | sh[34]*-*-linux*) TARGET=SH; TARGETDIR=sh;; sh-*-rtems*) TARGET=SH; TARGETDIR=sh;; sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; -hppa-*-linux* | parisc-*-linux*) TARGET=PA; TARGETDIR=pa;; +hppa*-*-linux* | parisc*-*-linux*) TARGET=PA; TARGETDIR=pa;; esac if test $TARGETDIR = unknown; then Modified: python/branches/bcannon-objcap/Modules/_ctypes/libffi/configure.ac ============================================================================== --- python/branches/bcannon-objcap/Modules/_ctypes/libffi/configure.ac (original) +++ python/branches/bcannon-objcap/Modules/_ctypes/libffi/configure.ac Thu Sep 6 21:35:45 2007 @@ -71,7 +71,7 @@ sh-*-linux* | sh[[34]]*-*-linux*) TARGET=SH; TARGETDIR=sh;; sh-*-rtems*) TARGET=SH; TARGETDIR=sh;; sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; -hppa-*-linux* | parisc-*-linux*) TARGET=PA; TARGETDIR=pa;; +hppa*-*-linux* | parisc*-*-linux*) TARGET=PA; TARGETDIR=pa;; esac if test $TARGETDIR = unknown; then Modified: python/branches/bcannon-objcap/Modules/_ctypes/stgdict.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_ctypes/stgdict.c (original) +++ python/branches/bcannon-objcap/Modules/_ctypes/stgdict.c Thu Sep 6 21:35:45 2007 @@ -83,8 +83,7 @@ } PyTypeObject StgDict_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "StgDict", sizeof(StgDictObject), 0, @@ -192,7 +191,7 @@ Py_DECREF(fieldlist); return -1; } - if (fdescr->ob_type != &CField_Type) { + if (Py_Type(fdescr) != &CField_Type) { PyErr_SetString(PyExc_TypeError, "unexpected type"); Py_DECREF(fdescr); Py_DECREF(fieldlist); @@ -215,7 +214,7 @@ Py_DECREF(fieldlist); return -1; } - assert(new_descr->ob_type == &CField_Type); + assert(Py_Type(new_descr) == &CField_Type); new_descr->size = fdescr->size; new_descr->offset = fdescr->offset + offset; new_descr->index = fdescr->index + index; @@ -263,7 +262,7 @@ Py_DECREF(anon_names); return -1; } - assert(descr->ob_type == &CField_Type); + assert(Py_Type(descr) == &CField_Type); descr->anonymous = 1; /* descr is in the field descriptor. */ @@ -469,13 +468,11 @@ if (!prop) { Py_DECREF(pair); - Py_DECREF((PyObject *)stgdict); return -1; } if (-1 == PyDict_SetItem(realdict, name, prop)) { Py_DECREF(prop); Py_DECREF(pair); - Py_DECREF((PyObject *)stgdict); return -1; } Py_DECREF(pair); Modified: python/branches/bcannon-objcap/Modules/_curses_panel.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_curses_panel.c (original) +++ python/branches/bcannon-objcap/Modules/_curses_panel.c Thu Sep 6 21:35:45 2007 @@ -56,7 +56,7 @@ PyTypeObject PyCursesPanel_Type; -#define PyCursesPanel_Check(v) ((v)->ob_type == &PyCursesPanel_Type) +#define PyCursesPanel_Check(v) (Py_Type(v) == &PyCursesPanel_Type) /* Some helper functions. The problem is that there's always a window associated with a panel. To ensure that Python's GC doesn't pull @@ -338,8 +338,7 @@ /* -------------------------------------------------------*/ PyTypeObject PyCursesPanel_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_curses_panel.curses panel", /*tp_name*/ sizeof(PyCursesPanelObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -458,7 +457,7 @@ PyObject *m, *d, *v; /* Initialize object type */ - PyCursesPanel_Type.ob_type = &PyType_Type; + Py_Type(&PyCursesPanel_Type) = &PyType_Type; import_curses(); Modified: python/branches/bcannon-objcap/Modules/_cursesmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_cursesmodule.c (original) +++ python/branches/bcannon-objcap/Modules/_cursesmodule.c Thu Sep 6 21:35:45 2007 @@ -1566,8 +1566,7 @@ /* -------------------------------------------------------*/ PyTypeObject PyCursesWindow_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_curses.curses window", /*tp_name*/ sizeof(PyCursesWindowObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -2657,7 +2656,7 @@ static void *PyCurses_API[PyCurses_API_pointers]; /* Initialize object type */ - PyCursesWindow_Type.ob_type = &PyType_Type; + Py_Type(&PyCursesWindow_Type) = &PyType_Type; /* Initialize the C API pointer array */ PyCurses_API[0] = (void *)&PyCursesWindow_Type; Modified: python/branches/bcannon-objcap/Modules/_elementtree.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_elementtree.c (original) +++ python/branches/bcannon-objcap/Modules/_elementtree.c Thu Sep 6 21:35:45 2007 @@ -269,7 +269,7 @@ staticforward PyTypeObject Element_Type; -#define Element_CheckExact(op) ((op)->ob_type == &Element_Type) +#define Element_CheckExact(op) (Py_Type(op) == &Element_Type) /* -------------------------------------------------------------------- */ /* element constructor and destructor */ @@ -1207,7 +1207,7 @@ /* FIXME: support arbitrary sequences? */ PyErr_Format( PyExc_TypeError, - "expected list, not \"%.200s\"", item->ob_type->tp_name + "expected list, not \"%.200s\"", Py_Type(item)->tp_name ); return -1; } @@ -1440,7 +1440,7 @@ staticforward PyTypeObject TreeBuilder_Type; -#define TreeBuilder_CheckExact(op) ((op)->ob_type == &TreeBuilder_Type) +#define TreeBuilder_CheckExact(op) (Py_Type(op) == &TreeBuilder_Type) /* -------------------------------------------------------------------- */ /* constructor and destructor */ @@ -1607,7 +1607,7 @@ Py_INCREF(data); self->data = data; } else { /* more than one item; use a list to collect items */ - if (PyString_CheckExact(self->data) && self->data->ob_refcnt == 1 && + if (PyString_CheckExact(self->data) && Py_Refcnt(self->data) == 1 && PyString_CheckExact(data) && PyString_GET_SIZE(data) == 1) { /* expat often generates single character data sections; handle the most common case by resizing the existing string... */ @@ -2623,9 +2623,9 @@ #endif /* Patch object type */ - Element_Type.ob_type = TreeBuilder_Type.ob_type = &PyType_Type; + Py_Type(&Element_Type) = Py_Type(&TreeBuilder_Type) = &PyType_Type; #if defined(USE_EXPAT) - XMLParser_Type.ob_type = &PyType_Type; + Py_Type(&XMLParser_Type) = &PyType_Type; #endif m = Py_InitModule("_elementtree", _functions); Modified: python/branches/bcannon-objcap/Modules/_functoolsmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_functoolsmodule.c (original) +++ python/branches/bcannon-objcap/Modules/_functoolsmodule.c Thu Sep 6 21:35:45 2007 @@ -81,7 +81,7 @@ Py_XDECREF(pto->args); Py_XDECREF(pto->kw); Py_XDECREF(pto->dict); - pto->ob_type->tp_free(pto); + Py_Type(pto)->tp_free(pto); } static PyObject * @@ -197,8 +197,7 @@ }; static PyTypeObject partial_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "functools.partial", /* tp_name */ sizeof(partialobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_hashopenssl.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_hashopenssl.c (original) +++ python/branches/bcannon-objcap/Modules/_hashopenssl.c Thu Sep 6 21:35:45 2007 @@ -281,8 +281,7 @@ digest_size -- number of bytes in this hashes output\n"); static PyTypeObject EVPtype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_hashlib.HASH", /*tp_name*/ sizeof(EVPobject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -464,7 +463,7 @@ * but having some be unsupported. Only init appropriate * constants. */ - EVPtype.ob_type = &PyType_Type; + Py_Type(&EVPtype) = &PyType_Type; if (PyType_Ready(&EVPtype) < 0) return; Modified: python/branches/bcannon-objcap/Modules/_hotshot.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_hotshot.c (original) +++ python/branches/bcannon-objcap/Modules/_hotshot.c Thu Sep 6 21:35:45 2007 @@ -1220,8 +1220,7 @@ "linetimings: True if line events collect timing information."); static PyTypeObject ProfilerType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_hotshot.ProfilerType", /* tp_name */ (int) sizeof(ProfilerObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1305,8 +1304,7 @@ }; static PyTypeObject LogReaderType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_hotshot.LogReaderType", /* tp_name */ (int) sizeof(LogReaderObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1613,8 +1611,8 @@ { PyObject *module; - LogReaderType.ob_type = &PyType_Type; - ProfilerType.ob_type = &PyType_Type; + Py_Type(&LogReaderType) = &PyType_Type; + Py_Type(&ProfilerType) = &PyType_Type; module = Py_InitModule("_hotshot", functions); if (module != NULL) { char *s = get_version_string(); Modified: python/branches/bcannon-objcap/Modules/_lsprof.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_lsprof.c (original) +++ python/branches/bcannon-objcap/Modules/_lsprof.c Thu Sep 6 21:35:45 2007 @@ -120,7 +120,7 @@ staticforward PyTypeObject PyProfiler_Type; #define PyProfiler_Check(op) PyObject_TypeCheck(op, &PyProfiler_Type) -#define PyProfiler_CheckExact(op) ((op)->ob_type == &PyProfiler_Type) +#define PyProfiler_CheckExact(op) (Py_Type(op) == &PyProfiler_Type) /*** External Timers ***/ @@ -207,7 +207,7 @@ PyObject *self = fn->m_self; PyObject *name = PyString_FromString(fn->m_ml->ml_name); if (name != NULL) { - PyObject *mo = _PyType_Lookup(self->ob_type, name); + PyObject *mo = _PyType_Lookup(Py_Type(self), name); Py_XINCREF(mo); Py_DECREF(name); if (mo != NULL) { @@ -744,7 +744,7 @@ flush_unmatched(op); clearEntries(op); Py_XDECREF(op->externalTimer); - op->ob_type->tp_free(op); + Py_Type(op)->tp_free(op); } static int Modified: python/branches/bcannon-objcap/Modules/_randommodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_randommodule.c (original) +++ python/branches/bcannon-objcap/Modules/_randommodule.c Thu Sep 6 21:35:45 2007 @@ -84,7 +84,7 @@ static PyTypeObject Random_Type; -#define RandomObject_Check(v) ((v)->ob_type == &Random_Type) +#define RandomObject_Check(v) (Py_Type(v) == &Random_Type) /* Random methods */ @@ -404,7 +404,7 @@ if (!PyInt_Check(n) && !PyLong_Check(n)) { PyErr_Format(PyExc_TypeError, "jumpahead requires an " "integer, not '%s'", - n->ob_type->tp_name); + Py_Type(n)->tp_name); return NULL; } @@ -518,8 +518,7 @@ "Random() -> create a random number generator with its own internal state."); static PyTypeObject Random_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_random.Random", /*tp_name*/ sizeof(RandomObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/Modules/_sqlite/cache.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_sqlite/cache.c (original) +++ python/branches/bcannon-objcap/Modules/_sqlite/cache.c Thu Sep 6 21:35:45 2007 @@ -51,7 +51,7 @@ Py_DECREF(self->key); Py_DECREF(self->data); - self->ob_type->tp_free((PyObject*)self); + Py_Type(self)->tp_free((PyObject*)self); } int pysqlite_cache_init(pysqlite_Cache* self, PyObject* args, PyObject* kwargs) @@ -109,7 +109,7 @@ } Py_DECREF(self->mapping); - self->ob_type->tp_free((PyObject*)self); + Py_Type(self)->tp_free((PyObject*)self); } PyObject* pysqlite_cache_get(pysqlite_Cache* self, PyObject* args) @@ -274,8 +274,7 @@ }; PyTypeObject pysqlite_NodeType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) MODULE_NAME "Node", /* tp_name */ sizeof(pysqlite_Node), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -317,8 +316,7 @@ }; PyTypeObject pysqlite_CacheType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) MODULE_NAME ".Cache", /* tp_name */ sizeof(pysqlite_Cache), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_sqlite/connection.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_sqlite/connection.c (original) +++ python/branches/bcannon-objcap/Modules/_sqlite/connection.c Thu Sep 6 21:35:45 2007 @@ -205,7 +205,7 @@ Py_XDECREF(self->collations); Py_XDECREF(self->statements); - self->ob_type->tp_free((PyObject*)self); + Py_Type(self)->tp_free((PyObject*)self); } PyObject* pysqlite_connection_cursor(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) @@ -1206,8 +1206,7 @@ }; PyTypeObject pysqlite_ConnectionType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) MODULE_NAME ".Connection", /* tp_name */ sizeof(pysqlite_Connection), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_sqlite/cursor.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_sqlite/cursor.c (original) +++ python/branches/bcannon-objcap/Modules/_sqlite/cursor.c Thu Sep 6 21:35:45 2007 @@ -134,7 +134,7 @@ Py_XDECREF(self->row_factory); Py_XDECREF(self->next_row); - self->ob_type->tp_free((PyObject*)self); + Py_Type(self)->tp_free((PyObject*)self); } PyObject* _pysqlite_get_converter(PyObject* key) @@ -1020,8 +1020,7 @@ PyDoc_STR("SQLite database cursor class."); PyTypeObject pysqlite_CursorType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) MODULE_NAME ".Cursor", /* tp_name */ sizeof(pysqlite_Cursor), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_sqlite/prepare_protocol.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_sqlite/prepare_protocol.c (original) +++ python/branches/bcannon-objcap/Modules/_sqlite/prepare_protocol.c Thu Sep 6 21:35:45 2007 @@ -30,12 +30,11 @@ void pysqlite_prepare_protocol_dealloc(pysqlite_PrepareProtocol* self) { - self->ob_type->tp_free((PyObject*)self); + Py_Type(self)->tp_free((PyObject*)self); } PyTypeObject pysqlite_PrepareProtocolType= { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) MODULE_NAME ".PrepareProtocol", /* tp_name */ sizeof(pysqlite_PrepareProtocol), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -79,6 +78,6 @@ extern int pysqlite_prepare_protocol_setup_types(void) { pysqlite_PrepareProtocolType.tp_new = PyType_GenericNew; - pysqlite_PrepareProtocolType.ob_type= &PyType_Type; + Py_Type(&pysqlite_PrepareProtocolType)= &PyType_Type; return PyType_Ready(&pysqlite_PrepareProtocolType); } Modified: python/branches/bcannon-objcap/Modules/_sqlite/row.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_sqlite/row.c (original) +++ python/branches/bcannon-objcap/Modules/_sqlite/row.c Thu Sep 6 21:35:45 2007 @@ -30,7 +30,7 @@ Py_XDECREF(self->data); Py_XDECREF(self->description); - self->ob_type->tp_free((PyObject*)self); + Py_Type(self)->tp_free((PyObject*)self); } int pysqlite_row_init(pysqlite_Row* self, PyObject* args, PyObject* kwargs) @@ -183,8 +183,7 @@ PyTypeObject pysqlite_RowType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) MODULE_NAME ".Row", /* tp_name */ sizeof(pysqlite_Row), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_sqlite/statement.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_sqlite/statement.c (original) +++ python/branches/bcannon-objcap/Modules/_sqlite/statement.c Thu Sep 6 21:35:45 2007 @@ -309,7 +309,7 @@ PyObject_ClearWeakRefs((PyObject*)self); } - self->ob_type->tp_free((PyObject*)self); + Py_Type(self)->tp_free((PyObject*)self); } /* @@ -383,8 +383,7 @@ } PyTypeObject pysqlite_StatementType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) MODULE_NAME ".Statement", /* tp_name */ sizeof(pysqlite_Statement), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_sre.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_sre.c (original) +++ python/branches/bcannon-objcap/Modules/_sre.c Thu Sep 6 21:35:45 2007 @@ -1689,7 +1689,7 @@ #endif /* get pointer to string buffer */ - buffer = string->ob_type->tp_as_buffer; + buffer = Py_Type(string)->tp_as_buffer; if (!buffer || !buffer->bf_getreadbuffer || !buffer->bf_getsegcount || buffer->bf_getsegcount(string, NULL) != 1) { PyErr_SetString(PyExc_TypeError, "expected string or buffer"); Modified: python/branches/bcannon-objcap/Modules/_ssl.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_ssl.c (original) +++ python/branches/bcannon-objcap/Modules/_ssl.c Thu Sep 6 21:35:45 2007 @@ -1,4 +1,4 @@ -/* SSL socket module +/* SSL socket module SSL support based on patches by Brian E Gallew and Laszlo Kovacs. @@ -8,25 +8,44 @@ */ #include "Python.h" + enum py_ssl_error { /* these mirror ssl.h */ - PY_SSL_ERROR_NONE, - PY_SSL_ERROR_SSL, - PY_SSL_ERROR_WANT_READ, - PY_SSL_ERROR_WANT_WRITE, - PY_SSL_ERROR_WANT_X509_LOOKUP, + PY_SSL_ERROR_NONE, + PY_SSL_ERROR_SSL, + PY_SSL_ERROR_WANT_READ, + PY_SSL_ERROR_WANT_WRITE, + PY_SSL_ERROR_WANT_X509_LOOKUP, PY_SSL_ERROR_SYSCALL, /* look at error stack/return value/errno */ - PY_SSL_ERROR_ZERO_RETURN, + PY_SSL_ERROR_ZERO_RETURN, PY_SSL_ERROR_WANT_CONNECT, - /* start of non ssl.h errorcodes */ + /* start of non ssl.h errorcodes */ PY_SSL_ERROR_EOF, /* special case of SSL_ERROR_SYSCALL */ PY_SSL_ERROR_INVALID_ERROR_CODE }; +enum py_ssl_server_or_client { + PY_SSL_CLIENT, + PY_SSL_SERVER +}; + +enum py_ssl_cert_requirements { + PY_SSL_CERT_NONE, + PY_SSL_CERT_OPTIONAL, + PY_SSL_CERT_REQUIRED +}; + +enum py_ssl_version { + PY_SSL_VERSION_SSL2, + PY_SSL_VERSION_SSL3, + PY_SSL_VERSION_SSL23, + PY_SSL_VERSION_TLS1, +}; + /* Include symbols from _socket module */ #include "socketmodule.h" -#if defined(HAVE_POLL_H) +#if defined(HAVE_POLL_H) #include #elif defined(HAVE_SYS_POLL_H) #include @@ -58,10 +77,10 @@ typedef struct { PyObject_HEAD PySocketSockObject *Socket; /* Socket on which we're layered */ - SSL_CTX* ctx; - SSL* ssl; - X509* server_cert; - char server[X509_NAME_MAXLEN]; + SSL_CTX* ctx; + SSL* ssl; + X509* peer_cert; + char server[X509_NAME_MAXLEN]; char issuer[X509_NAME_MAXLEN]; } PySSLObject; @@ -69,10 +88,12 @@ static PyTypeObject PySSL_Type; static PyObject *PySSL_SSLwrite(PySSLObject *self, PyObject *args); static PyObject *PySSL_SSLread(PySSLObject *self, PyObject *args); -static int check_socket_and_wait_for_timeout(PySocketSockObject *s, +static int check_socket_and_wait_for_timeout(PySocketSockObject *s, int writing); +static PyObject *PySSL_peercert(PySSLObject *self); -#define PySSLObject_Check(v) ((v)->ob_type == &PySSL_Type) + +#define PySSLObject_Check(v) (Py_Type(v) == &PySSL_Type) typedef enum { SOCKET_IS_NONBLOCKING, @@ -83,141 +104,181 @@ SOCKET_OPERATION_OK } timeout_state; +/* Wrap error strings with filename and line # */ +#define STRINGIFY1(x) #x +#define STRINGIFY2(x) STRINGIFY1(x) +#define ERRSTR1(x,y,z) (x ":" y ": " z) +#define ERRSTR(x) ERRSTR1("_ssl.c", STRINGIFY2(__LINE__), x) + /* XXX It might be helpful to augment the error message generated below with the name of the SSL function that generated the error. I expect it's obvious most of the time. */ static PyObject * -PySSL_SetError(PySSLObject *obj, int ret) +PySSL_SetError(PySSLObject *obj, int ret, char *filename, int lineno) { - PyObject *v, *n, *s; + PyObject *v; + char buf[2048]; char *errstr; int err; - enum py_ssl_error p; + enum py_ssl_error p = PY_SSL_ERROR_NONE; assert(ret <= 0); - - err = SSL_get_error(obj->ssl, ret); - switch (err) { - case SSL_ERROR_ZERO_RETURN: - errstr = "TLS/SSL connection has been closed"; - p = PY_SSL_ERROR_ZERO_RETURN; - break; - case SSL_ERROR_WANT_READ: - errstr = "The operation did not complete (read)"; - p = PY_SSL_ERROR_WANT_READ; - break; - case SSL_ERROR_WANT_WRITE: - p = PY_SSL_ERROR_WANT_WRITE; - errstr = "The operation did not complete (write)"; - break; - case SSL_ERROR_WANT_X509_LOOKUP: - p = PY_SSL_ERROR_WANT_X509_LOOKUP; - errstr = "The operation did not complete (X509 lookup)"; - break; - case SSL_ERROR_WANT_CONNECT: - p = PY_SSL_ERROR_WANT_CONNECT; - errstr = "The operation did not complete (connect)"; - break; - case SSL_ERROR_SYSCALL: - { - unsigned long e = ERR_get_error(); - if (e == 0) { - if (ret == 0 || !obj->Socket) { - p = PY_SSL_ERROR_EOF; - errstr = "EOF occurred in violation of protocol"; - } else if (ret == -1) { - /* the underlying BIO reported an I/O error */ - return obj->Socket->errorhandler(); - } else { /* possible? */ + if ((obj != NULL) && (obj->ssl != NULL)) { + err = SSL_get_error(obj->ssl, ret); + + switch (err) { + case SSL_ERROR_ZERO_RETURN: + errstr = "TLS/SSL connection has been closed"; + p = PY_SSL_ERROR_ZERO_RETURN; + break; + case SSL_ERROR_WANT_READ: + errstr = "The operation did not complete (read)"; + p = PY_SSL_ERROR_WANT_READ; + break; + case SSL_ERROR_WANT_WRITE: + p = PY_SSL_ERROR_WANT_WRITE; + errstr = "The operation did not complete (write)"; + break; + case SSL_ERROR_WANT_X509_LOOKUP: + p = PY_SSL_ERROR_WANT_X509_LOOKUP; + errstr = + "The operation did not complete (X509 lookup)"; + break; + case SSL_ERROR_WANT_CONNECT: + p = PY_SSL_ERROR_WANT_CONNECT; + errstr = "The operation did not complete (connect)"; + break; + case SSL_ERROR_SYSCALL: + { + unsigned long e = ERR_get_error(); + if (e == 0) { + if (ret == 0 || !obj->Socket) { + p = PY_SSL_ERROR_EOF; + errstr = + "EOF occurred in violation of protocol"; + } else if (ret == -1) { + /* underlying BIO reported an I/O error */ + return obj->Socket->errorhandler(); + } else { /* possible? */ + p = PY_SSL_ERROR_SYSCALL; + errstr = "Some I/O error occurred"; + } + } else { p = PY_SSL_ERROR_SYSCALL; - errstr = "Some I/O error occurred"; + /* XXX Protected by global interpreter lock */ + errstr = ERR_error_string(e, NULL); } - } else { - p = PY_SSL_ERROR_SYSCALL; - /* XXX Protected by global interpreter lock */ - errstr = ERR_error_string(e, NULL); - } - break; - } - case SSL_ERROR_SSL: - { - unsigned long e = ERR_get_error(); - p = PY_SSL_ERROR_SSL; - if (e != 0) - /* XXX Protected by global interpreter lock */ - errstr = ERR_error_string(e, NULL); - else { /* possible? */ - errstr = "A failure in the SSL library occurred"; + break; } - break; - } - default: - p = PY_SSL_ERROR_INVALID_ERROR_CODE; - errstr = "Invalid error code"; - } - n = PyInt_FromLong((long) p); - if (n == NULL) - return NULL; - v = PyTuple_New(2); - if (v == NULL) { - Py_DECREF(n); - return NULL; + case SSL_ERROR_SSL: + { + unsigned long e = ERR_get_error(); + p = PY_SSL_ERROR_SSL; + if (e != 0) + /* XXX Protected by global interpreter lock */ + errstr = ERR_error_string(e, NULL); + else { /* possible? */ + errstr = + "A failure in the SSL library occurred"; + } + break; + } + default: + p = PY_SSL_ERROR_INVALID_ERROR_CODE; + errstr = "Invalid error code"; + } + } else { + errstr = ERR_error_string(ERR_peek_last_error(), NULL); } - - s = PyString_FromString(errstr); - if (s == NULL) { + PyOS_snprintf(buf, sizeof(buf), "_ssl.c:%d: %s", lineno, errstr); + v = Py_BuildValue("(is)", p, buf); + if (v != NULL) { + PyErr_SetObject(PySSLErrorObject, v); Py_DECREF(v); - Py_DECREF(n); } - PyTuple_SET_ITEM(v, 0, n); - PyTuple_SET_ITEM(v, 1, s); - PyErr_SetObject(PySSLErrorObject, v); - Py_DECREF(v); return NULL; } static PySSLObject * -newPySSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file) +newPySSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file, + enum py_ssl_server_or_client socket_type, + enum py_ssl_cert_requirements certreq, + enum py_ssl_version proto_version, + char *cacerts_file) { PySSLObject *self; char *errstr = NULL; int ret; int err; int sockstate; + int verification_mode; self = PyObject_New(PySSLObject, &PySSL_Type); /* Create new object */ if (self == NULL) return NULL; memset(self->server, '\0', sizeof(char) * X509_NAME_MAXLEN); memset(self->issuer, '\0', sizeof(char) * X509_NAME_MAXLEN); - self->server_cert = NULL; + self->peer_cert = NULL; self->ssl = NULL; self->ctx = NULL; self->Socket = NULL; if ((key_file && !cert_file) || (!key_file && cert_file)) { - errstr = "Both the key & certificate files must be specified"; + errstr = ERRSTR("Both the key & certificate files " + "must be specified"); + goto fail; + } + + if ((socket_type == PY_SSL_SERVER) && + ((key_file == NULL) || (cert_file == NULL))) { + errstr = ERRSTR("Both the key & certificate files " + "must be specified for server-side operation"); goto fail; } Py_BEGIN_ALLOW_THREADS - self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */ + if (proto_version == PY_SSL_VERSION_TLS1) + self->ctx = SSL_CTX_new(TLSv1_method()); /* Set up context */ + else if (proto_version == PY_SSL_VERSION_SSL3) + self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */ + else if (proto_version == PY_SSL_VERSION_SSL2) + self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */ + else + self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */ Py_END_ALLOW_THREADS + if (self->ctx == NULL) { - errstr = "SSL_CTX_new error"; + errstr = ERRSTR("Invalid SSL protocol variant specified."); goto fail; } + if (certreq != PY_SSL_CERT_NONE) { + if (cacerts_file == NULL) { + errstr = ERRSTR("No root certificates specified for " + "verification of other-side certificates."); + goto fail; + } else { + Py_BEGIN_ALLOW_THREADS + ret = SSL_CTX_load_verify_locations(self->ctx, + cacerts_file, + NULL); + Py_END_ALLOW_THREADS + if (ret != 1) { + PySSL_SetError(NULL, 0, __FILE__, __LINE__); + goto fail; + } + } + } if (key_file) { Py_BEGIN_ALLOW_THREADS ret = SSL_CTX_use_PrivateKey_file(self->ctx, key_file, - SSL_FILETYPE_PEM); + SSL_FILETYPE_PEM); Py_END_ALLOW_THREADS - if (ret < 1) { - errstr = "SSL_CTX_use_PrivateKey_file error"; + if (ret != 1) { + PySSL_SetError(NULL, 0, __FILE__, __LINE__); goto fail; } @@ -225,16 +286,24 @@ ret = SSL_CTX_use_certificate_chain_file(self->ctx, cert_file); Py_END_ALLOW_THREADS - SSL_CTX_set_options(self->ctx, SSL_OP_ALL); /* ssl compatibility */ - if (ret < 1) { - errstr = "SSL_CTX_use_certificate_chain_file error"; + if (ret != 1) { + PySSL_SetError(NULL, 0, __FILE__, __LINE__); goto fail; } + /* ssl compatibility */ + SSL_CTX_set_options(self->ctx, SSL_OP_ALL); } + verification_mode = SSL_VERIFY_NONE; + if (certreq == PY_SSL_CERT_OPTIONAL) + verification_mode = SSL_VERIFY_PEER; + else if (certreq == PY_SSL_CERT_REQUIRED) + verification_mode = (SSL_VERIFY_PEER | + SSL_VERIFY_FAIL_IF_NO_PEER_CERT); + SSL_CTX_set_verify(self->ctx, verification_mode, + NULL); /* set verify lvl */ + Py_BEGIN_ALLOW_THREADS - SSL_CTX_set_verify(self->ctx, - SSL_VERIFY_NONE, NULL); /* set verify lvl */ self->ssl = SSL_new(self->ctx); /* New ssl struct */ Py_END_ALLOW_THREADS SSL_set_fd(self->ssl, Sock->sock_fd); /* Set the socket for SSL */ @@ -249,7 +318,10 @@ } Py_BEGIN_ALLOW_THREADS - SSL_set_connect_state(self->ssl); + if (socket_type == PY_SSL_CLIENT) + SSL_set_connect_state(self->ssl); + else + SSL_set_accept_state(self->ssl); Py_END_ALLOW_THREADS /* Actually negotiate SSL connection */ @@ -257,11 +329,14 @@ sockstate = 0; do { Py_BEGIN_ALLOW_THREADS - ret = SSL_connect(self->ssl); + if (socket_type == PY_SSL_CLIENT) + ret = SSL_connect(self->ssl); + else + ret = SSL_accept(self->ssl); err = SSL_get_error(self->ssl, ret); Py_END_ALLOW_THREADS if(PyErr_CheckSignals()) { - goto fail; + goto fail; } if (err == SSL_ERROR_WANT_READ) { sockstate = check_socket_and_wait_for_timeout(Sock, 0); @@ -270,30 +345,33 @@ } else { sockstate = SOCKET_OPERATION_OK; } - if (sockstate == SOCKET_HAS_TIMED_OUT) { - PyErr_SetString(PySSLErrorObject, "The connect operation timed out"); + if (sockstate == SOCKET_HAS_TIMED_OUT) { + PyErr_SetString(PySSLErrorObject, + ERRSTR("The connect operation timed out")); goto fail; } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) { - PyErr_SetString(PySSLErrorObject, "Underlying socket has been closed."); + PyErr_SetString(PySSLErrorObject, + ERRSTR("Underlying socket has been closed.")); goto fail; } else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) { - PyErr_SetString(PySSLErrorObject, "Underlying socket too large for select()."); + PyErr_SetString(PySSLErrorObject, + ERRSTR("Underlying socket too large for select().")); goto fail; } else if (sockstate == SOCKET_IS_NONBLOCKING) { break; } } while (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE); - if (ret <= 0) { - PySSL_SetError(self, ret); + if (ret < 1) { + PySSL_SetError(self, ret, __FILE__, __LINE__); goto fail; } self->ssl->debug = 1; Py_BEGIN_ALLOW_THREADS - if ((self->server_cert = SSL_get_peer_certificate(self->ssl))) { - X509_NAME_oneline(X509_get_subject_name(self->server_cert), + if ((self->peer_cert = SSL_get_peer_certificate(self->ssl))) { + X509_NAME_oneline(X509_get_subject_name(self->peer_cert), self->server, X509_NAME_MAXLEN); - X509_NAME_oneline(X509_get_issuer_name(self->server_cert), + X509_NAME_oneline(X509_get_issuer_name(self->peer_cert), self->issuer, X509_NAME_MAXLEN); } Py_END_ALLOW_THREADS @@ -308,27 +386,41 @@ } static PyObject * -PySocket_ssl(PyObject *self, PyObject *args) +PySSL_sslwrap(PyObject *self, PyObject *args) { - PySSLObject *rv; PySocketSockObject *Sock; + int server_side = 0; + int verification_mode = PY_SSL_CERT_NONE; + int protocol = PY_SSL_VERSION_SSL23; char *key_file = NULL; char *cert_file = NULL; + char *cacerts_file = NULL; - if (!PyArg_ParseTuple(args, "O!|zz:ssl", + if (!PyArg_ParseTuple(args, "O!i|zziiz:sslwrap", PySocketModule.Sock_Type, &Sock, - &key_file, &cert_file)) + &server_side, + &key_file, &cert_file, + &verification_mode, &protocol, + &cacerts_file)) return NULL; - rv = newPySSLObject(Sock, key_file, cert_file); - if (rv == NULL) - return NULL; - return (PyObject *)rv; + /* + fprintf(stderr, + "server_side is %d, keyfile %p, certfile %p, verify_mode %d, " + "protocol %d, certs %p\n", + server_side, key_file, cert_file, verification_mode, + protocol, cacerts_file); + */ + + return (PyObject *) newPySSLObject(Sock, key_file, cert_file, + server_side, verification_mode, + protocol, cacerts_file); } PyDoc_STRVAR(ssl_doc, -"ssl(socket, [keyfile, certfile]) -> sslobject"); +"sslwrap(socket, server_side, [keyfile, certfile, certs_mode, protocol,\n" +" cacertsfile]) -> sslobject"); /* SSL object methods */ @@ -344,15 +436,168 @@ return PyString_FromString(self->issuer); } +static PyObject * +_create_tuple_for_X509_NAME (X509_NAME *xname) +{ + PyObject *pt = NULL; + PyObject *entry_tuple = NULL; + int entry_count = X509_NAME_entry_count(xname); + int index_counter; + + pt = PyTuple_New(entry_count); + if (pt == NULL) + return NULL; + + for (index_counter = 0; + index_counter < X509_NAME_entry_count(xname); + index_counter++) + { + char namebuf[X509_NAME_MAXLEN]; + int buflen; + PyObject *name_obj; + ASN1_STRING *value; + PyObject *value_obj; + unsigned char *valuebuf = NULL; + + X509_NAME_ENTRY *entry = X509_NAME_get_entry(xname, + index_counter); + + ASN1_OBJECT *name = X509_NAME_ENTRY_get_object(entry); + buflen = OBJ_obj2txt(namebuf, sizeof(namebuf), name, 0); + if (buflen < 0) + goto fail0; + name_obj = PyString_FromStringAndSize(namebuf, buflen); + if (name_obj == NULL) + goto fail0; + + value = X509_NAME_ENTRY_get_data(entry); + buflen = ASN1_STRING_to_UTF8(&valuebuf, value); + if (buflen < 0) { + Py_DECREF(name_obj); + goto fail0; + } + value_obj = PyUnicode_DecodeUTF8((char *) valuebuf, + buflen, "strict"); + OPENSSL_free(valuebuf); + if (value_obj == NULL) { + Py_DECREF(name_obj); + goto fail0; + } + entry_tuple = PyTuple_New(2); + if (entry_tuple == NULL) { + Py_DECREF(name_obj); + Py_DECREF(value_obj); + goto fail0; + } + PyTuple_SET_ITEM(entry_tuple, 0, name_obj); + PyTuple_SET_ITEM(entry_tuple, 1, value_obj); + PyTuple_SET_ITEM(pt, index_counter, entry_tuple); + } + return pt; + + fail0: + Py_XDECREF(pt); + return NULL; +} + +static PyObject * +PySSL_peercert(PySSLObject *self) +{ + PyObject *retval = NULL; + BIO *biobuf = NULL; + PyObject *peer; + PyObject *issuer; + PyObject *version; + char buf[2048]; + int len; + ASN1_TIME *notBefore, *notAfter; + PyObject *pnotBefore, *pnotAfter; + int verification; + + if (!self->peer_cert) + Py_RETURN_NONE; + + retval = PyDict_New(); + if (retval == NULL) + return NULL; + + verification = SSL_CTX_get_verify_mode(self->ctx); + if ((verification & SSL_VERIFY_PEER) == 0) + return retval; + + peer = _create_tuple_for_X509_NAME( + X509_get_subject_name(self->peer_cert)); + if (peer == NULL) + goto fail0; + if (PyDict_SetItemString(retval, (const char *) "subject", peer) < 0) { + Py_DECREF(peer); + goto fail0; + } + Py_DECREF(peer); + + issuer = _create_tuple_for_X509_NAME( + X509_get_issuer_name(self->peer_cert)); + if (issuer == NULL) + goto fail0; + if (PyDict_SetItemString(retval, (const char *)"issuer", issuer) < 0) { + Py_DECREF(issuer); + goto fail0; + } + Py_DECREF(issuer); + + version = PyInt_FromLong(X509_get_version(self->peer_cert)); + if (PyDict_SetItemString(retval, "version", version) < 0) { + Py_DECREF(version); + goto fail0; + } + Py_DECREF(version); + + /* get a memory buffer */ + biobuf = BIO_new(BIO_s_mem()); + + notBefore = X509_get_notBefore(self->peer_cert); + ASN1_TIME_print(biobuf, notBefore); + len = BIO_gets(biobuf, buf, sizeof(buf)-1); + pnotBefore = PyString_FromStringAndSize(buf, len); + if (pnotBefore == NULL) + goto fail1; + if (PyDict_SetItemString(retval, "notBefore", pnotBefore) < 0) { + Py_DECREF(pnotBefore); + goto fail1; + } + Py_DECREF(pnotBefore); + + (void) BIO_reset(biobuf); + notAfter = X509_get_notAfter(self->peer_cert); + ASN1_TIME_print(biobuf, notAfter); + len = BIO_gets(biobuf, buf, sizeof(buf)-1); + BIO_free(biobuf); + pnotAfter = PyString_FromStringAndSize(buf, len); + if (pnotAfter == NULL) + goto fail0; + if (PyDict_SetItemString(retval, "notAfter", pnotAfter) < 0) { + Py_DECREF(pnotAfter); + goto fail0; + } + Py_DECREF(pnotAfter); + return retval; + + fail1: + if (biobuf != NULL) + BIO_free(biobuf); + fail0: + Py_XDECREF(retval); + return NULL; +} static void PySSL_dealloc(PySSLObject *self) { - if (self->server_cert) /* Possible not to have one? */ - X509_free (self->server_cert); + if (self->peer_cert) /* Possible not to have one? */ + X509_free (self->peer_cert); if (self->ssl) - SSL_free(self->ssl); + SSL_free(self->ssl); if (self->ctx) - SSL_CTX_free(self->ctx); + SSL_CTX_free(self->ctx); Py_XDECREF(self->Socket); PyObject_Del(self); } @@ -438,13 +683,16 @@ sockstate = check_socket_and_wait_for_timeout(self->Socket, 1); if (sockstate == SOCKET_HAS_TIMED_OUT) { - PyErr_SetString(PySSLErrorObject, "The write operation timed out"); + PyErr_SetString(PySSLErrorObject, + "The write operation timed out"); return NULL; } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) { - PyErr_SetString(PySSLErrorObject, "Underlying socket has been closed."); + PyErr_SetString(PySSLErrorObject, + "Underlying socket has been closed."); return NULL; } else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) { - PyErr_SetString(PySSLErrorObject, "Underlying socket too large for select()."); + PyErr_SetString(PySSLErrorObject, + "Underlying socket too large for select()."); return NULL; } do { @@ -457,17 +705,21 @@ return NULL; } if (err == SSL_ERROR_WANT_READ) { - sockstate = check_socket_and_wait_for_timeout(self->Socket, 0); + sockstate = + check_socket_and_wait_for_timeout(self->Socket, 0); } else if (err == SSL_ERROR_WANT_WRITE) { - sockstate = check_socket_and_wait_for_timeout(self->Socket, 1); + sockstate = + check_socket_and_wait_for_timeout(self->Socket, 1); } else { sockstate = SOCKET_OPERATION_OK; } - if (sockstate == SOCKET_HAS_TIMED_OUT) { - PyErr_SetString(PySSLErrorObject, "The write operation timed out"); + if (sockstate == SOCKET_HAS_TIMED_OUT) { + PyErr_SetString(PySSLErrorObject, + "The write operation timed out"); return NULL; } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) { - PyErr_SetString(PySSLErrorObject, "Underlying socket has been closed."); + PyErr_SetString(PySSLErrorObject, + "Underlying socket has been closed."); return NULL; } else if (sockstate == SOCKET_IS_NONBLOCKING) { break; @@ -476,7 +728,7 @@ if (len > 0) return PyInt_FromLong(len); else - return PySSL_SetError(self, len); + return PySSL_SetError(self, len, __FILE__, __LINE__); } PyDoc_STRVAR(PySSL_SSLwrite_doc, @@ -498,7 +750,7 @@ if (!(buf = PyString_FromStringAndSize((char *) 0, len))) return NULL; - + /* first check if there are bytes ready to be read */ Py_BEGIN_ALLOW_THREADS count = SSL_pending(self->ssl); @@ -507,12 +759,28 @@ if (!count) { sockstate = check_socket_and_wait_for_timeout(self->Socket, 0); if (sockstate == SOCKET_HAS_TIMED_OUT) { - PyErr_SetString(PySSLErrorObject, "The read operation timed out"); + PyErr_SetString(PySSLErrorObject, + "The read operation timed out"); Py_DECREF(buf); return NULL; } else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) { - PyErr_SetString(PySSLErrorObject, "Underlying socket too large for select()."); + PyErr_SetString(PySSLErrorObject, + "Underlying socket too large for select()."); + Py_DECREF(buf); return NULL; + } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) { + if (SSL_get_shutdown(self->ssl) != + SSL_RECEIVED_SHUTDOWN) + { + Py_DECREF(buf); + PyErr_SetString(PySSLErrorObject, + "Socket closed without SSL shutdown handshake"); + return NULL; + } else { + /* should contain a zero-length string */ + _PyString_Resize(&buf, 0); + return buf; + } } } do { @@ -526,23 +794,32 @@ return NULL; } if (err == SSL_ERROR_WANT_READ) { - sockstate = check_socket_and_wait_for_timeout(self->Socket, 0); + sockstate = + check_socket_and_wait_for_timeout(self->Socket, 0); } else if (err == SSL_ERROR_WANT_WRITE) { - sockstate = check_socket_and_wait_for_timeout(self->Socket, 1); + sockstate = + check_socket_and_wait_for_timeout(self->Socket, 1); + } else if ((err == SSL_ERROR_ZERO_RETURN) && + (SSL_get_shutdown(self->ssl) == + SSL_RECEIVED_SHUTDOWN)) + { + _PyString_Resize(&buf, 0); + return buf; } else { sockstate = SOCKET_OPERATION_OK; } - if (sockstate == SOCKET_HAS_TIMED_OUT) { - PyErr_SetString(PySSLErrorObject, "The read operation timed out"); + if (sockstate == SOCKET_HAS_TIMED_OUT) { + PyErr_SetString(PySSLErrorObject, + "The read operation timed out"); Py_DECREF(buf); return NULL; } else if (sockstate == SOCKET_IS_NONBLOCKING) { break; } } while (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE); - if (count <= 0) { + if (count <= 0) { Py_DECREF(buf); - return PySSL_SetError(self, count); + return PySSL_SetError(self, count, __FILE__, __LINE__); } if (count != len) _PyString_Resize(&buf, count); @@ -554,13 +831,49 @@ \n\ Read up to len bytes from the SSL socket."); +static PyObject *PySSL_SSLshutdown(PySSLObject *self, PyObject *args) +{ + int err; + + /* Guard against closed socket */ + if (self->Socket->sock_fd < 0) { + PyErr_SetString(PySSLErrorObject, + "Underlying socket has been closed."); + return NULL; + } + + Py_BEGIN_ALLOW_THREADS + err = SSL_shutdown(self->ssl); + if (err == 0) { + /* we need to call it again to finish the shutdown */ + err = SSL_shutdown(self->ssl); + } + Py_END_ALLOW_THREADS + + if (err < 0) + return PySSL_SetError(self, err, __FILE__, __LINE__); + else { + Py_INCREF(self->Socket); + return (PyObject *) (self->Socket); + } +} + +PyDoc_STRVAR(PySSL_SSLshutdown_doc, +"shutdown(s) -> socket\n\ +\n\ +Does the SSL shutdown handshake with the remote end, and returns\n\ +the underlying socket object."); + static PyMethodDef PySSLMethods[] = { {"write", (PyCFunction)PySSL_SSLwrite, METH_VARARGS, - PySSL_SSLwrite_doc}, + PySSL_SSLwrite_doc}, {"read", (PyCFunction)PySSL_SSLread, METH_VARARGS, - PySSL_SSLread_doc}, + PySSL_SSLread_doc}, {"server", (PyCFunction)PySSL_server, METH_NOARGS}, {"issuer", (PyCFunction)PySSL_issuer, METH_NOARGS}, + {"peer_certificate", (PyCFunction)PySSL_peercert, METH_NOARGS}, + {"shutdown", (PyCFunction)PySSL_SSLshutdown, METH_NOARGS, + PySSL_SSLshutdown_doc}, {NULL, NULL} }; @@ -570,9 +883,8 @@ } static PyTypeObject PySSL_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "socket.SSL", /*tp_name*/ + PyVarObject_HEAD_INIT(NULL, 0) + "ssl.SSLContext", /*tp_name*/ sizeof(PySSLObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ /* methods */ @@ -632,7 +944,7 @@ if (!PyString_Check(arg)) return PyErr_Format(PyExc_TypeError, "RAND_egd() expected string, found %s", - arg->ob_type->tp_name); + Py_Type(arg)->tp_name); bytes = RAND_egd(PyString_AS_STRING(arg)); if (bytes == -1) { PyErr_SetString(PySSLErrorObject, @@ -647,7 +959,7 @@ "RAND_egd(path) -> bytes\n\ \n\ Queries the entropy gather daemon (EGD) on socket path. Returns number\n\ -of bytes read. Raises socket.sslerror if connection to EGD fails or\n\ +of bytes read. Raises ssl.sslerror if connection to EGD fails or\n\ if it does provide enough data to seed PRNG."); #endif @@ -655,17 +967,17 @@ /* List of functions exported by this module. */ static PyMethodDef PySSL_methods[] = { - {"ssl", PySocket_ssl, - METH_VARARGS, ssl_doc}, + {"sslwrap", PySSL_sslwrap, + METH_VARARGS, ssl_doc}, #ifdef HAVE_OPENSSL_RAND - {"RAND_add", PySSL_RAND_add, METH_VARARGS, + {"RAND_add", PySSL_RAND_add, METH_VARARGS, PySSL_RAND_add_doc}, {"RAND_egd", PySSL_RAND_egd, METH_O, PySSL_RAND_egd_doc}, {"RAND_status", (PyCFunction)PySSL_RAND_status, METH_NOARGS, PySSL_RAND_status_doc}, #endif - {NULL, NULL} /* Sentinel */ + {NULL, NULL} /* Sentinel */ }; @@ -678,7 +990,7 @@ { PyObject *m, *d; - PySSL_Type.ob_type = &PyType_Type; + Py_Type(&PySSL_Type) = &PyType_Type; m = Py_InitModule3("_ssl", PySSL_methods, module_doc); if (m == NULL) @@ -687,19 +999,20 @@ /* Load _socket module and its C API */ if (PySocketModule_ImportModuleAndAPI()) - return; + return; /* Init OpenSSL */ SSL_load_error_strings(); SSLeay_add_ssl_algorithms(); /* Add symbols to module dict */ - PySSLErrorObject = PyErr_NewException("socket.sslerror", - PySocketModule.error, - NULL); + PySSLErrorObject = PyErr_NewException("ssl.sslerror", + PySocketModule.error, + NULL); if (PySSLErrorObject == NULL) return; - PyDict_SetItemString(d, "sslerror", PySSLErrorObject); + if (PyDict_SetItemString(d, "sslerror", PySSLErrorObject) != 0) + return; if (PyDict_SetItemString(d, "SSLType", (PyObject *)&PySSL_Type) != 0) return; @@ -722,5 +1035,21 @@ PY_SSL_ERROR_EOF); PyModule_AddIntConstant(m, "SSL_ERROR_INVALID_ERROR_CODE", PY_SSL_ERROR_INVALID_ERROR_CODE); - + /* cert requirements */ + PyModule_AddIntConstant(m, "CERT_NONE", + PY_SSL_CERT_NONE); + PyModule_AddIntConstant(m, "CERT_OPTIONAL", + PY_SSL_CERT_OPTIONAL); + PyModule_AddIntConstant(m, "CERT_REQUIRED", + PY_SSL_CERT_REQUIRED); + + /* protocol versions */ + PyModule_AddIntConstant(m, "PROTOCOL_SSLv2", + PY_SSL_VERSION_SSL2); + PyModule_AddIntConstant(m, "PROTOCOL_SSLv3", + PY_SSL_VERSION_SSL3); + PyModule_AddIntConstant(m, "PROTOCOL_SSLv23", + PY_SSL_VERSION_SSL23); + PyModule_AddIntConstant(m, "PROTOCOL_TLSv1", + PY_SSL_VERSION_TLS1); } Modified: python/branches/bcannon-objcap/Modules/_struct.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_struct.c (original) +++ python/branches/bcannon-objcap/Modules/_struct.c Thu Sep 6 21:35:45 2007 @@ -72,7 +72,7 @@ #define PyStruct_Check(op) PyObject_TypeCheck(op, &PyStructType) -#define PyStruct_CheckExact(op) ((op)->ob_type == &PyStructType) +#define PyStruct_CheckExact(op) (Py_Type(op) == &PyStructType) /* Exception */ @@ -133,7 +133,7 @@ Py_INCREF(v); return v; } - m = v->ob_type->tp_as_number; + m = Py_Type(v)->tp_as_number; if (m != NULL && m->nb_long != NULL) { v = m->nb_long(v); if (v == NULL) @@ -1487,7 +1487,7 @@ PyMem_FREE(s->s_codes); } Py_XDECREF(s->s_format); - s->ob_type->tp_free((PyObject *)s); + Py_Type(s)->tp_free((PyObject *)s); } static PyObject * @@ -1806,8 +1806,7 @@ static PyTypeObject PyStructType = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "Struct", sizeof(PyStructObject), 0, @@ -1857,7 +1856,7 @@ if (m == NULL) return; - PyStructType.ob_type = &PyType_Type; + Py_Type(&PyStructType) = &PyType_Type; if (PyType_Ready(&PyStructType) < 0) return; Modified: python/branches/bcannon-objcap/Modules/_testcapimodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_testcapimodule.c (original) +++ python/branches/bcannon-objcap/Modules/_testcapimodule.c Thu Sep 6 21:35:45 2007 @@ -839,8 +839,7 @@ } static PyTypeObject test_structmembersType = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "test_structmembersType", sizeof(test_structmembers), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -890,7 +889,7 @@ if (m == NULL) return; - test_structmembersType.ob_type=&PyType_Type; + Py_Type(&test_structmembersType)=&PyType_Type; Py_INCREF(&test_structmembersType); PyModule_AddObject(m, "test_structmembersType", (PyObject *)&test_structmembersType); Modified: python/branches/bcannon-objcap/Modules/_tkinter.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_tkinter.c (original) +++ python/branches/bcannon-objcap/Modules/_tkinter.c Thu Sep 6 21:35:45 2007 @@ -262,12 +262,12 @@ Tcl_ObjType *StringType; } TkappObject; -#define Tkapp_Check(v) ((v)->ob_type == &Tkapp_Type) +#define Tkapp_Check(v) (Py_Type(v) == &Tkapp_Type) #define Tkapp_Interp(v) (((TkappObject *) (v))->interp) #define Tkapp_Result(v) Tcl_GetStringResult(Tkapp_Interp(v)) #define DEBUG_REFCNT(v) (printf("DEBUG: id=%p, refcnt=%i\n", \ -(void *) v, ((PyObject *) v)->ob_refcnt)) +(void *) v, Py_Refcnt(v))) @@ -1285,6 +1285,12 @@ /* Could add TCL_EVAL_GLOBAL if wrapped by GlobalCall... */ int flags = TCL_EVAL_DIRECT; + /* If args is a single tuple, replace with contents of tuple */ + if (1 == PyTuple_Size(args)){ + PyObject* item = PyTuple_GetItem(args, 0); + if (PyTuple_Check(item)) + args = item; + } #ifdef WITH_THREAD if (self->threaded && self->thread_id != Tcl_GetCurrentThread()) { /* We cannot call the command directly. Instead, we must @@ -2022,7 +2028,9 @@ s = AsString(res, tmp); if (s == NULL) { - rv = PythonCmd_Error(interp); + Py_DECREF(res); + Py_DECREF(tmp); + return PythonCmd_Error(interp); } else { Tcl_SetResult(Tkapp_Interp(self), s, TCL_VOLATILE); @@ -2414,8 +2422,7 @@ static PyTypeObject Tktt_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "tktimertoken", /*tp_name */ sizeof(TkttObject), /*tp_basicsize */ 0, /*tp_itemsize */ @@ -2759,8 +2766,7 @@ static PyTypeObject Tkapp_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "tkapp", /*tp_name */ sizeof(TkappObject), /*tp_basicsize */ 0, /*tp_itemsize */ @@ -3099,7 +3105,7 @@ { PyObject *m, *d; - Tkapp_Type.ob_type = &PyType_Type; + Py_Type(&Tkapp_Type) = &PyType_Type; #ifdef WITH_THREAD tcl_lock = PyThread_allocate_lock(); @@ -3127,10 +3133,10 @@ PyDict_SetItemString(d, "TkappType", (PyObject *)&Tkapp_Type); - Tktt_Type.ob_type = &PyType_Type; + Py_Type(&Tktt_Type) = &PyType_Type; PyDict_SetItemString(d, "TkttType", (PyObject *)&Tktt_Type); - PyTclObject_Type.ob_type = &PyType_Type; + Py_Type(&PyTclObject_Type) = &PyType_Type; PyDict_SetItemString(d, "Tcl_Obj", (PyObject *)&PyTclObject_Type); #ifdef TK_AQUA Modified: python/branches/bcannon-objcap/Modules/_typesmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_typesmodule.c (original) +++ python/branches/bcannon-objcap/Modules/_typesmodule.c Thu Sep 6 21:35:45 2007 @@ -33,8 +33,7 @@ }; static PyTypeObject HelperType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "_types.Helper", /* tp_name */ sizeof(Helper), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/_weakref.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_weakref.c (original) +++ python/branches/bcannon-objcap/Modules/_weakref.c Thu Sep 6 21:35:45 2007 @@ -14,7 +14,7 @@ { PyObject *result = NULL; - if (PyType_SUPPORTS_WEAKREFS(object->ob_type)) { + if (PyType_SUPPORTS_WEAKREFS(Py_Type(object))) { PyWeakReference **list = GET_WEAKREFS_LISTPTR(object); result = PyInt_FromSsize_t(_PyWeakref_GetWeakrefCount(*list)); @@ -35,7 +35,7 @@ { PyObject *result = NULL; - if (PyType_SUPPORTS_WEAKREFS(object->ob_type)) { + if (PyType_SUPPORTS_WEAKREFS(Py_Type(object))) { PyWeakReference **list = GET_WEAKREFS_LISTPTR(object); Py_ssize_t count = _PyWeakref_GetWeakrefCount(*list); Modified: python/branches/bcannon-objcap/Modules/arraymodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/arraymodule.c (original) +++ python/branches/bcannon-objcap/Modules/arraymodule.c Thu Sep 6 21:35:45 2007 @@ -39,7 +39,7 @@ static PyTypeObject Arraytype; #define array_Check(op) PyObject_TypeCheck(op, &Arraytype) -#define array_CheckExact(op) ((op)->ob_type == &Arraytype) +#define array_CheckExact(op) (Py_Type(op) == &Arraytype) static int array_resize(arrayobject *self, Py_ssize_t newsize) @@ -53,9 +53,9 @@ */ if (self->allocated >= newsize && - self->ob_size < newsize + 16 && + Py_Size(self) < newsize + 16 && self->ob_item != NULL) { - self->ob_size = newsize; + Py_Size(self) = newsize; return 0; } @@ -71,7 +71,7 @@ * memory critical. */ - _new_size = (newsize >> 4) + (self->ob_size < 8 ? 3 : 7) + newsize; + _new_size = (newsize >> 4) + (Py_Size(self) < 8 ? 3 : 7) + newsize; items = self->ob_item; /* XXX The following multiplication and division does not optimize away like it does for lists since the size is not known at compile time */ @@ -84,7 +84,7 @@ return -1; } self->ob_item = items; - self->ob_size = newsize; + Py_Size(self) = newsize; self->allocated = _new_size; return 0; } @@ -432,7 +432,7 @@ if (op == NULL) { return NULL; } - op->ob_size = size; + Py_Size(op) = size; if (size <= 0) { op->ob_item = NULL; } @@ -455,7 +455,7 @@ register arrayobject *ap; assert(array_Check(op)); ap = (arrayobject *)op; - assert(i>=0 && iob_size); + assert(i>=0 && iob_descr->getitem)(ap, i); } @@ -463,7 +463,7 @@ ins1(arrayobject *self, Py_ssize_t where, PyObject *v) { char *items; - Py_ssize_t n = self->ob_size; + Py_ssize_t n = Py_Size(self); if (v == NULL) { PyErr_BadInternalCall(); return -1; @@ -498,7 +498,7 @@ PyObject_ClearWeakRefs((PyObject *) op); if (op->ob_item != NULL) PyMem_DEL(op->ob_item); - op->ob_type->tp_free((PyObject *)op); + Py_Type(op)->tp_free((PyObject *)op); } static PyObject * @@ -518,7 +518,7 @@ va = (arrayobject *)v; wa = (arrayobject *)w; - if (va->ob_size != wa->ob_size && (op == Py_EQ || op == Py_NE)) { + if (Py_Size(va) != Py_Size(wa) && (op == Py_EQ || op == Py_NE)) { /* Shortcut: if the lengths differ, the arrays differ */ if (op == Py_EQ) res = Py_False; @@ -530,7 +530,7 @@ /* Search for the first index where items are different */ k = 1; - for (i = 0; i < va->ob_size && i < wa->ob_size; i++) { + for (i = 0; i < Py_Size(va) && i < Py_Size(wa); i++) { vi = getarrayitem(v, i); wi = getarrayitem(w, i); if (vi == NULL || wi == NULL) { @@ -549,8 +549,8 @@ if (k) { /* No more items to compare -- compare sizes */ - Py_ssize_t vs = va->ob_size; - Py_ssize_t ws = wa->ob_size; + Py_ssize_t vs = Py_Size(va); + Py_ssize_t ws = Py_Size(wa); int cmp; switch (op) { case Py_LT: cmp = vs < ws; break; @@ -590,13 +590,13 @@ static Py_ssize_t array_length(arrayobject *a) { - return a->ob_size; + return Py_Size(a); } static PyObject * array_item(arrayobject *a, Py_ssize_t i) { - if (i < 0 || i >= a->ob_size) { + if (i < 0 || i >= Py_Size(a)) { PyErr_SetString(PyExc_IndexError, "array index out of range"); return NULL; } @@ -609,14 +609,14 @@ arrayobject *np; if (ilow < 0) ilow = 0; - else if (ilow > a->ob_size) - ilow = a->ob_size; + else if (ilow > Py_Size(a)) + ilow = Py_Size(a); if (ihigh < 0) ihigh = 0; if (ihigh < ilow) ihigh = ilow; - else if (ihigh > a->ob_size) - ihigh = a->ob_size; + else if (ihigh > Py_Size(a)) + ihigh = Py_Size(a); np = (arrayobject *) newarrayobject(&Arraytype, ihigh - ilow, a->ob_descr); if (np == NULL) return NULL; @@ -628,7 +628,7 @@ static PyObject * array_copy(arrayobject *a, PyObject *unused) { - return array_slice(a, 0, a->ob_size); + return array_slice(a, 0, Py_Size(a)); } PyDoc_STRVAR(copy_doc, @@ -644,7 +644,7 @@ if (!array_Check(bb)) { PyErr_Format(PyExc_TypeError, "can only append array (not \"%.200s\") to array", - bb->ob_type->tp_name); + Py_Type(bb)->tp_name); return NULL; } #define b ((arrayobject *)bb) @@ -652,14 +652,14 @@ PyErr_BadArgument(); return NULL; } - size = a->ob_size + b->ob_size; + size = Py_Size(a) + Py_Size(b); np = (arrayobject *) newarrayobject(&Arraytype, size, a->ob_descr); if (np == NULL) { return NULL; } - memcpy(np->ob_item, a->ob_item, a->ob_size*a->ob_descr->itemsize); - memcpy(np->ob_item + a->ob_size*a->ob_descr->itemsize, - b->ob_item, b->ob_size*b->ob_descr->itemsize); + memcpy(np->ob_item, a->ob_item, Py_Size(a)*a->ob_descr->itemsize); + memcpy(np->ob_item + Py_Size(a)*a->ob_descr->itemsize, + b->ob_item, Py_Size(b)*b->ob_descr->itemsize); return (PyObject *)np; #undef b } @@ -674,12 +674,12 @@ Py_ssize_t nbytes; if (n < 0) n = 0; - size = a->ob_size * n; + size = Py_Size(a) * n; np = (arrayobject *) newarrayobject(&Arraytype, size, a->ob_descr); if (np == NULL) return NULL; p = np->ob_item; - nbytes = a->ob_size * a->ob_descr->itemsize; + nbytes = Py_Size(a) * a->ob_descr->itemsize; for (i = 0; i < n; i++) { memcpy(p, a->ob_item, nbytes); p += nbytes; @@ -697,7 +697,7 @@ if (v == NULL) n = 0; else if (array_Check(v)) { - n = b->ob_size; + n = Py_Size(b); if (a == b) { /* Special case "a[i:j] = a" -- copy b first */ int ret; @@ -716,44 +716,44 @@ else { PyErr_Format(PyExc_TypeError, "can only assign array (not \"%.200s\") to array slice", - v->ob_type->tp_name); + Py_Type(v)->tp_name); return -1; } if (ilow < 0) ilow = 0; - else if (ilow > a->ob_size) - ilow = a->ob_size; + else if (ilow > Py_Size(a)) + ilow = Py_Size(a); if (ihigh < 0) ihigh = 0; if (ihigh < ilow) ihigh = ilow; - else if (ihigh > a->ob_size) - ihigh = a->ob_size; + else if (ihigh > Py_Size(a)) + ihigh = Py_Size(a); item = a->ob_item; d = n - (ihigh-ilow); if (d < 0) { /* Delete -d items */ memmove(item + (ihigh+d)*a->ob_descr->itemsize, item + ihigh*a->ob_descr->itemsize, - (a->ob_size-ihigh)*a->ob_descr->itemsize); - a->ob_size += d; - PyMem_RESIZE(item, char, a->ob_size*a->ob_descr->itemsize); + (Py_Size(a)-ihigh)*a->ob_descr->itemsize); + Py_Size(a) += d; + PyMem_RESIZE(item, char, Py_Size(a)*a->ob_descr->itemsize); /* Can't fail */ a->ob_item = item; - a->allocated = a->ob_size; + a->allocated = Py_Size(a); } else if (d > 0) { /* Insert d items */ PyMem_RESIZE(item, char, - (a->ob_size + d)*a->ob_descr->itemsize); + (Py_Size(a) + d)*a->ob_descr->itemsize); if (item == NULL) { PyErr_NoMemory(); return -1; } memmove(item + (ihigh+d)*a->ob_descr->itemsize, item + ihigh*a->ob_descr->itemsize, - (a->ob_size-ihigh)*a->ob_descr->itemsize); + (Py_Size(a)-ihigh)*a->ob_descr->itemsize); a->ob_item = item; - a->ob_size += d; - a->allocated = a->ob_size; + Py_Size(a) += d; + a->allocated = Py_Size(a); } if (n > 0) memcpy(item + ilow*a->ob_descr->itemsize, b->ob_item, @@ -765,7 +765,7 @@ static int array_ass_item(arrayobject *a, Py_ssize_t i, PyObject *v) { - if (i < 0 || i >= a->ob_size) { + if (i < 0 || i >= Py_Size(a)) { PyErr_SetString(PyExc_IndexError, "array assignment index out of range"); return -1; @@ -792,7 +792,7 @@ return -1; while ((v = PyIter_Next(it)) != NULL) { - if (ins1(self, (int) self->ob_size, v) != 0) { + if (ins1(self, (int) Py_Size(self), v) != 0) { Py_DECREF(v); Py_DECREF(it); return -1; @@ -818,16 +818,16 @@ "can only extend with array of same kind"); return -1; } - size = self->ob_size + b->ob_size; + size = Py_Size(self) + Py_Size(b); PyMem_RESIZE(self->ob_item, char, size*self->ob_descr->itemsize); if (self->ob_item == NULL) { PyObject_Del(self); PyErr_NoMemory(); return -1; } - memcpy(self->ob_item + self->ob_size*self->ob_descr->itemsize, - b->ob_item, b->ob_size*b->ob_descr->itemsize); - self->ob_size = size; + memcpy(self->ob_item + Py_Size(self)*self->ob_descr->itemsize, + b->ob_item, Py_Size(b)*b->ob_descr->itemsize); + Py_Size(self) = size; self->allocated = size; return 0; @@ -840,7 +840,7 @@ if (!array_Check(bb)) { PyErr_Format(PyExc_TypeError, "can only extend array with array (not \"%.200s\")", - bb->ob_type->tp_name); + Py_Type(bb)->tp_name); return NULL; } if (array_do_extend(self, bb) == -1) @@ -855,15 +855,15 @@ char *items, *p; Py_ssize_t size, i; - if (self->ob_size > 0) { + if (Py_Size(self) > 0) { if (n < 0) n = 0; items = self->ob_item; - size = self->ob_size * self->ob_descr->itemsize; + size = Py_Size(self) * self->ob_descr->itemsize; if (n == 0) { PyMem_FREE(items); self->ob_item = NULL; - self->ob_size = 0; + Py_Size(self) = 0; self->allocated = 0; } else { @@ -876,8 +876,8 @@ memcpy(p, items, size); } self->ob_item = items; - self->ob_size *= n; - self->allocated = self->ob_size; + Py_Size(self) *= n; + self->allocated = Py_Size(self); } } Py_INCREF(self); @@ -900,7 +900,7 @@ Py_ssize_t count = 0; Py_ssize_t i; - for (i = 0; i < self->ob_size; i++) { + for (i = 0; i < Py_Size(self); i++) { PyObject *selfi = getarrayitem((PyObject *)self, i); int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ); Py_DECREF(selfi); @@ -922,7 +922,7 @@ { Py_ssize_t i; - for (i = 0; i < self->ob_size; i++) { + for (i = 0; i < Py_Size(self); i++) { PyObject *selfi = getarrayitem((PyObject *)self, i); int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ); Py_DECREF(selfi); @@ -947,7 +947,7 @@ Py_ssize_t i; int cmp; - for (i = 0, cmp = 0 ; cmp == 0 && i < self->ob_size; i++) { + for (i = 0, cmp = 0 ; cmp == 0 && i < Py_Size(self); i++) { PyObject *selfi = getarrayitem((PyObject *)self, i); cmp = PyObject_RichCompareBool(selfi, v, Py_EQ); Py_DECREF(selfi); @@ -960,7 +960,7 @@ { int i; - for (i = 0; i < self->ob_size; i++) { + for (i = 0; i < Py_Size(self); i++) { PyObject *selfi = getarrayitem((PyObject *)self,i); int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ); Py_DECREF(selfi); @@ -990,14 +990,14 @@ PyObject *v; if (!PyArg_ParseTuple(args, "|n:pop", &i)) return NULL; - if (self->ob_size == 0) { + if (Py_Size(self) == 0) { /* Special-case most common failure cause */ PyErr_SetString(PyExc_IndexError, "pop from empty array"); return NULL; } if (i < 0) - i += self->ob_size; - if (i < 0 || i >= self->ob_size) { + i += Py_Size(self); + if (i < 0 || i >= Py_Size(self)) { PyErr_SetString(PyExc_IndexError, "pop index out of range"); return NULL; } @@ -1053,7 +1053,7 @@ return NULL; PyTuple_SET_ITEM(retval, 0, PyLong_FromVoidPtr(self->ob_item)); - PyTuple_SET_ITEM(retval, 1, PyInt_FromLong((long)(self->ob_size))); + PyTuple_SET_ITEM(retval, 1, PyInt_FromLong((long)(Py_Size(self)))); return retval; } @@ -1070,7 +1070,7 @@ static PyObject * array_append(arrayobject *self, PyObject *v) { - return ins(self, (int) self->ob_size, v); + return ins(self, (int) Py_Size(self), v); } PyDoc_STRVAR(append_doc, @@ -1089,14 +1089,14 @@ case 1: break; case 2: - for (p = self->ob_item, i = self->ob_size; --i >= 0; p += 2) { + for (p = self->ob_item, i = Py_Size(self); --i >= 0; p += 2) { char p0 = p[0]; p[0] = p[1]; p[1] = p0; } break; case 4: - for (p = self->ob_item, i = self->ob_size; --i >= 0; p += 4) { + for (p = self->ob_item, i = Py_Size(self); --i >= 0; p += 4) { char p0 = p[0]; char p1 = p[1]; p[0] = p[3]; @@ -1106,7 +1106,7 @@ } break; case 8: - for (p = self->ob_item, i = self->ob_size; --i >= 0; p += 8) { + for (p = self->ob_item, i = Py_Size(self); --i >= 0; p += 8) { char p0 = p[0]; char p1 = p[1]; char p2 = p[2]; @@ -1147,16 +1147,16 @@ dict = Py_None; Py_INCREF(dict); } - if (array->ob_size > 0) { + if (Py_Size(array) > 0) { result = Py_BuildValue("O(cs#)O", - array->ob_type, + Py_Type(array), array->ob_descr->typecode, array->ob_item, - array->ob_size * array->ob_descr->itemsize, + Py_Size(array) * array->ob_descr->itemsize, dict); } else { result = Py_BuildValue("O(c)O", - array->ob_type, + Py_Type(array), array->ob_descr->typecode, dict); } @@ -1175,9 +1175,9 @@ char tmp[256]; /* 8 is probably enough -- but why skimp */ assert((size_t)itemsize <= sizeof(tmp)); - if (self->ob_size > 1) { + if (Py_Size(self) > 1) { for (p = self->ob_item, - q = self->ob_item + (self->ob_size - 1)*itemsize; + q = self->ob_item + (Py_Size(self) - 1)*itemsize; p < q; p += itemsize, q -= itemsize) { /* memory areas guaranteed disjoint, so memcpy @@ -1218,7 +1218,7 @@ Py_ssize_t newlength; size_t newbytes; /* Be careful here about overflow */ - if ((newlength = self->ob_size + n) <= 0 || + if ((newlength = Py_Size(self) + n) <= 0 || (newbytes = newlength * itemsize) / itemsize != (size_t)newlength) goto nomem; @@ -1229,15 +1229,15 @@ return NULL; } self->ob_item = item; - self->ob_size += n; - self->allocated = self->ob_size; - nread = fread(item + (self->ob_size - n) * itemsize, + Py_Size(self) += n; + self->allocated = Py_Size(self); + nread = fread(item + (Py_Size(self) - n) * itemsize, itemsize, n, fp); if (nread < (size_t)n) { - self->ob_size -= (n - nread); - PyMem_RESIZE(item, char, self->ob_size*itemsize); + Py_Size(self) -= (n - nread); + PyMem_RESIZE(item, char, Py_Size(self)*itemsize); self->ob_item = item; - self->allocated = self->ob_size; + self->allocated = Py_Size(self); PyErr_SetString(PyExc_EOFError, "not enough items in file"); return NULL; @@ -1297,23 +1297,23 @@ if (n > 0) { char *item = self->ob_item; Py_ssize_t i; - PyMem_RESIZE(item, char, (self->ob_size + n) * itemsize); + PyMem_RESIZE(item, char, (Py_Size(self) + n) * itemsize); if (item == NULL) { PyErr_NoMemory(); return NULL; } self->ob_item = item; - self->ob_size += n; - self->allocated = self->ob_size; + Py_Size(self) += n; + self->allocated = Py_Size(self); for (i = 0; i < n; i++) { PyObject *v = PyList_GetItem(list, i); if ((*self->ob_descr->setitem)(self, - self->ob_size - n + i, v) != 0) { - self->ob_size -= n; + Py_Size(self) - n + i, v) != 0) { + Py_Size(self) -= n; PyMem_RESIZE(item, char, - self->ob_size * itemsize); + Py_Size(self) * itemsize); self->ob_item = item; - self->allocated = self->ob_size; + self->allocated = Py_Size(self); return NULL; } } @@ -1331,12 +1331,12 @@ static PyObject * array_tolist(arrayobject *self, PyObject *unused) { - PyObject *list = PyList_New(self->ob_size); + PyObject *list = PyList_New(Py_Size(self)); Py_ssize_t i; if (list == NULL) return NULL; - for (i = 0; i < self->ob_size; i++) { + for (i = 0; i < Py_Size(self); i++) { PyObject *v = getarrayitem((PyObject *)self, i); if (v == NULL) { Py_DECREF(list); @@ -1369,15 +1369,15 @@ n = n / itemsize; if (n > 0) { char *item = self->ob_item; - PyMem_RESIZE(item, char, (self->ob_size + n) * itemsize); + PyMem_RESIZE(item, char, (Py_Size(self) + n) * itemsize); if (item == NULL) { PyErr_NoMemory(); return NULL; } self->ob_item = item; - self->ob_size += n; - self->allocated = self->ob_size; - memcpy(item + (self->ob_size - n) * itemsize, + Py_Size(self) += n; + self->allocated = Py_Size(self); + memcpy(item + (Py_Size(self) - n) * itemsize, str, itemsize*n); } Py_INCREF(Py_None); @@ -1395,7 +1395,7 @@ array_tostring(arrayobject *self, PyObject *unused) { return PyString_FromStringAndSize(self->ob_item, - self->ob_size * self->ob_descr->itemsize); + Py_Size(self) * self->ob_descr->itemsize); } PyDoc_STRVAR(tostring_doc, @@ -1423,15 +1423,15 @@ } if (n > 0) { Py_UNICODE *item = (Py_UNICODE *) self->ob_item; - PyMem_RESIZE(item, Py_UNICODE, self->ob_size + n); + PyMem_RESIZE(item, Py_UNICODE, Py_Size(self) + n); if (item == NULL) { PyErr_NoMemory(); return NULL; } self->ob_item = (char *) item; - self->ob_size += n; - self->allocated = self->ob_size; - memcpy(item + self->ob_size - n, + Py_Size(self) += n; + self->allocated = Py_Size(self); + memcpy(item + Py_Size(self) - n, ustr, n * sizeof(Py_UNICODE)); } @@ -1456,7 +1456,7 @@ "tounicode() may only be called on type 'u' arrays"); return NULL; } - return PyUnicode_FromUnicode((Py_UNICODE *) self->ob_item, self->ob_size); + return PyUnicode_FromUnicode((Py_UNICODE *) self->ob_item, Py_Size(self)); } PyDoc_STRVAR(tounicode_doc, @@ -1554,7 +1554,7 @@ PyObject *s, *t, *v = NULL; Py_ssize_t len; - len = a->ob_size; + len = Py_Size(a); typecode = a->ob_descr->typecode; if (len == 0) { PyOS_snprintf(buf, sizeof(buf), "array('%c')", typecode); @@ -1588,7 +1588,7 @@ return NULL; } if (i < 0) - i += self->ob_size; + i += Py_Size(self); return array_item(self, i); } else if (PySlice_Check(item)) { @@ -1597,7 +1597,7 @@ arrayobject* ar; int itemsize = self->ob_descr->itemsize; - if (PySlice_GetIndicesEx((PySliceObject*)item, self->ob_size, + if (PySlice_GetIndicesEx((PySliceObject*)item, Py_Size(self), &start, &stop, &step, &slicelength) < 0) { return NULL; } @@ -1605,6 +1605,16 @@ if (slicelength <= 0) { return newarrayobject(&Arraytype, 0, self->ob_descr); } + else if (step == 1) { + PyObject *result = newarrayobject(&Arraytype, + slicelength, self->ob_descr); + if (result == NULL) + return NULL; + memcpy(((arrayobject *)result)->ob_item, + self->ob_item + start * itemsize, + slicelength * itemsize); + return result; + } else { result = newarrayobject(&Arraytype, slicelength, self->ob_descr); if (!result) return NULL; @@ -1623,7 +1633,7 @@ } else { PyErr_SetString(PyExc_TypeError, - "list indices must be integers"); + "array indices must be integers"); return NULL; } } @@ -1631,112 +1641,146 @@ static int array_ass_subscr(arrayobject* self, PyObject* item, PyObject* value) { + Py_ssize_t start, stop, step, slicelength, needed; + arrayobject* other; + int itemsize; + if (PyIndex_Check(item)) { Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); - if (i==-1 && PyErr_Occurred()) + + if (i == -1 && PyErr_Occurred()) return -1; if (i < 0) - i += self->ob_size; - return array_ass_item(self, i, value); - } - else if (PySlice_Check(item)) { - Py_ssize_t start, stop, step, slicelength; - int itemsize = self->ob_descr->itemsize; - - if (PySlice_GetIndicesEx((PySliceObject*)item, self->ob_size, - &start, &stop, &step, &slicelength) < 0) { + i += Py_Size(self); + if (i < 0 || i >= Py_Size(self)) { + PyErr_SetString(PyExc_IndexError, + "array assignment index out of range"); return -1; } - - /* treat A[slice(a,b)] = v _exactly_ like A[a:b] = v */ - if (step == 1 && ((PySliceObject*)item)->step == Py_None) - return array_ass_slice(self, start, stop, value); - if (value == NULL) { - /* delete slice */ - Py_ssize_t cur, i, extra; - - if (slicelength <= 0) - return 0; - - if (step < 0) { - stop = start + 1; - start = stop + step*(slicelength - 1) - 1; - step = -step; - } - - for (cur = start, i = 0; i < slicelength - 1; - cur += step, i++) { - memmove(self->ob_item + (cur - i)*itemsize, - self->ob_item + (cur + 1)*itemsize, - (step - 1) * itemsize); - } - extra = self->ob_size - (cur + 1); - if (extra > 0) { - memmove(self->ob_item + (cur - i)*itemsize, - self->ob_item + (cur + 1)*itemsize, - extra*itemsize); - } - - self->ob_size -= slicelength; - self->ob_item = (char *)PyMem_REALLOC(self->ob_item, - itemsize*self->ob_size); - self->allocated = self->ob_size; - - return 0; + /* Fall through to slice assignment */ + start = i; + stop = i + 1; + step = 1; + slicelength = 1; } - else { - /* assign slice */ - Py_ssize_t cur, i; - arrayobject* av; - - if (!array_Check(value)) { - PyErr_Format(PyExc_TypeError, - "must assign array (not \"%.200s\") to slice", - value->ob_type->tp_name); - return -1; - } - - av = (arrayobject*)value; - - if (av->ob_size != slicelength) { - PyErr_Format(PyExc_ValueError, - "attempt to assign array of size %ld to extended slice of size %ld", - /*XXX*/(long)av->ob_size, /*XXX*/(long)slicelength); + else + return (*self->ob_descr->setitem)(self, i, value); + } + else if (PySlice_Check(item)) { + if (PySlice_GetIndicesEx((PySliceObject *)item, + Py_Size(self), &start, &stop, + &step, &slicelength) < 0) { + return -1; + } + } + else { + PyErr_SetString(PyExc_TypeError, + "array indices must be integer"); + return -1; + } + if (value == NULL) { + other = NULL; + needed = 0; + } + else if (array_Check(value)) { + other = (arrayobject *)value; + needed = Py_Size(other); + if (self == other) { + /* Special case "self[i:j] = self" -- copy self first */ + int ret; + value = array_slice(other, 0, needed); + if (value == NULL) return -1; - } - - if (!slicelength) - return 0; - - /* protect against a[::-1] = a */ - if (self == av) { - value = array_slice(av, 0, av->ob_size); - av = (arrayobject*)value; - if (!av) - return -1; - } - else { - Py_INCREF(value); - } - - for (cur = start, i = 0; i < slicelength; - cur += step, i++) { - memcpy(self->ob_item + cur*itemsize, - av->ob_item + i*itemsize, - itemsize); - } - + ret = array_ass_subscr(self, item, value); Py_DECREF(value); - - return 0; + return ret; + } + if (other->ob_descr != self->ob_descr) { + PyErr_BadArgument(); + return -1; } - } + } else { - PyErr_SetString(PyExc_TypeError, - "list indices must be integers"); + PyErr_Format(PyExc_TypeError, + "can only assign array (not \"%.200s\") to array slice", + Py_Type(value)->tp_name); return -1; } + itemsize = self->ob_descr->itemsize; + /* for 'a[2:1] = ...', the insertion point is 'start', not 'stop' */ + if ((step > 0 && stop < start) || + (step < 0 && stop > start)) + stop = start; + if (step == 1) { + if (slicelength > needed) { + memmove(self->ob_item + (start + needed) * itemsize, + self->ob_item + stop * itemsize, + (Py_Size(self) - stop) * itemsize); + if (array_resize(self, Py_Size(self) + + needed - slicelength) < 0) + return -1; + } + else if (slicelength < needed) { + if (array_resize(self, Py_Size(self) + + needed - slicelength) < 0) + return -1; + memmove(self->ob_item + (start + needed) * itemsize, + self->ob_item + stop * itemsize, + (Py_Size(self) - start - needed) * itemsize); + } + if (needed > 0) + memcpy(self->ob_item + start * itemsize, + other->ob_item, needed * itemsize); + return 0; + } + else if (needed == 0) { + /* Delete slice */ + Py_ssize_t cur, i; + + if (step < 0) { + stop = start + 1; + start = stop + step * (slicelength - 1) - 1; + step = -step; + } + for (cur = start, i = 0; i < slicelength; + cur += step, i++) { + Py_ssize_t lim = step - 1; + + if (cur + step >= Py_Size(self)) + lim = Py_Size(self) - cur - 1; + memmove(self->ob_item + (cur - i) * itemsize, + self->ob_item + (cur + 1) * itemsize, + lim * itemsize); + } + cur = start + slicelength * step; + if (cur < Py_Size(self)) { + memmove(self->ob_item + (cur-slicelength) * itemsize, + self->ob_item + cur * itemsize, + (Py_Size(self) - cur) * itemsize); + } + if (array_resize(self, Py_Size(self) - slicelength) < 0) + return -1; + return 0; + } + else { + Py_ssize_t cur, i; + + if (needed != slicelength) { + PyErr_Format(PyExc_ValueError, + "attempt to assign array of size %zd " + "to extended slice of size %zd", + needed, slicelength); + return -1; + } + for (cur = start, i = 0; i < slicelength; + cur += step, i++) { + memcpy(self->ob_item + cur * itemsize, + other->ob_item + i * itemsize, + itemsize); + } + return 0; + } } static PyMappingMethods array_as_mapping = { @@ -1758,7 +1802,7 @@ *ptr = (void *)self->ob_item; if (*ptr == NULL) *ptr = emptybuf; - return self->ob_size*self->ob_descr->itemsize; + return Py_Size(self)*self->ob_descr->itemsize; } static Py_ssize_t @@ -1772,14 +1816,14 @@ *ptr = (void *)self->ob_item; if (*ptr == NULL) *ptr = emptybuf; - return self->ob_size*self->ob_descr->itemsize; + return Py_Size(self)*self->ob_descr->itemsize; } static Py_ssize_t array_buffer_getsegcount(arrayobject *self, Py_ssize_t *lenp) { if ( lenp ) - *lenp = self->ob_size*self->ob_descr->itemsize; + *lenp = Py_Size(self)*self->ob_descr->itemsize; return 1; } @@ -1888,9 +1932,9 @@ return NULL; } self->ob_item = item; - self->ob_size = n / sizeof(Py_UNICODE); + Py_Size(self) = n / sizeof(Py_UNICODE); memcpy(item, PyUnicode_AS_DATA(initial), n); - self->allocated = self->ob_size; + self->allocated = Py_Size(self); } #endif } @@ -1978,8 +2022,7 @@ static PyObject *array_iter(arrayobject *ao); static PyTypeObject Arraytype = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "array.array", sizeof(arrayobject), 0, @@ -2060,7 +2103,7 @@ arrayiter_next(arrayiterobject *it) { assert(PyArrayIter_Check(it)); - if (it->index < it->ao->ob_size) + if (it->index < Py_Size(it->ao)) return (*it->getitem)(it->ao, it->index++); return NULL; } @@ -2081,8 +2124,7 @@ } static PyTypeObject PyArrayIter_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "arrayiterator", /* tp_name */ sizeof(arrayiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/bz2module.c ============================================================================== --- python/branches/bcannon-objcap/Modules/bz2module.c (original) +++ python/branches/bcannon-objcap/Modules/bz2module.c Thu Sep 6 21:35:45 2007 @@ -41,7 +41,7 @@ #define MODE_READ_EOF 2 #define MODE_WRITE 3 -#define BZ2FileObject_Check(v) ((v)->ob_type == &BZ2File_Type) +#define BZ2FileObject_Check(v) (Py_Type(v) == &BZ2File_Type) #ifdef BZ_CONFIG_ERROR @@ -1431,7 +1431,7 @@ } Util_DropReadAhead(self); Py_XDECREF(self->file); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } /* This is a hacked version of Python's fileobject.c:file_getiter(). */ @@ -1493,8 +1493,7 @@ ; static PyTypeObject BZ2File_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "bz2.BZ2File", /*tp_name*/ sizeof(BZ2FileObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -1748,7 +1747,7 @@ PyThread_free_lock(self->lock); #endif BZ2_bzCompressEnd(&self->bzs); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } @@ -1765,8 +1764,7 @@ "); static PyTypeObject BZ2Comp_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "bz2.BZ2Compressor", /*tp_name*/ sizeof(BZ2CompObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -1971,7 +1969,7 @@ #endif Py_XDECREF(self->unused_data); BZ2_bzDecompressEnd(&self->bzs); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } @@ -1987,8 +1985,7 @@ "); static PyTypeObject BZ2Decomp_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "bz2.BZ2Decompressor", /*tp_name*/ sizeof(BZ2DecompObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -2222,9 +2219,9 @@ { PyObject *m; - BZ2File_Type.ob_type = &PyType_Type; - BZ2Comp_Type.ob_type = &PyType_Type; - BZ2Decomp_Type.ob_type = &PyType_Type; + Py_Type(&BZ2File_Type) = &PyType_Type; + Py_Type(&BZ2Comp_Type) = &PyType_Type; + Py_Type(&BZ2Decomp_Type) = &PyType_Type; m = Py_InitModule3("bz2", bz2_methods, bz2__doc__); if (m == NULL) Modified: python/branches/bcannon-objcap/Modules/cPickle.c ============================================================================== --- python/branches/bcannon-objcap/Modules/cPickle.c (original) +++ python/branches/bcannon-objcap/Modules/cPickle.c Thu Sep 6 21:35:45 2007 @@ -151,12 +151,12 @@ } static PyTypeObject PdataType = { - PyObject_HEAD_INIT(NULL) 0, "cPickle.Pdata", sizeof(Pdata), 0, + PyVarObject_HEAD_INIT(NULL, 0) "cPickle.Pdata", sizeof(Pdata), 0, (destructor)Pdata_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0L,0L,0L,0L, "" }; -#define Pdata_Check(O) ((O)->ob_type == &PdataType) +#define Pdata_Check(O) (Py_Type(O) == &PdataType) static PyObject * Pdata_New(void) @@ -316,7 +316,7 @@ } #define FREE_ARG_TUP(self) { \ - if (self->arg->ob_refcnt > 1) { \ + if (Py_Refcnt(self->arg) > 1) { \ Py_DECREF(self->arg); \ self->arg=NULL; \ } \ @@ -752,7 +752,7 @@ static int put(Picklerobject *self, PyObject *ob) { - if (ob->ob_refcnt < 2 || self->fast) + if (Py_Refcnt(ob) < 2 || self->fast) return 0; return put2(self, ob); @@ -916,7 +916,7 @@ PyErr_Format(PyExc_ValueError, "fast mode: can't pickle cyclic objects " "including object type %s at %p", - obj->ob_type->tp_name, obj); + Py_Type(obj)->tp_name, obj); self->fast_container = -1; return 0; } @@ -2320,7 +2320,7 @@ goto finally; } - type = args->ob_type; + type = Py_Type(args); switch (type->tp_name[0]) { case 'b': @@ -2372,7 +2372,7 @@ #endif } - if (args->ob_refcnt > 1) { + if (Py_Refcnt(args) > 1) { if (!( py_ob_id = PyLong_FromVoidPtr(args))) goto finally; @@ -2913,7 +2913,7 @@ Py_XDECREF(self->inst_pers_func); Py_XDECREF(self->dispatch_table); PyMem_Free(self->write_buf); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -3037,8 +3037,7 @@ "Objects that know how to pickle objects\n"); static PyTypeObject Picklertype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "cPickle.Pickler", /*tp_name*/ sizeof(Picklerobject), /*tp_basicsize*/ 0, @@ -5254,7 +5253,7 @@ free(self->buf); } - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -5483,8 +5482,7 @@ "Objects that know how to unpickle"); static PyTypeObject Unpicklertype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "cPickle.Unpickler", /*tp_name*/ sizeof(Unpicklerobject), /*tp_basicsize*/ 0, @@ -5708,9 +5706,9 @@ PyObject *format_version; PyObject *compatible_formats; - Picklertype.ob_type = &PyType_Type; - Unpicklertype.ob_type = &PyType_Type; - PdataType.ob_type = &PyType_Type; + Py_Type(&Picklertype) = &PyType_Type; + Py_Type(&Unpicklertype) = &PyType_Type; + Py_Type(&PdataType) = &PyType_Type; /* Initialize some pieces. We need to do this before module creation, * so we're forced to use a temporary dictionary. :( Modified: python/branches/bcannon-objcap/Modules/cStringIO.c ============================================================================== --- python/branches/bcannon-objcap/Modules/cStringIO.c (original) +++ python/branches/bcannon-objcap/Modules/cStringIO.c Thu Sep 6 21:35:45 2007 @@ -514,8 +514,7 @@ PyDoc_STRVAR(Otype__doc__, "Simple type for output to strings."); static PyTypeObject Otype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "cStringIO.StringO", /*tp_name*/ sizeof(Oobject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -635,8 +634,7 @@ "Simple type for treating strings as input file streams"); static PyTypeObject Itype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "cStringIO.StringI", /*tp_name*/ sizeof(Iobject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -675,8 +673,11 @@ char *buf; Py_ssize_t size; - if (PyObject_AsCharBuffer(s, (const char **)&buf, &size) != 0) - return NULL; + if (PyObject_AsReadBuffer(s, (const void **)&buf, &size)) { + PyErr_Format(PyExc_TypeError, "expected read buffer, %.200s found", + s->ob_type->tp_name); + return NULL; + } self = PyObject_New(Iobject, &Itype); if (!self) return NULL; @@ -746,8 +747,8 @@ d = PyModule_GetDict(m); /* Export C API */ - Itype.ob_type=&PyType_Type; - Otype.ob_type=&PyType_Type; + Py_Type(&Itype)=&PyType_Type; + Py_Type(&Otype)=&PyType_Type; if (PyType_Ready(&Otype) < 0) return; if (PyType_Ready(&Itype) < 0) return; PyDict_SetItemString(d,"cStringIO_CAPI", Modified: python/branches/bcannon-objcap/Modules/cjkcodecs/_codecs_cn.c ============================================================================== --- python/branches/bcannon-objcap/Modules/cjkcodecs/_codecs_cn.c (original) +++ python/branches/bcannon-objcap/Modules/cjkcodecs/_codecs_cn.c Thu Sep 6 21:35:45 2007 @@ -197,6 +197,7 @@ REQUIRE_OUTBUF(2) GBK_ENCODE(c, code) + else TRYMAP_ENC(gb18030ext, code, c); else { const struct _gb18030_to_unibmp_ranges *utrrange; Modified: python/branches/bcannon-objcap/Modules/cjkcodecs/_codecs_kr.c ============================================================================== --- python/branches/bcannon-objcap/Modules/cjkcodecs/_codecs_kr.c (original) +++ python/branches/bcannon-objcap/Modules/cjkcodecs/_codecs_kr.c Thu Sep 6 21:35:45 2007 @@ -11,6 +11,26 @@ * EUC-KR codec */ +#define EUCKR_JAMO_FIRSTBYTE 0xA4 +#define EUCKR_JAMO_FILLER 0xD4 + +static const unsigned char u2cgk_choseong[19] = { + 0xa1, 0xa2, 0xa4, 0xa7, 0xa8, 0xa9, 0xb1, 0xb2, + 0xb3, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, + 0xbc, 0xbd, 0xbe +}; +static const unsigned char u2cgk_jungseong[21] = { + 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, + 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, + 0xcf, 0xd0, 0xd1, 0xd2, 0xd3 +}; +static const unsigned char u2cgk_jongseong[28] = { + 0xd4, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, + 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xba, + 0xbb, 0xbc, 0xbd, 0xbe +}; + ENCODER(euc_kr) { while (inleft > 0) { @@ -28,17 +48,57 @@ TRYMAP_ENC(cp949, code, c); else return 1; - if (code & 0x8000) /* MSB set: CP949 */ - return 1; + if ((code & 0x8000) == 0) { + /* KS X 1001 coded character */ + OUT1((code >> 8) | 0x80) + OUT2((code & 0xFF) | 0x80) + NEXT(1, 2) + } + else { /* Mapping is found in CP949 extension, + * but we encode it in KS X 1001:1998 Annex 3, + * make-up sequence for EUC-KR. */ + + REQUIRE_OUTBUF(8) + + /* syllable composition precedence */ + OUT1(EUCKR_JAMO_FIRSTBYTE) + OUT2(EUCKR_JAMO_FILLER) + + /* All codepoints in CP949 extension are in unicode + * Hangul Syllable area. */ + assert(0xac00 <= c && c <= 0xd7a3); + c -= 0xac00; - OUT1((code >> 8) | 0x80) - OUT2((code & 0xFF) | 0x80) - NEXT(1, 2) + OUT3(EUCKR_JAMO_FIRSTBYTE) + OUT4(u2cgk_choseong[c / 588]) + NEXT_OUT(4) + + OUT1(EUCKR_JAMO_FIRSTBYTE) + OUT2(u2cgk_jungseong[(c / 28) % 21]) + OUT3(EUCKR_JAMO_FIRSTBYTE) + OUT4(u2cgk_jongseong[c % 28]) + NEXT(1, 4) + } } return 0; } +#define NONE 127 + +static const unsigned char cgk2u_choseong[] = { /* [A1, BE] */ + 0, 1, NONE, 2, NONE, NONE, 3, 4, + 5, NONE, NONE, NONE, NONE, NONE, NONE, NONE, + 6, 7, 8, NONE, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18 +}; +static const unsigned char cgk2u_jongseong[] = { /* [A1, BE] */ + 1, 2, 3, 4, 5, 6, 7, NONE, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, NONE, 18, 19, 20, 21, 22, + NONE, 23, 24, 25, 26, 27 +}; + DECODER(euc_kr) { while (inleft > 0) { @@ -54,13 +114,50 @@ REQUIRE_INBUF(2) - TRYMAP_DEC(ksx1001, **outbuf, c ^ 0x80, IN2 ^ 0x80) { + if (c == EUCKR_JAMO_FIRSTBYTE && + IN2 == EUCKR_JAMO_FILLER) { + /* KS X 1001:1998 Annex 3 make-up sequence */ + DBCHAR cho, jung, jong; + + REQUIRE_INBUF(8) + if ((*inbuf)[2] != EUCKR_JAMO_FIRSTBYTE || + (*inbuf)[4] != EUCKR_JAMO_FIRSTBYTE || + (*inbuf)[6] != EUCKR_JAMO_FIRSTBYTE) + return 8; + + c = (*inbuf)[3]; + if (0xa1 <= c && c <= 0xbe) + cho = cgk2u_choseong[c - 0xa1]; + else + cho = NONE; + + c = (*inbuf)[5]; + jung = (0xbf <= c && c <= 0xd3) ? c - 0xbf : NONE; + + c = (*inbuf)[7]; + if (c == EUCKR_JAMO_FILLER) + jong = 0; + else if (0xa1 <= c && c <= 0xbe) + jong = cgk2u_jongseong[c - 0xa1]; + else + jong = NONE; + + if (cho == NONE || jung == NONE || jong == NONE) + return 8; + + OUT1(0xac00 + cho*588 + jung*28 + jong); + NEXT(8, 1) + } + else TRYMAP_DEC(ksx1001, **outbuf, c ^ 0x80, IN2 ^ 0x80) { NEXT(2, 1) - } else return 2; + } + else + return 2; } return 0; } +#undef NONE /* Modified: python/branches/bcannon-objcap/Modules/cjkcodecs/multibytecodec.c ============================================================================== --- python/branches/bcannon-objcap/Modules/cjkcodecs/multibytecodec.c (original) +++ python/branches/bcannon-objcap/Modules/cjkcodecs/multibytecodec.c Thu Sep 6 21:35:45 2007 @@ -670,8 +670,7 @@ } static PyTypeObject MultibyteCodec_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "MultibyteCodec", /* tp_name */ sizeof(MultibyteCodecObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -946,12 +945,11 @@ { PyObject_GC_UnTrack(self); ERROR_DECREF(self->errors); - self->ob_type->tp_free(self); + Py_Type(self)->tp_free(self); } static PyTypeObject MultibyteIncrementalEncoder_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "MultibyteIncrementalEncoder", /* tp_name */ sizeof(MultibyteIncrementalEncoderObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1147,12 +1145,11 @@ { PyObject_GC_UnTrack(self); ERROR_DECREF(self->errors); - self->ob_type->tp_free(self); + Py_Type(self)->tp_free(self); } static PyTypeObject MultibyteIncrementalDecoder_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "MultibyteIncrementalDecoder", /* tp_name */ sizeof(MultibyteIncrementalDecoderObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1464,12 +1461,11 @@ PyObject_GC_UnTrack(self); ERROR_DECREF(self->errors); Py_DECREF(self->stream); - self->ob_type->tp_free(self); + Py_Type(self)->tp_free(self); } static PyTypeObject MultibyteStreamReader_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "MultibyteStreamReader", /* tp_name */ sizeof(MultibyteStreamReaderObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1667,7 +1663,7 @@ PyObject_GC_UnTrack(self); ERROR_DECREF(self->errors); Py_DECREF(self->stream); - self->ob_type->tp_free(self); + Py_Type(self)->tp_free(self); } static struct PyMethodDef mbstreamwriter_methods[] = { @@ -1688,8 +1684,7 @@ }; static PyTypeObject MultibyteStreamWriter_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "MultibyteStreamWriter", /* tp_name */ sizeof(MultibyteStreamWriterObject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/datetimemodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/datetimemodule.c (original) +++ python/branches/bcannon-objcap/Modules/datetimemodule.c Thu Sep 6 21:35:45 2007 @@ -764,7 +764,7 @@ PyErr_Format(PyExc_TypeError, "tzinfo argument must be None or of a tzinfo subclass, " "not type '%s'", - p->ob_type->tp_name); + Py_Type(p)->tp_name); return -1; } @@ -855,7 +855,7 @@ PyErr_Format(PyExc_TypeError, "tzinfo.%s() must return None or " "timedelta, not '%s'", - name, u->ob_type->tp_name); + name, Py_Type(u)->tp_name); } Py_DECREF(u); @@ -948,7 +948,7 @@ if (result != NULL && result != Py_None && ! PyString_Check(result)) { PyErr_Format(PyExc_TypeError, "tzinfo.tzname() must " "return None or a string, not '%s'", - result->ob_type->tp_name); + Py_Type(result)->tp_name); Py_DECREF(result); result = NULL; } @@ -1421,7 +1421,7 @@ { PyErr_Format(PyExc_TypeError, "can't compare %s to %s", - a->ob_type->tp_name, b->ob_type->tp_name); + Py_Type(a)->tp_name, Py_Type(b)->tp_name); return NULL; } @@ -1876,7 +1876,7 @@ PyErr_Format(PyExc_TypeError, "unsupported type for timedelta %s component: %s", - tag, num->ob_type->tp_name); + tag, Py_Type(num)->tp_name); return NULL; } @@ -1980,18 +1980,18 @@ { if (GET_TD_MICROSECONDS(self) != 0) return PyString_FromFormat("%s(%d, %d, %d)", - self->ob_type->tp_name, + Py_Type(self)->tp_name, GET_TD_DAYS(self), GET_TD_SECONDS(self), GET_TD_MICROSECONDS(self)); if (GET_TD_SECONDS(self) != 0) return PyString_FromFormat("%s(%d, %d)", - self->ob_type->tp_name, + Py_Type(self)->tp_name, GET_TD_DAYS(self), GET_TD_SECONDS(self)); return PyString_FromFormat("%s(%d)", - self->ob_type->tp_name, + Py_Type(self)->tp_name, GET_TD_DAYS(self)); } @@ -2055,7 +2055,7 @@ static PyObject * delta_reduce(PyDateTime_Delta* self) { - return Py_BuildValue("ON", self->ob_type, delta_getstate(self)); + return Py_BuildValue("ON", Py_Type(self), delta_getstate(self)); } #define OFFSET(field) offsetof(PyDateTime_Delta, field) @@ -2125,8 +2125,7 @@ }; static PyTypeObject PyDateTime_DeltaType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "datetime.timedelta", /* tp_name */ sizeof(PyDateTime_Delta), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2415,7 +2414,7 @@ char buffer[1028]; const char *type_name; - type_name = self->ob_type->tp_name; + type_name = Py_Type(self)->tp_name; PyOS_snprintf(buffer, sizeof(buffer), "%s(%d, %d, %d)", type_name, GET_YEAR(self), GET_MONTH(self), GET_DAY(self)); @@ -2555,7 +2554,7 @@ tuple = Py_BuildValue("iii", year, month, day); if (tuple == NULL) return NULL; - clone = date_new(self->ob_type, tuple, NULL); + clone = date_new(Py_Type(self), tuple, NULL); Py_DECREF(tuple); return clone; } @@ -2605,7 +2604,7 @@ static PyObject * date_reduce(PyDateTime_Date *self, PyObject *arg) { - return Py_BuildValue("(ON)", self->ob_type, date_getstate(self)); + return Py_BuildValue("(ON)", Py_Type(self), date_getstate(self)); } static PyMethodDef date_methods[] = { @@ -2683,8 +2682,7 @@ }; static PyTypeObject PyDateTime_DateType = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "datetime.date", /* tp_name */ sizeof(PyDateTime_Date), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2908,10 +2906,10 @@ if (state == Py_None) { Py_DECREF(state); - return Py_BuildValue("(ON)", self->ob_type, args); + return Py_BuildValue("(ON)", Py_Type(self), args); } else - return Py_BuildValue("(ONN)", self->ob_type, args, state); + return Py_BuildValue("(ONN)", Py_Type(self), args, state); } static PyMethodDef tzinfo_methods[] = { @@ -3106,7 +3104,7 @@ if (HASTZINFO(self)) { Py_XDECREF(self->tzinfo); } - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } /* @@ -3140,7 +3138,7 @@ time_repr(PyDateTime_Time *self) { char buffer[100]; - const char *type_name = self->ob_type->tp_name; + const char *type_name = Py_Type(self)->tp_name; int h = TIME_GET_HOUR(self); int m = TIME_GET_MINUTE(self); int s = TIME_GET_SECOND(self); @@ -3354,7 +3352,7 @@ tuple = Py_BuildValue("iiiiO", hh, mm, ss, us, tzinfo); if (tuple == NULL) return NULL; - clone = time_new(self->ob_type, tuple, NULL); + clone = time_new(Py_Type(self), tuple, NULL); Py_DECREF(tuple); return clone; } @@ -3408,7 +3406,7 @@ static PyObject * time_reduce(PyDateTime_Time *self, PyObject *arg) { - return Py_BuildValue("(ON)", self->ob_type, time_getstate(self)); + return Py_BuildValue("(ON)", Py_Type(self), time_getstate(self)); } static PyMethodDef time_methods[] = { @@ -3902,7 +3900,7 @@ if (HASTZINFO(self)) { Py_XDECREF(self->tzinfo); } - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } /* @@ -4051,7 +4049,7 @@ datetime_repr(PyDateTime_DateTime *self) { char buffer[1000]; - const char *type_name = self->ob_type->tp_name; + const char *type_name = Py_Type(self)->tp_name; PyObject *baserepr; if (DATE_GET_MICROSECOND(self)) { @@ -4272,7 +4270,7 @@ tuple = Py_BuildValue("iiiiiiiO", y, m, d, hh, mm, ss, us, tzinfo); if (tuple == NULL) return NULL; - clone = datetime_new(self->ob_type, tuple, NULL); + clone = datetime_new(Py_Type(self), tuple, NULL); Py_DECREF(tuple); return clone; } @@ -4460,7 +4458,7 @@ static PyObject * datetime_reduce(PyDateTime_DateTime *self, PyObject *arg) { - return Py_BuildValue("(ON)", self->ob_type, datetime_getstate(self)); + return Py_BuildValue("(ON)", Py_Type(self), datetime_getstate(self)); } static PyMethodDef datetime_methods[] = { Modified: python/branches/bcannon-objcap/Modules/dbmmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/dbmmodule.c (original) +++ python/branches/bcannon-objcap/Modules/dbmmodule.c Thu Sep 6 21:35:45 2007 @@ -36,7 +36,7 @@ static PyTypeObject Dbmtype; -#define is_dbmobject(v) ((v)->ob_type == &Dbmtype) +#define is_dbmobject(v) (Py_Type(v) == &Dbmtype) #define check_dbmobject_open(v) if ((v)->di_dbm == NULL) \ { PyErr_SetString(DbmError, "DBM object has already been closed"); \ return NULL; } @@ -302,8 +302,7 @@ } static PyTypeObject Dbmtype = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "dbm.dbm", sizeof(dbmobject), 0, Modified: python/branches/bcannon-objcap/Modules/dlmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/dlmodule.c (original) +++ python/branches/bcannon-objcap/Modules/dlmodule.c Thu Sep 6 21:35:45 2007 @@ -62,7 +62,7 @@ name = PyString_AS_STRING(args); } else { PyErr_Format(PyExc_TypeError, "expected string, found %.200s", - args->ob_type->tp_name); + Py_Type(args)->tp_name); return NULL; } func = dlsym(xp->dl_handle, name); @@ -141,8 +141,7 @@ static PyTypeObject Dltype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "dl.dl", /*tp_name*/ sizeof(dlobject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -237,7 +236,7 @@ PyObject *m, *d, *x; /* Initialize object type */ - Dltype.ob_type = &PyType_Type; + Py_Type(&Dltype) = &PyType_Type; /* Create the module and add the functions */ m = Py_InitModule("dl", dl_methods); Modified: python/branches/bcannon-objcap/Modules/gcmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/gcmodule.c (original) +++ python/branches/bcannon-objcap/Modules/gcmodule.c Thu Sep 6 21:35:45 2007 @@ -239,7 +239,7 @@ PyGC_Head *gc = containers->gc.gc_next; for (; gc != containers; gc = gc->gc.gc_next) { assert(gc->gc.gc_refs == GC_REACHABLE); - gc->gc.gc_refs = FROM_GC(gc)->ob_refcnt; + gc->gc.gc_refs = Py_Refcnt(FROM_GC(gc)); /* Python's cyclic gc should never see an incoming refcount * of 0: if something decref'ed to 0, it should have been * deallocated immediately at that time. @@ -291,7 +291,7 @@ traverseproc traverse; PyGC_Head *gc = containers->gc.gc_next; for (; gc != containers; gc=gc->gc.gc_next) { - traverse = FROM_GC(gc)->ob_type->tp_traverse; + traverse = Py_Type(FROM_GC(gc))->tp_traverse; (void) traverse(FROM_GC(gc), (visitproc)visit_decref, NULL); @@ -376,7 +376,7 @@ * the next object to visit. */ PyObject *op = FROM_GC(gc); - traverseproc traverse = op->ob_type->tp_traverse; + traverseproc traverse = Py_Type(op)->tp_traverse; assert(gc->gc.gc_refs > 0); gc->gc.gc_refs = GC_REACHABLE; (void) traverse(op, @@ -472,7 +472,7 @@ PyGC_Head *gc = finalizers->gc.gc_next; for (; gc != finalizers; gc = gc->gc.gc_next) { /* Note that the finalizers list may grow during this. */ - traverse = FROM_GC(gc)->ob_type->tp_traverse; + traverse = Py_Type(FROM_GC(gc))->tp_traverse; (void) traverse(FROM_GC(gc), (visitproc)visit_move, (void *)finalizers); @@ -517,7 +517,7 @@ assert(IS_TENTATIVELY_UNREACHABLE(op)); next = gc->gc.gc_next; - if (! PyType_SUPPORTS_WEAKREFS(op->ob_type)) + if (! PyType_SUPPORTS_WEAKREFS(Py_Type(op))) continue; /* It supports weakrefs. Does it have any? */ @@ -654,7 +654,7 @@ } else if (debug & DEBUG_OBJECTS) { PySys_WriteStderr("gc: %.100s <%.100s %p>\n", - msg, op->ob_type->tp_name, op); + msg, Py_Type(op)->tp_name, op); } } @@ -708,7 +708,7 @@ PyList_Append(garbage, op); } else { - if ((clear = op->ob_type->tp_clear) != NULL) { + if ((clear = Py_Type(op)->tp_clear) != NULL) { Py_INCREF(op); clear(op); Py_DECREF(op); @@ -1079,7 +1079,7 @@ traverseproc traverse; for (gc = list->gc.gc_next; gc != list; gc = gc->gc.gc_next) { obj = FROM_GC(gc); - traverse = obj->ob_type->tp_traverse; + traverse = Py_Type(obj)->tp_traverse; if (obj == objs || obj == resultlist) continue; if (traverse(obj, (visitproc)referrersvisit, objs)) { @@ -1136,7 +1136,7 @@ if (! PyObject_IS_GC(obj)) continue; - traverse = obj->ob_type->tp_traverse; + traverse = Py_Type(obj)->tp_traverse; if (! traverse) continue; if (traverse(obj, (visitproc)referentsvisit, result)) { @@ -1359,13 +1359,13 @@ PyVarObject * _PyObject_GC_Resize(PyVarObject *op, Py_ssize_t nitems) { - const size_t basicsize = _PyObject_VAR_SIZE(op->ob_type, nitems); + const size_t basicsize = _PyObject_VAR_SIZE(Py_Type(op), nitems); PyGC_Head *g = AS_GC(op); g = (PyGC_Head *)PyObject_REALLOC(g, sizeof(PyGC_Head) + basicsize); if (g == NULL) return (PyVarObject *)PyErr_NoMemory(); op = (PyVarObject *) FROM_GC(g); - op->ob_size = nitems; + Py_Size(op) = nitems; return op; } Modified: python/branches/bcannon-objcap/Modules/gdbmmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/gdbmmodule.c (original) +++ python/branches/bcannon-objcap/Modules/gdbmmodule.c Thu Sep 6 21:35:45 2007 @@ -36,7 +36,7 @@ static PyTypeObject Dbmtype; -#define is_dbmobject(v) ((v)->ob_type == &Dbmtype) +#define is_dbmobject(v) (Py_Type(v) == &Dbmtype) #define check_dbmobject_open(v) if ((v)->di_dbm == NULL) \ { PyErr_SetString(DbmError, "GDBM object has already been closed"); \ return NULL; } @@ -370,8 +370,7 @@ } static PyTypeObject Dbmtype = { - PyObject_HEAD_INIT(0) - 0, + PyVarObject_HEAD_INIT(0, 0) "gdbm.gdbm", sizeof(dbmobject), 0, Modified: python/branches/bcannon-objcap/Modules/itertoolsmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/itertoolsmodule.c (original) +++ python/branches/bcannon-objcap/Modules/itertoolsmodule.c Thu Sep 6 21:35:45 2007 @@ -59,7 +59,7 @@ Py_XDECREF(gbo->tgtkey); Py_XDECREF(gbo->currkey); Py_XDECREF(gbo->currvalue); - gbo->ob_type->tp_free(gbo); + Py_Type(gbo)->tp_free(gbo); } static int @@ -139,8 +139,7 @@ (key, sub-iterator) grouped by each value of key(value).\n"); static PyTypeObject groupby_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.groupby", /* tp_name */ sizeof(groupbyobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -261,8 +260,7 @@ } static PyTypeObject _grouper_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools._grouper", /* tp_name */ sizeof(_grouperobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -415,8 +413,7 @@ PyDoc_STRVAR(teedataobject_doc, "Data container common to multiple tee objects."); static PyTypeObject teedataobject_type = { - PyObject_HEAD_INIT(0) /* Must fill in type value later */ - 0, /* ob_size */ + PyVarObject_HEAD_INIT(0, 0) /* Must fill in type value later */ "itertools.tee_dataobject", /* tp_name */ sizeof(teedataobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -572,8 +569,7 @@ }; static PyTypeObject tee_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.tee", /* tp_name */ sizeof(teeobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -718,7 +714,7 @@ PyObject_GC_UnTrack(lz); Py_XDECREF(lz->saved); Py_XDECREF(lz->it); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -768,8 +764,7 @@ Then repeat the sequence indefinitely."); static PyTypeObject cycle_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.cycle", /* tp_name */ sizeof(cycleobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -862,7 +857,7 @@ PyObject_GC_UnTrack(lz); Py_XDECREF(lz->func); Py_XDECREF(lz->it); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -882,7 +877,7 @@ PyObject *(*iternext)(PyObject *); assert(PyIter_Check(it)); - iternext = *it->ob_type->tp_iternext; + iternext = *Py_Type(it)->tp_iternext; for (;;) { item = iternext(it); if (item == NULL) @@ -912,8 +907,7 @@ Afterwards, return every element until the iterable is exhausted."); static PyTypeObject dropwhile_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.dropwhile", /* tp_name */ sizeof(dropwhileobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1006,7 +1000,7 @@ PyObject_GC_UnTrack(lz); Py_XDECREF(lz->func); Py_XDECREF(lz->it); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -1028,7 +1022,7 @@ return NULL; assert(PyIter_Check(it)); - item = (*it->ob_type->tp_iternext)(it); + item = (*Py_Type(it)->tp_iternext)(it); if (item == NULL) return NULL; @@ -1053,8 +1047,7 @@ predicate evaluates to true for each entry."); static PyTypeObject takewhile_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.takewhile", /* tp_name */ sizeof(takewhileobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1197,7 +1190,7 @@ { PyObject_GC_UnTrack(lz); Py_XDECREF(lz->it); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -1216,7 +1209,7 @@ PyObject *(*iternext)(PyObject *); assert(PyIter_Check(it)); - iternext = *it->ob_type->tp_iternext; + iternext = *Py_Type(it)->tp_iternext; while (lz->cnt < lz->next) { item = iternext(it); if (item == NULL) @@ -1249,8 +1242,7 @@ but returns an iterator."); static PyTypeObject islice_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.islice", /* tp_name */ sizeof(isliceobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1341,7 +1333,7 @@ PyObject_GC_UnTrack(lz); Py_XDECREF(lz->func); Py_XDECREF(lz->it); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -1360,7 +1352,7 @@ PyObject *it = lz->it; assert(PyIter_Check(it)); - args = (*it->ob_type->tp_iternext)(it); + args = (*Py_Type(it)->tp_iternext)(it); if (args == NULL) return NULL; if (!PyTuple_CheckExact(args)) { @@ -1381,8 +1373,7 @@ with a argument tuple taken from the given sequence."); static PyTypeObject starmap_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.starmap", /* tp_name */ sizeof(starmapobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1487,7 +1478,7 @@ PyObject_GC_UnTrack(lz); Py_XDECREF(lz->iters); Py_XDECREF(lz->func); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -1561,8 +1552,7 @@ iterables."); static PyTypeObject imap_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.imap", /* tp_name */ sizeof(imapobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1666,7 +1656,7 @@ { PyObject_GC_UnTrack(lz); Py_XDECREF(lz->ittuple); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -1706,8 +1696,7 @@ iterable, until all of the iterables are exhausted."); static PyTypeObject chain_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.chain", /* tp_name */ sizeof(chainobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1798,7 +1787,7 @@ PyObject_GC_UnTrack(lz); Py_XDECREF(lz->func); Py_XDECREF(lz->it); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -1818,7 +1807,7 @@ PyObject *(*iternext)(PyObject *); assert(PyIter_Check(it)); - iternext = *it->ob_type->tp_iternext; + iternext = *Py_Type(it)->tp_iternext; for (;;) { item = iternext(it); if (item == NULL) @@ -1850,8 +1839,7 @@ If function is None, return the items that are true."); static PyTypeObject ifilter_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.ifilter", /* tp_name */ sizeof(ifilterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1943,7 +1931,7 @@ PyObject_GC_UnTrack(lz); Py_XDECREF(lz->func); Py_XDECREF(lz->it); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -1963,7 +1951,7 @@ PyObject *(*iternext)(PyObject *); assert(PyIter_Check(it)); - iternext = *it->ob_type->tp_iternext; + iternext = *Py_Type(it)->tp_iternext; for (;;) { item = iternext(it); if (item == NULL) @@ -1995,8 +1983,7 @@ If function is None, return the items that are false."); static PyTypeObject ifilterfalse_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.ifilterfalse", /* tp_name */ sizeof(ifilterfalseobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2094,8 +2081,7 @@ integers starting from zero or, if specified, from firstval."); static PyTypeObject count_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.count", /* tp_name */ sizeof(countobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2214,7 +2200,7 @@ PyObject_GC_UnTrack(lz); Py_XDECREF(lz->ittuple); Py_XDECREF(lz->result); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -2237,12 +2223,12 @@ if (tuplesize == 0) return NULL; - if (result->ob_refcnt == 1) { + if (Py_Refcnt(result) == 1) { Py_INCREF(result); for (i=0 ; i < tuplesize ; i++) { it = PyTuple_GET_ITEM(lz->ittuple, i); assert(PyIter_Check(it)); - item = (*it->ob_type->tp_iternext)(it); + item = (*Py_Type(it)->tp_iternext)(it); if (item == NULL) { Py_DECREF(result); return NULL; @@ -2258,7 +2244,7 @@ for (i=0 ; i < tuplesize ; i++) { it = PyTuple_GET_ITEM(lz->ittuple, i); assert(PyIter_Check(it)); - item = (*it->ob_type->tp_iternext)(it); + item = (*Py_Type(it)->tp_iternext)(it); if (item == NULL) { Py_DECREF(result); return NULL; @@ -2280,8 +2266,7 @@ a list."); static PyTypeObject izip_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.izip", /* tp_name */ sizeof(izipobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2365,7 +2350,7 @@ { PyObject_GC_UnTrack(ro); Py_XDECREF(ro->element); - ro->ob_type->tp_free(ro); + Py_Type(ro)->tp_free(ro); } static int @@ -2428,8 +2413,7 @@ endlessly."); static PyTypeObject repeat_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.repeat", /* tp_name */ sizeof(repeatobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2561,7 +2545,7 @@ Py_XDECREF(lz->ittuple); Py_XDECREF(lz->result); Py_XDECREF(lz->fillvalue); - lz->ob_type->tp_free(lz); + Py_Type(lz)->tp_free(lz); } static int @@ -2587,7 +2571,7 @@ return NULL; if (lz->numactive == 0) return NULL; - if (result->ob_refcnt == 1) { + if (Py_Refcnt(result) == 1) { Py_INCREF(result); for (i=0 ; i < tuplesize ; i++) { it = PyTuple_GET_ITEM(lz->ittuple, i); @@ -2596,7 +2580,7 @@ item = lz->fillvalue; } else { assert(PyIter_Check(it)); - item = (*it->ob_type->tp_iternext)(it); + item = (*Py_Type(it)->tp_iternext)(it); if (item == NULL) { lz->numactive -= 1; if (lz->numactive == 0) { @@ -2625,7 +2609,7 @@ item = lz->fillvalue; } else { assert(PyIter_Check(it)); - item = (*it->ob_type->tp_iternext)(it); + item = (*Py_Type(it)->tp_iternext)(it); if (item == NULL) { lz->numactive -= 1; if (lz->numactive == 0) { @@ -2657,8 +2641,7 @@ "); static PyTypeObject iziplongest_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "itertools.izip_longest", /* tp_name */ sizeof(iziplongestobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2757,7 +2740,7 @@ NULL }; - teedataobject_type.ob_type = &PyType_Type; + Py_Type(&teedataobject_type) = &PyType_Type; m = Py_InitModule3("itertools", module_methods, module_doc); if (m == NULL) return; Modified: python/branches/bcannon-objcap/Modules/linuxaudiodev.c ============================================================================== --- python/branches/bcannon-objcap/Modules/linuxaudiodev.c (original) +++ python/branches/bcannon-objcap/Modules/linuxaudiodev.c Thu Sep 6 21:35:45 2007 @@ -441,8 +441,7 @@ } static PyTypeObject Ladtype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "linuxaudiodev.linux_audio_device", /*tp_name*/ sizeof(lad_t), /*tp_size*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/Modules/main.c ============================================================================== --- python/branches/bcannon-objcap/Modules/main.c (original) +++ python/branches/bcannon-objcap/Modules/main.c Thu Sep 6 21:35:45 2007 @@ -149,17 +149,16 @@ fprintf(stderr, "Could not import runpy module\n"); return -1; } - runmodule = PyObject_GetAttrString(runpy, "run_module"); + runmodule = PyObject_GetAttrString(runpy, "_run_module_as_main"); if (runmodule == NULL) { - fprintf(stderr, "Could not access runpy.run_module\n"); + fprintf(stderr, "Could not access runpy._run_module_as_main\n"); Py_DECREF(runpy); return -1; } - runargs = Py_BuildValue("sOsO", module, - Py_None, "__main__", Py_True); + runargs = Py_BuildValue("(s)", module); if (runargs == NULL) { fprintf(stderr, - "Could not create arguments for runpy.run_module\n"); + "Could not create arguments for runpy._run_module_as_main\n"); Py_DECREF(runpy); Py_DECREF(runmodule); return -1; Modified: python/branches/bcannon-objcap/Modules/makesetup ============================================================================== --- python/branches/bcannon-objcap/Modules/makesetup (original) +++ python/branches/bcannon-objcap/Modules/makesetup Thu Sep 6 21:35:45 2007 @@ -238,7 +238,7 @@ no) SHAREDMODS="$SHAREDMODS $file";; esac rule="$file: $objs" - rule="$rule; \$(LDSHARED) $objs $libs $ExtraLibs -o $file" + rule="$rule; \$(BLDSHARED) $objs $libs $ExtraLibs -o $file" echo "$rule" >>$rulesf done done Modified: python/branches/bcannon-objcap/Modules/md5module.c ============================================================================== --- python/branches/bcannon-objcap/Modules/md5module.c (original) +++ python/branches/bcannon-objcap/Modules/md5module.c Thu Sep 6 21:35:45 2007 @@ -221,8 +221,7 @@ copy() -- return a copy of the current md5 object"); static PyTypeObject MD5type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_md5.md5", /*tp_name*/ sizeof(md5object), /*tp_size*/ 0, /*tp_itemsize*/ @@ -299,7 +298,7 @@ { PyObject *m, *d; - MD5type.ob_type = &PyType_Type; + Py_Type(&MD5type) = &PyType_Type; if (PyType_Ready(&MD5type) < 0) return; m = Py_InitModule3("_md5", md5_functions, module_doc); Modified: python/branches/bcannon-objcap/Modules/mmapmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/mmapmodule.c (original) +++ python/branches/bcannon-objcap/Modules/mmapmodule.c Thu Sep 6 21:35:45 2007 @@ -681,6 +681,60 @@ } static PyObject * +mmap_subscript(mmap_object *self, PyObject *item) +{ + CHECK_VALID(NULL); + if (PyIndex_Check(item)) { + Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); + if (i == -1 && PyErr_Occurred()) + return NULL; + if (i < 0) + i += self->size; + if (i < 0 || i > self->size) { + PyErr_SetString(PyExc_IndexError, + "mmap index out of range"); + return NULL; + } + return PyString_FromStringAndSize(self->data + i, 1); + } + else if (PySlice_Check(item)) { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PySliceObject *)item, self->size, + &start, &stop, &step, &slicelen) < 0) { + return NULL; + } + + if (slicelen <= 0) + return PyString_FromStringAndSize("", 0); + else if (step == 1) + return PyString_FromStringAndSize(self->data + start, + slicelen); + else { + char *result_buf = (char *)PyMem_Malloc(slicelen); + Py_ssize_t cur, i; + PyObject *result; + + if (result_buf == NULL) + return PyErr_NoMemory(); + for (cur = start, i = 0; i < slicelen; + cur += step, i++) { + result_buf[i] = self->data[cur]; + } + result = PyString_FromStringAndSize(result_buf, + slicelen); + PyMem_Free(result_buf); + return result; + } + } + else { + PyErr_SetString(PyExc_TypeError, + "mmap indices must be integers"); + return NULL; + } +} + +static PyObject * mmap_concat(mmap_object *self, PyObject *bb) { CHECK_VALID(NULL); @@ -764,6 +818,96 @@ return 0; } +static int +mmap_ass_subscript(mmap_object *self, PyObject *item, PyObject *value) +{ + CHECK_VALID(-1); + + if (PyIndex_Check(item)) { + Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); + const char *buf; + + if (i == -1 && PyErr_Occurred()) + return -1; + if (i < 0) + i += self->size; + if (i < 0 || i > self->size) { + PyErr_SetString(PyExc_IndexError, + "mmap index out of range"); + return -1; + } + if (value == NULL) { + PyErr_SetString(PyExc_TypeError, + "mmap object doesn't support item deletion"); + return -1; + } + if (!PyString_Check(value) || PyString_Size(value) != 1) { + PyErr_SetString(PyExc_IndexError, + "mmap assignment must be single-character string"); + return -1; + } + if (!is_writeable(self)) + return -1; + buf = PyString_AsString(value); + self->data[i] = buf[0]; + return 0; + } + else if (PySlice_Check(item)) { + Py_ssize_t start, stop, step, slicelen; + + if (PySlice_GetIndicesEx((PySliceObject *)item, + self->size, &start, &stop, + &step, &slicelen) < 0) { + return -1; + } + if (value == NULL) { + PyErr_SetString(PyExc_TypeError, + "mmap object doesn't support slice deletion"); + return -1; + } + if (!PyString_Check(value)) { + PyErr_SetString(PyExc_IndexError, + "mmap slice assignment must be a string"); + return -1; + } + if (PyString_Size(value) != slicelen) { + PyErr_SetString(PyExc_IndexError, + "mmap slice assignment is wrong size"); + return -1; + } + if (!is_writeable(self)) + return -1; + + if (slicelen == 0) + return 0; + else if (step == 1) { + const char *buf = PyString_AsString(value); + + if (buf == NULL) + return -1; + memcpy(self->data + start, buf, slicelen); + return 0; + } + else { + Py_ssize_t cur, i; + const char *buf = PyString_AsString(value); + + if (buf == NULL) + return -1; + for (cur = start, i = 0; i < slicelen; + cur += step, i++) { + self->data[cur] = buf[i]; + } + return 0; + } + } + else { + PyErr_SetString(PyExc_TypeError, + "mmap indices must be integer"); + return -1; + } +} + static PySequenceMethods mmap_as_sequence = { (lenfunc)mmap_length, /*sq_length*/ (binaryfunc)mmap_concat, /*sq_concat*/ @@ -774,6 +918,12 @@ (ssizessizeobjargproc)mmap_ass_slice, /*sq_ass_slice*/ }; +static PyMappingMethods mmap_as_mapping = { + (lenfunc)mmap_length, + (binaryfunc)mmap_subscript, + (objobjargproc)mmap_ass_subscript, +}; + static PyBufferProcs mmap_as_buffer = { (readbufferproc)mmap_buffer_getreadbuf, (writebufferproc)mmap_buffer_getwritebuf, @@ -782,8 +932,7 @@ }; static PyTypeObject mmap_object_type = { - PyObject_HEAD_INIT(0) /* patched in module init */ - 0, /* ob_size */ + PyVarObject_HEAD_INIT(0, 0) /* patched in module init */ "mmap.mmap", /* tp_name */ sizeof(mmap_object), /* tp_size */ 0, /* tp_itemsize */ @@ -796,7 +945,7 @@ 0, /* tp_repr */ 0, /* tp_as_number */ &mmap_as_sequence, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ + &mmap_as_mapping, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ @@ -1141,7 +1290,7 @@ PyObject *dict, *module; /* Patch the object type */ - mmap_object_type.ob_type = &PyType_Type; + Py_Type(&mmap_object_type) = &PyType_Type; module = Py_InitModule("mmap", mmap_functions); if (module == NULL) Modified: python/branches/bcannon-objcap/Modules/operator.c ============================================================================== --- python/branches/bcannon-objcap/Modules/operator.c (original) +++ python/branches/bcannon-objcap/Modules/operator.c Thu Sep 6 21:35:45 2007 @@ -397,8 +397,7 @@ After, g=itemgetter(2,5,3), the call g(r) returns (r[2], r[5], r[3])"); static PyTypeObject itemgetter_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "operator.itemgetter", /* tp_name */ sizeof(itemgetterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -535,8 +534,7 @@ After, g=attrgetter('name', 'date'), the call g(r) returns (r.name, r.date)."); static PyTypeObject attrgetter_type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(NULL, 0) "operator.attrgetter", /* tp_name */ sizeof(attrgetterobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/ossaudiodev.c ============================================================================== --- python/branches/bcannon-objcap/Modules/ossaudiodev.c (original) +++ python/branches/bcannon-objcap/Modules/ossaudiodev.c Thu Sep 6 21:35:45 2007 @@ -841,8 +841,7 @@ } static PyTypeObject OSSAudioType = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "ossaudiodev.oss_audio_device", /*tp_name*/ sizeof(oss_audio_t), /*tp_size*/ 0, /*tp_itemsize*/ @@ -856,8 +855,7 @@ }; static PyTypeObject OSSMixerType = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "ossaudiodev.oss_mixer_device", /*tp_name*/ sizeof(oss_mixer_t), /*tp_size*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/Modules/parsermodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/parsermodule.c (original) +++ python/branches/bcannon-objcap/Modules/parsermodule.c Thu Sep 6 21:35:45 2007 @@ -166,8 +166,7 @@ static PyTypeObject PyST_Type = { - PyObject_HEAD_INIT(NULL) - 0, + PyVarObject_HEAD_INIT(NULL, 0) "parser.st", /* tp_name */ (int) sizeof(PyST_Object), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -694,7 +693,7 @@ PyErr_Format(parser_error, "second item in terminal node must be a string," " found %s", - temp->ob_type->tp_name); + Py_Type(temp)->tp_name); Py_DECREF(temp); return 0; } @@ -707,7 +706,7 @@ PyErr_Format(parser_error, "third item in terminal node must be an" " integer, found %s", - temp->ob_type->tp_name); + Py_Type(temp)->tp_name); Py_DECREF(o); Py_DECREF(temp); return 0; @@ -3233,7 +3232,7 @@ { PyObject *module, *copyreg; - PyST_Type.ob_type = &PyType_Type; + Py_Type(&PyST_Type) = &PyType_Type; module = Py_InitModule("parser", parser_functions); if (module == NULL) return; Modified: python/branches/bcannon-objcap/Modules/posixmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/posixmodule.c (original) +++ python/branches/bcannon-objcap/Modules/posixmodule.c Thu Sep 6 21:35:45 2007 @@ -2593,7 +2593,7 @@ long intval; if (PyFloat_Check(t)) { double tval = PyFloat_AsDouble(t); - PyObject *intobj = t->ob_type->tp_as_number->nb_int(t); + PyObject *intobj = Py_Type(t)->tp_as_number->nb_int(t); if (!intobj) return -1; intval = PyInt_AsLong(intobj); @@ -5783,7 +5783,10 @@ return NULL; #ifdef Py_USING_UNICODE v = PySequence_GetItem(args, 0); - if (v == NULL) return NULL; + if (v == NULL) { + PyMem_Free(path); + return NULL; + } if (PyUnicode_Check(v)) { arg_is_unicode = 1; @@ -5795,8 +5798,9 @@ n = readlink(path, buf, (int) sizeof buf); Py_END_ALLOW_THREADS if (n < 0) - return posix_error_with_filename(path); + return posix_error_with_allocated_filename(path); + PyMem_Free(path); v = PyString_FromStringAndSize(buf, n); #ifdef Py_USING_UNICODE if (arg_is_unicode) { @@ -8070,6 +8074,8 @@ BYTE *pbBuffer ); static CRYPTGENRANDOM pCryptGenRandom = NULL; +/* This handle is never explicitly released. Instead, the operating + system will release it when the process terminates. */ static HCRYPTPROV hCryptProv = 0; static PyObject* Modified: python/branches/bcannon-objcap/Modules/pyexpat.c ============================================================================== --- python/branches/bcannon-objcap/Modules/pyexpat.c (original) +++ python/branches/bcannon-objcap/Modules/pyexpat.c Thu Sep 6 21:35:45 2007 @@ -974,7 +974,7 @@ if (!PyString_Check(str)) { PyErr_Format(PyExc_TypeError, "read() did not return a string object (type=%.400s)", - str->ob_type->tp_name); + Py_Type(str)->tp_name); goto finally; } len = PyString_GET_SIZE(str); @@ -1687,8 +1687,7 @@ PyDoc_STRVAR(Xmlparsetype__doc__, "XML parser"); static PyTypeObject Xmlparsetype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "pyexpat.xmlparser", /*tp_name*/ sizeof(xmlparseobject) + PyGC_HEAD_SIZE,/*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -1860,7 +1859,7 @@ if (modelmod_name == NULL) return; - Xmlparsetype.ob_type = &PyType_Type; + Py_Type(&Xmlparsetype) = &PyType_Type; /* Create the module and add the functions */ m = Py_InitModule3(MODULE_NAME, pyexpat_methods, Modified: python/branches/bcannon-objcap/Modules/readline.c ============================================================================== --- python/branches/bcannon-objcap/Modules/readline.c (original) +++ python/branches/bcannon-objcap/Modules/readline.c Thu Sep 6 21:35:45 2007 @@ -198,6 +198,7 @@ /* Exported functions to specify hook functions in Python */ +static PyObject *completion_display_matches_hook = NULL; static PyObject *startup_hook = NULL; #ifdef HAVE_RL_PRE_INPUT_HOOK @@ -205,6 +206,20 @@ #endif static PyObject * +set_completion_display_matches_hook(PyObject *self, PyObject *args) +{ + return set_hook("completion_display_matches_hook", + &completion_display_matches_hook, args); +} + +PyDoc_STRVAR(doc_set_completion_display_matches_hook, +"set_completion_display_matches_hook([function]) -> None\n\ +Set or remove the completion display function.\n\ +The function is called as\n\ + function(substitution, [matches], longest_match_length)\n\ +once each time matches need to be displayed."); + +static PyObject * set_startup_hook(PyObject *self, PyObject *args) { return set_hook("startup_hook", &startup_hook, args); @@ -245,6 +260,18 @@ static PyObject *endidx = NULL; +/* Get the completion type for the scope of the tab-completion */ +static PyObject * +get_completion_type(PyObject *self, PyObject *noarg) +{ + return PyInt_FromLong(rl_completion_type); +} + +PyDoc_STRVAR(doc_get_completion_type, +"get_completion_type() -> int\n\ +Get the type of completion being attempted."); + + /* Get the beginning index for the scope of the tab-completion */ static PyObject * @@ -557,6 +584,8 @@ METH_NOARGS, get_history_length_doc}, {"set_completer", set_completer, METH_VARARGS, doc_set_completer}, {"get_completer", get_completer, METH_NOARGS, doc_get_completer}, + {"get_completion_type", get_completion_type, + METH_NOARGS, doc_get_completion_type}, {"get_begidx", get_begidx, METH_NOARGS, doc_get_begidx}, {"get_endidx", get_endidx, METH_NOARGS, doc_get_endidx}, @@ -568,6 +597,8 @@ {"get_completer_delims", get_completer_delims, METH_NOARGS, doc_get_completer_delims}, + {"set_completion_display_matches_hook", set_completion_display_matches_hook, + METH_VARARGS, doc_set_completion_display_matches_hook}, {"set_startup_hook", set_startup_hook, METH_VARARGS, doc_set_startup_hook}, #ifdef HAVE_RL_PRE_INPUT_HOOK @@ -631,6 +662,48 @@ #endif +/* C function to call the Python completion_display_matches */ + +static void +on_completion_display_matches_hook(char **matches, + int num_matches, int max_length) +{ + if (completion_display_matches_hook != NULL) { + int i; + PyObject *m, *s; + PyObject *r; +#ifdef WITH_THREAD + PyGILState_STATE gilstate = PyGILState_Ensure(); +#endif + m = PyList_New(num_matches); + for (i = 0; i < num_matches; i++) { + s = PyString_FromString(matches[i+1]); + PyList_SetItem(m, i, s); + } + + r = PyObject_CallFunction(completion_display_matches_hook, + "sOi", matches[0], m, max_length); + + Py_DECREF(m); + + if (r == NULL || + (r != Py_None && PyInt_AsLong(r) == -1 && PyErr_Occurred())) { + goto error; + } + + Py_DECREF(r); + goto done; + error: + PyErr_Clear(); + Py_XDECREF(r); + done: +#ifdef WITH_THREAD + PyGILState_Release(gilstate); +#endif + } +} + + /* C function to call the Python completer. */ static char * @@ -708,6 +781,10 @@ rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap); rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap); /* Set our hook functions */ +#ifdef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK + rl_completion_display_matches_hook = + (rl_compdisp_func_t *)on_completion_display_matches_hook; +#endif rl_startup_hook = (Function *)on_startup_hook; #ifdef HAVE_RL_PRE_INPUT_HOOK rl_pre_input_hook = (Function *)on_pre_input_hook; Modified: python/branches/bcannon-objcap/Modules/selectmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/selectmodule.c (original) +++ python/branches/bcannon-objcap/Modules/selectmodule.c Thu Sep 6 21:35:45 2007 @@ -587,8 +587,7 @@ static PyTypeObject poll_Type = { /* The ob_type field must be initialized in the module init function * to be portable to Windows without using C++. */ - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "select.poll", /*tp_name*/ sizeof(pollObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -706,7 +705,7 @@ #else { #endif - poll_Type.ob_type = &PyType_Type; + Py_Type(&poll_Type) = &PyType_Type; PyModule_AddIntConstant(m, "POLLIN", POLLIN); PyModule_AddIntConstant(m, "POLLPRI", POLLPRI); PyModule_AddIntConstant(m, "POLLOUT", POLLOUT); Modified: python/branches/bcannon-objcap/Modules/sha256module.c ============================================================================== --- python/branches/bcannon-objcap/Modules/sha256module.c (original) +++ python/branches/bcannon-objcap/Modules/sha256module.c Thu Sep 6 21:35:45 2007 @@ -409,7 +409,7 @@ { SHAobject *newobj; - if (((PyObject*)self)->ob_type == &SHA256type) { + if (Py_Type(self) == &SHA256type) { if ( (newobj = newSHA256object())==NULL) return NULL; } else { @@ -536,8 +536,7 @@ }; static PyTypeObject SHA224type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_sha256.sha224", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ @@ -571,8 +570,7 @@ }; static PyTypeObject SHA256type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_sha256.sha256", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ @@ -689,10 +687,10 @@ { PyObject *m; - SHA224type.ob_type = &PyType_Type; + Py_Type(&SHA224type) = &PyType_Type; if (PyType_Ready(&SHA224type) < 0) return; - SHA256type.ob_type = &PyType_Type; + Py_Type(&SHA256type) = &PyType_Type; if (PyType_Ready(&SHA256type) < 0) return; m = Py_InitModule("_sha256", SHA_functions); Modified: python/branches/bcannon-objcap/Modules/sha512module.c ============================================================================== --- python/branches/bcannon-objcap/Modules/sha512module.c (original) +++ python/branches/bcannon-objcap/Modules/sha512module.c Thu Sep 6 21:35:45 2007 @@ -602,8 +602,7 @@ }; static PyTypeObject SHA384type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_sha512.sha384", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ @@ -637,8 +636,7 @@ }; static PyTypeObject SHA512type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_sha512.sha512", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ @@ -755,10 +753,10 @@ { PyObject *m; - SHA384type.ob_type = &PyType_Type; + Py_Type(&SHA384type) = &PyType_Type; if (PyType_Ready(&SHA384type) < 0) return; - SHA512type.ob_type = &PyType_Type; + Py_Type(&SHA512type) = &PyType_Type; if (PyType_Ready(&SHA512type) < 0) return; m = Py_InitModule("_sha512", SHA_functions); Modified: python/branches/bcannon-objcap/Modules/shamodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/shamodule.c (original) +++ python/branches/bcannon-objcap/Modules/shamodule.c Thu Sep 6 21:35:45 2007 @@ -489,8 +489,7 @@ }; static PyTypeObject SHAtype = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_sha.sha", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ @@ -577,7 +576,7 @@ { PyObject *m; - SHAtype.ob_type = &PyType_Type; + Py_Type(&SHAtype) = &PyType_Type; if (PyType_Ready(&SHAtype) < 0) return; m = Py_InitModule("_sha", SHA_functions); Modified: python/branches/bcannon-objcap/Modules/socketmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/socketmodule.c (original) +++ python/branches/bcannon-objcap/Modules/socketmodule.c Thu Sep 6 21:35:45 2007 @@ -1245,7 +1245,7 @@ PyExc_TypeError, "getsockaddrarg: " "AF_NETLINK address must be tuple, not %.500s", - args->ob_type->tp_name); + Py_Type(args)->tp_name); return 0; } if (!PyArg_ParseTuple(args, "II:getsockaddrarg", &pid, &groups)) @@ -1268,7 +1268,7 @@ PyExc_TypeError, "getsockaddrarg: " "AF_INET address must be tuple, not %.500s", - args->ob_type->tp_name); + Py_Type(args)->tp_name); return 0; } if (!PyArg_ParseTuple(args, "eti:getsockaddrarg", @@ -1298,7 +1298,7 @@ PyExc_TypeError, "getsockaddrarg: " "AF_INET6 address must be tuple, not %.500s", - args->ob_type->tp_name); + Py_Type(args)->tp_name); return 0; } if (!PyArg_ParseTuple(args, "eti|ii", @@ -1420,7 +1420,7 @@ PyExc_TypeError, "getsockaddrarg: " "AF_PACKET address must be tuple, not %.500s", - args->ob_type->tp_name); + Py_Type(args)->tp_name); return 0; } if (!PyArg_ParseTuple(args, "si|iis#", &interfaceName, @@ -2843,7 +2843,7 @@ { if (s->sock_fd != -1) (void) SOCKETCLOSE(s->sock_fd); - s->ob_type->tp_free((PyObject *)s); + Py_Type(s)->tp_free((PyObject *)s); } @@ -2928,8 +2928,7 @@ /* Type object for socket objects. */ static PyTypeObject sock_type = { - PyObject_HEAD_INIT(0) /* Must fill in type value later */ - 0, /* ob_size */ + PyVarObject_HEAD_INIT(0, 0) /* Must fill in type value later */ "_socket.socket", /* tp_name */ sizeof(PySocketSockObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -3555,7 +3554,7 @@ else return PyErr_Format(PyExc_TypeError, "expected int/long, %s found", - arg->ob_type->tp_name); + Py_Type(arg)->tp_name); if (x == (unsigned long) -1 && PyErr_Occurred()) return NULL; return PyLong_FromUnsignedLong(ntohl(x)); @@ -3624,7 +3623,7 @@ else return PyErr_Format(PyExc_TypeError, "expected int/long, %s found", - arg->ob_type->tp_name); + Py_Type(arg)->tp_name); return PyLong_FromUnsignedLong(htonl((unsigned long)x)); } @@ -4274,7 +4273,7 @@ if (!os_init()) return; - sock_type.ob_type = &PyType_Type; + Py_Type(&sock_type) = &PyType_Type; m = Py_InitModule3(PySocket_MODULE_NAME, socket_methods, socket_doc); Modified: python/branches/bcannon-objcap/Modules/sunaudiodev.c ============================================================================== --- python/branches/bcannon-objcap/Modules/sunaudiodev.c (original) +++ python/branches/bcannon-objcap/Modules/sunaudiodev.c Thu Sep 6 21:35:45 2007 @@ -42,8 +42,8 @@ static PyObject *SunAudioError; -#define is_sadobject(v) ((v)->ob_type == &Sadtype) -#define is_sadstatusobject(v) ((v)->ob_type == &Sadstatustype) +#define is_sadobject(v) (Py_Type(v) == &Sadtype) +#define is_sadstatusobject(v) (Py_Type(v) == &Sadstatustype) static sadobject * @@ -409,8 +409,7 @@ static PyTypeObject Sadtype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "sunaudiodev.sun_audio_device", /*tp_name*/ sizeof(sadobject), /*tp_size*/ 0, /*tp_itemsize*/ @@ -424,8 +423,7 @@ }; static PyTypeObject Sadstatustype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "sunaudiodev.sun_audio_device_status", /*tp_name*/ sizeof(sadstatusobject), /*tp_size*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/Modules/threadmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/threadmodule.c (original) +++ python/branches/bcannon-objcap/Modules/threadmodule.c Thu Sep 6 21:35:45 2007 @@ -126,8 +126,7 @@ } static PyTypeObject Locktype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "thread.lock", /*tp_name*/ sizeof(lockobject), /*tp_size*/ 0, /*tp_itemsize*/ @@ -251,7 +250,7 @@ } local_clear(self); - self->ob_type->tp_free((PyObject*)self); + Py_Type(self)->tp_free((PyObject*)self); } static PyObject * @@ -283,8 +282,8 @@ Py_INCREF(ldict); self->dict = ldict; /* still borrowed */ - if (self->ob_type->tp_init != PyBaseObject_Type.tp_init && - self->ob_type->tp_init((PyObject*)self, + if (Py_Type(self)->tp_init != PyBaseObject_Type.tp_init && + Py_Type(self)->tp_init((PyObject*)self, self->args, self->kw) < 0) { /* we need to get rid of ldict from thread so we create a new one the next time we do an attr @@ -336,8 +335,7 @@ static PyObject *local_getattro(localobject *, PyObject *); static PyTypeObject localtype = { - PyObject_HEAD_INIT(NULL) - /* ob_size */ 0, + PyVarObject_HEAD_INIT(NULL, 0) /* tp_name */ "thread._local", /* tp_basicsize */ sizeof(localobject), /* tp_itemsize */ 0, @@ -388,7 +386,7 @@ if (ldict == NULL) return NULL; - if (self->ob_type != &localtype) + if (Py_Type(self) != &localtype) /* use generic lookup for subtypes */ return PyObject_GenericGetAttr((PyObject *)self, name); Modified: python/branches/bcannon-objcap/Modules/unicodedata.c ============================================================================== --- python/branches/bcannon-objcap/Modules/unicodedata.c (original) +++ python/branches/bcannon-objcap/Modules/unicodedata.c Thu Sep 6 21:35:45 2007 @@ -1077,8 +1077,7 @@ unicodedata_lookup(PyObject* self, PyObject* args) { Py_UCS4 code; - Py_UNICODE str[1]; - char errbuf[256]; + Py_UNICODE str[2]; char* name; int namelen; @@ -1086,24 +1085,20 @@ return NULL; if (!_getcode(self, name, namelen, &code)) { - /* XXX(nnorwitz): why are we allocating for the error msg? - Why not always use snprintf? */ - char fmt[] = "undefined character name '%s'"; - char *buf = PyMem_MALLOC(sizeof(fmt) + namelen); - if (buf) - sprintf(buf, fmt, name); - else { - buf = errbuf; - PyOS_snprintf(buf, sizeof(errbuf), fmt, name); - } - PyErr_SetString(PyExc_KeyError, buf); - if (buf != errbuf) - PyMem_FREE(buf); + PyErr_Format(PyExc_KeyError, "undefined character name '%s'", + name); return NULL; } +#ifndef Py_UNICODE_WIDE + if (code >= 0x10000) { + str[0] = 0xd800 + ((code - 0x10000) >> 10); + str[1] = 0xdc00 + ((code - 0x10000) & 0x3ff); + return PyUnicode_FromUnicode(str, 2); + } +#endif str[0] = (Py_UNICODE) code; - return PyUnicode_FromUnicode(str, 1); + return PyUnicode_FromUnicode(str, 1); } /* XXX Add doc strings. */ @@ -1134,8 +1129,7 @@ static PyTypeObject UCD_Type = { /* The ob_type field must be initialized in the module init function * to be portable to Windows without using C++. */ - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "unicodedata.UCD", /*tp_name*/ sizeof(PreviousDBVersion), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -1193,7 +1187,7 @@ { PyObject *m, *v; - UCD_Type.ob_type = &PyType_Type; + Py_Type(&UCD_Type) = &PyType_Type; m = Py_InitModule3( "unicodedata", unicodedata_functions, unicodedata_docstring); Modified: python/branches/bcannon-objcap/Modules/xxmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/xxmodule.c (original) +++ python/branches/bcannon-objcap/Modules/xxmodule.c Thu Sep 6 21:35:45 2007 @@ -25,7 +25,7 @@ static PyTypeObject Xxo_Type; -#define XxoObject_Check(v) ((v)->ob_type == &Xxo_Type) +#define XxoObject_Check(v) (Py_Type(v) == &Xxo_Type) static XxoObject * newXxoObject(PyObject *arg) @@ -97,8 +97,7 @@ static PyTypeObject Xxo_Type = { /* The ob_type field must be initialized in the module init function * to be portable to Windows without using C++. */ - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "xxmodule.Xxo", /*tp_name*/ sizeof(XxoObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -216,8 +215,7 @@ static PyTypeObject Str_Type = { /* The ob_type field must be initialized in the module init function * to be portable to Windows without using C++. */ - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "xxmodule.Str", /*tp_name*/ 0, /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -272,8 +270,7 @@ static PyTypeObject Null_Type = { /* The ob_type field must be initialized in the module init function * to be portable to Windows without using C++. */ - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "xxmodule.Null", /*tp_name*/ 0, /*tp_basicsize*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/Modules/xxsubtype.c ============================================================================== --- python/branches/bcannon-objcap/Modules/xxsubtype.c (original) +++ python/branches/bcannon-objcap/Modules/xxsubtype.c Thu Sep 6 21:35:45 2007 @@ -101,8 +101,7 @@ }; static PyTypeObject spamlist_type = { - PyObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type)) - 0, + PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0) "xxsubtype.spamlist", sizeof(spamlistobject), 0, @@ -193,8 +192,7 @@ }; static PyTypeObject spamdict_type = { - PyObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type)) - 0, + PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0) "xxsubtype.spamdict", sizeof(spamdictobject), 0, Modified: python/branches/bcannon-objcap/Modules/zipimport.c ============================================================================== --- python/branches/bcannon-objcap/Modules/zipimport.c (original) +++ python/branches/bcannon-objcap/Modules/zipimport.c Thu Sep 6 21:35:45 2007 @@ -181,7 +181,7 @@ Py_XDECREF(self->archive); Py_XDECREF(self->prefix); Py_XDECREF(self->files); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static PyObject * @@ -561,8 +561,7 @@ #define DEFERRED_ADDRESS(ADDR) 0 static PyTypeObject ZipImporter_Type = { - PyObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type)) - 0, + PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0) "zipimport.zipimporter", sizeof(ZipImporter), 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Modules/zlibmodule.c ============================================================================== --- python/branches/bcannon-objcap/Modules/zlibmodule.c (original) +++ python/branches/bcannon-objcap/Modules/zlibmodule.c Thu Sep 6 21:35:45 2007 @@ -935,8 +935,7 @@ }; static PyTypeObject Comptype = { - PyObject_HEAD_INIT(0) - 0, + PyVarObject_HEAD_INIT(0, 0) "zlib.Compress", sizeof(compobject), 0, @@ -952,8 +951,7 @@ }; static PyTypeObject Decomptype = { - PyObject_HEAD_INIT(0) - 0, + PyVarObject_HEAD_INIT(0, 0) "zlib.Decompress", sizeof(compobject), 0, @@ -987,8 +985,8 @@ PyInit_zlib(void) { PyObject *m, *ver; - Comptype.ob_type = &PyType_Type; - Decomptype.ob_type = &PyType_Type; + Py_Type(&Comptype) = &PyType_Type; + Py_Type(&Decomptype) = &PyType_Type; m = Py_InitModule4("zlib", zlib_methods, zlib_module_documentation, (PyObject*)NULL,PYTHON_API_VERSION); Modified: python/branches/bcannon-objcap/Objects/boolobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/boolobject.c (original) +++ python/branches/bcannon-objcap/Objects/boolobject.c Thu Sep 6 21:35:45 2007 @@ -146,8 +146,7 @@ /* The type object for bool. Note that this cannot be subclassed! */ PyTypeObject PyBool_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "bool", sizeof(PyIntObject), 0, Modified: python/branches/bcannon-objcap/Objects/bufferobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/bufferobject.c (original) +++ python/branches/bcannon-objcap/Objects/bufferobject.c Thu Sep 6 21:35:45 2007 @@ -472,6 +472,61 @@ right - left); } +static PyObject * +buffer_subscript(PyBufferObject *self, PyObject *item) +{ + void *p; + Py_ssize_t size; + + if (!get_buf(self, &p, &size, ANY_BUFFER)) + return NULL; + if (PyIndex_Check(item)) { + Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); + if (i == -1 && PyErr_Occurred()) + return NULL; + if (i < 0) + i += size; + return buffer_item(self, i); + } + else if (PySlice_Check(item)) { + Py_ssize_t start, stop, step, slicelength, cur, i; + + if (PySlice_GetIndicesEx((PySliceObject*)item, size, + &start, &stop, &step, &slicelength) < 0) { + return NULL; + } + + if (slicelength <= 0) + return PyString_FromStringAndSize("", 0); + else if (step == 1) + return PyString_FromStringAndSize((char *)p + start, + stop - start); + else { + PyObject *result; + char *source_buf = (char *)p; + char *result_buf = (char *)PyMem_Malloc(slicelength); + + if (result_buf == NULL) + return PyErr_NoMemory(); + + for (cur = start, i = 0; i < slicelength; + cur += step, i++) { + result_buf[i] = source_buf[cur]; + } + + result = PyString_FromStringAndSize(result_buf, + slicelength); + PyMem_Free(result_buf); + return result; + } + } + else { + PyErr_SetString(PyExc_TypeError, + "sequence index must be integer"); + return NULL; + } +} + static int buffer_ass_item(PyBufferObject *self, Py_ssize_t idx, PyObject *other) { @@ -581,6 +636,98 @@ return 0; } +static int +buffer_ass_subscript(PyBufferObject *self, PyObject *item, PyObject *value) +{ + PyBufferProcs *pb; + void *ptr1, *ptr2; + Py_ssize_t selfsize; + Py_ssize_t othersize; + + if ( self->b_readonly ) { + PyErr_SetString(PyExc_TypeError, + "buffer is read-only"); + return -1; + } + + pb = value ? value->ob_type->tp_as_buffer : NULL; + if ( pb == NULL || + pb->bf_getreadbuffer == NULL || + pb->bf_getsegcount == NULL ) + { + PyErr_BadArgument(); + return -1; + } + if ( (*pb->bf_getsegcount)(value, NULL) != 1 ) + { + /* ### use a different exception type/message? */ + PyErr_SetString(PyExc_TypeError, + "single-segment buffer object expected"); + return -1; + } + if (!get_buf(self, &ptr1, &selfsize, ANY_BUFFER)) + return -1; + if (PyIndex_Check(item)) { + Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); + if (i == -1 && PyErr_Occurred()) + return -1; + if (i < 0) + i += selfsize; + return buffer_ass_item(self, i, value); + } + else if (PySlice_Check(item)) { + Py_ssize_t start, stop, step, slicelength; + + if (PySlice_GetIndicesEx((PySliceObject *)item, selfsize, + &start, &stop, &step, &slicelength) < 0) + return -1; + + pb = value ? value->ob_type->tp_as_buffer : NULL; + if (pb == NULL || + pb->bf_getreadbuffer == NULL || + pb->bf_getsegcount == NULL) { + PyErr_BadArgument(); + return -1; + } + if ((*pb->bf_getsegcount)(value, NULL) != 1) { + /* ### use a different exception type/message? */ + PyErr_SetString(PyExc_TypeError, + "single-segment buffer object expected"); + return -1; + } + if ((othersize = (*pb->bf_getreadbuffer)(value, 0, &ptr2)) < 0) + return -1; + + if (othersize != slicelength) { + PyErr_SetString( + PyExc_TypeError, + "right operand length must match slice length"); + return -1; + } + + if (slicelength == 0) + return 0; + else if (step == 1) { + memcpy((char *)ptr1 + start, ptr2, slicelength); + return 0; + } + else { + Py_ssize_t cur, i; + + for (cur = start, i = 0; i < slicelength; + cur += step, i++) { + ((char *)ptr1)[cur] = ((char *)ptr2)[i]; + } + + return 0; + } + } else { + PyErr_SetString(PyExc_TypeError, + "buffer indices must be integers"); + return -1; + } +} + /* Buffer methods */ static Py_ssize_t @@ -656,6 +803,12 @@ (ssizessizeobjargproc)buffer_ass_slice, /*sq_ass_slice*/ }; +static PyMappingMethods buffer_as_mapping = { + (lenfunc)buffer_length, + (binaryfunc)buffer_subscript, + (objobjargproc)buffer_ass_subscript, +}; + static PyBufferProcs buffer_as_buffer = { (readbufferproc)buffer_getreadbuf, (writebufferproc)buffer_getwritebuf, @@ -664,8 +817,7 @@ }; PyTypeObject PyBuffer_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "buffer", sizeof(PyBufferObject), 0, @@ -677,7 +829,7 @@ (reprfunc)buffer_repr, /* tp_repr */ 0, /* tp_as_number */ &buffer_as_sequence, /* tp_as_sequence */ - 0, /* tp_as_mapping */ + &buffer_as_mapping, /* tp_as_mapping */ (hashfunc)buffer_hash, /* tp_hash */ 0, /* tp_call */ (reprfunc)buffer_str, /* tp_str */ Modified: python/branches/bcannon-objcap/Objects/cellobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/cellobject.c (original) +++ python/branches/bcannon-objcap/Objects/cellobject.c Thu Sep 6 21:35:45 2007 @@ -99,8 +99,7 @@ }; PyTypeObject PyCell_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "cell", sizeof(PyCellObject), 0, Modified: python/branches/bcannon-objcap/Objects/cobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/cobject.c (original) +++ python/branches/bcannon-objcap/Objects/cobject.c Thu Sep 6 21:35:45 2007 @@ -135,8 +135,7 @@ mechanism to link to one another."); PyTypeObject PyCObject_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "PyCObject", /*tp_name*/ sizeof(PyCObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/Objects/codeobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/codeobject.c (original) +++ python/branches/bcannon-objcap/Objects/codeobject.c Thu Sep 6 21:35:45 2007 @@ -233,8 +233,7 @@ /* XXX code objects need to participate in GC? */ PyTypeObject PyCode_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "code", sizeof(PyCodeObject), 0, Modified: python/branches/bcannon-objcap/Objects/complexobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/complexobject.c (original) +++ python/branches/bcannon-objcap/Objects/complexobject.c Thu Sep 6 21:35:45 2007 @@ -1074,8 +1074,7 @@ }; PyTypeObject PyComplex_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "complex", sizeof(PyComplexObject), 0, Modified: python/branches/bcannon-objcap/Objects/descrobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/descrobject.c (original) +++ python/branches/bcannon-objcap/Objects/descrobject.c Thu Sep 6 21:35:45 2007 @@ -382,8 +382,7 @@ } static PyTypeObject PyMethodDescr_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "method_descriptor", sizeof(PyMethodDescrObject), 0, @@ -421,8 +420,7 @@ /* This is for METH_CLASS in C, not for "f = classmethod(f)" in Python! */ static PyTypeObject PyClassMethodDescr_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "classmethod_descriptor", sizeof(PyMethodDescrObject), 0, @@ -459,8 +457,7 @@ }; static PyTypeObject PyMemberDescr_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "member_descriptor", sizeof(PyMemberDescrObject), 0, @@ -497,8 +494,7 @@ }; static PyTypeObject PyGetSetDescr_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "getset_descriptor", sizeof(PyGetSetDescrObject), 0, @@ -535,8 +531,7 @@ }; PyTypeObject PyWrapperDescr_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "wrapper_descriptor", sizeof(PyWrapperDescrObject), 0, @@ -825,8 +820,7 @@ } static PyTypeObject proxytype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "dictproxy", /* tp_name */ sizeof(proxyobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1007,8 +1001,7 @@ } static PyTypeObject wrappertype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "method-wrapper", /* tp_name */ sizeof(wrapperobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1238,8 +1231,7 @@ } PyTypeObject PyProperty_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "property", /* tp_name */ sizeof(propertyobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/dictobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/dictobject.c (original) +++ python/branches/bcannon-objcap/Objects/dictobject.c Thu Sep 6 21:35:45 2007 @@ -204,7 +204,7 @@ if (num_free_dicts) { mp = free_dicts[--num_free_dicts]; assert (mp != NULL); - assert (mp->ob_type == &PyDict_Type); + assert (Py_Type(mp) == &PyDict_Type); _Py_NewReference((PyObject *)mp); if (mp->ma_fill) { EMPTY_TO_MINSIZE(mp); @@ -849,10 +849,10 @@ } if (mp->ma_table != mp->ma_smalltable) PyMem_DEL(mp->ma_table); - if (num_free_dicts < MAXFREEDICTS && mp->ob_type == &PyDict_Type) + if (num_free_dicts < MAXFREEDICTS && Py_Type(mp) == &PyDict_Type) free_dicts[num_free_dicts++] = mp; else - mp->ob_type->tp_free((PyObject *)mp); + Py_Type(mp)->tp_free((PyObject *)mp); Py_TRASHCAN_SAFE_END(mp) } @@ -1011,7 +1011,7 @@ if (missing_str == NULL) missing_str = PyString_InternFromString("__missing__"); - missing = _PyType_Lookup(mp->ob_type, missing_str); + missing = _PyType_Lookup(Py_Type(mp), missing_str); if (missing != NULL) return PyObject_CallFunctionObjArgs(missing, (PyObject *)mp, key, NULL); @@ -2119,8 +2119,7 @@ " in the keyword argument list. For example: dict(one=1, two=2)"); PyTypeObject PyDict_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict", sizeof(dictobject), 0, @@ -2302,8 +2301,7 @@ } PyTypeObject PyDictIterKey_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "dictionary-keyiterator", /* tp_name */ sizeof(dictiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2375,8 +2373,7 @@ } PyTypeObject PyDictIterValue_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "dictionary-valueiterator", /* tp_name */ sizeof(dictiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2462,8 +2459,7 @@ } PyTypeObject PyDictIterItem_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "dictionary-itemiterator", /* tp_name */ sizeof(dictiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/enumobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/enumobject.c (original) +++ python/branches/bcannon-objcap/Objects/enumobject.c Thu Sep 6 21:35:45 2007 @@ -43,7 +43,7 @@ PyObject_GC_UnTrack(en); Py_XDECREF(en->en_sit); Py_XDECREF(en->en_result); - en->ob_type->tp_free(en); + Py_Type(en)->tp_free(en); } static int @@ -68,7 +68,7 @@ return NULL; } - next_item = (*it->ob_type->tp_iternext)(it); + next_item = (*Py_Type(it)->tp_iternext)(it); if (next_item == NULL) return NULL; @@ -105,8 +105,7 @@ "for obtaining an indexed list: (0, seq[0]), (1, seq[1]), (2, seq[2]), ..."); PyTypeObject PyEnum_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "enumerate", /* tp_name */ sizeof(enumobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -195,7 +194,7 @@ { PyObject_GC_UnTrack(ro); Py_XDECREF(ro->seq); - ro->ob_type->tp_free(ro); + Py_Type(ro)->tp_free(ro); } static int @@ -253,8 +252,7 @@ }; PyTypeObject PyReversed_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "reversed", /* tp_name */ sizeof(reversedobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/exceptions.c ============================================================================== --- python/branches/bcannon-objcap/Objects/exceptions.c (original) +++ python/branches/bcannon-objcap/Objects/exceptions.c Thu Sep 6 21:35:45 2007 @@ -56,7 +56,7 @@ static int BaseException_init(PyBaseExceptionObject *self, PyObject *args, PyObject *kwds) { - if (!_PyArg_NoKeywords(self->ob_type->tp_name, kwds)) + if (!_PyArg_NoKeywords(Py_Type(self)->tp_name, kwds)) return -1; Py_DECREF(self->args); @@ -85,7 +85,7 @@ { _PyObject_GC_UNTRACK(self); BaseException_clear(self); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -129,7 +129,7 @@ if (!repr_suffix) return NULL; - name = (char *)self->ob_type->tp_name; + name = (char *)Py_Type(self)->tp_name; dot = strrchr(name, '.'); if (dot != NULL) name = dot+1; @@ -148,9 +148,9 @@ BaseException_reduce(PyBaseExceptionObject *self) { if (self->args && self->dict) - return PyTuple_Pack(3, self->ob_type, self->args, self->dict); + return PyTuple_Pack(3, Py_Type(self), self->args, self->dict); else - return PyTuple_Pack(2, self->ob_type, self->args); + return PyTuple_Pack(2, Py_Type(self), self->args); } /* @@ -478,7 +478,7 @@ { _PyObject_GC_UNTRACK(self); SystemExit_clear(self); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -583,7 +583,7 @@ { _PyObject_GC_UNTRACK(self); EnvironmentError_clear(self); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -725,9 +725,9 @@ Py_INCREF(args); if (self->dict) - res = PyTuple_Pack(3, self->ob_type, args, self->dict); + res = PyTuple_Pack(3, Py_Type(self), args, self->dict); else - res = PyTuple_Pack(2, self->ob_type, args); + res = PyTuple_Pack(2, Py_Type(self), args); Py_DECREF(args); return res; } @@ -780,7 +780,7 @@ { _PyObject_GC_UNTRACK(self); WindowsError_clear(self); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -1054,7 +1054,7 @@ { _PyObject_GC_UNTRACK(self); SyntaxError_clear(self); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int @@ -1532,7 +1532,7 @@ { _PyObject_GC_UNTRACK(self); UnicodeError_clear(self); - self->ob_type->tp_free((PyObject *)self); + Py_Type(self)->tp_free((PyObject *)self); } static int Modified: python/branches/bcannon-objcap/Objects/fileobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/fileobject.c (original) +++ python/branches/bcannon-objcap/Objects/fileobject.c Thu Sep 6 21:35:45 2007 @@ -406,7 +406,7 @@ Py_XDECREF(f->f_mode); Py_XDECREF(f->f_encoding); drop_readahead(f); - f->ob_type->tp_free((PyObject *)f); + Py_Type(f)->tp_free((PyObject *)f); } static PyObject * @@ -2079,8 +2079,7 @@ ); PyTypeObject PyFile_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "file", sizeof(PyFileObject), 0, Modified: python/branches/bcannon-objcap/Objects/floatobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/floatobject.c (original) +++ python/branches/bcannon-objcap/Objects/floatobject.c Thu Sep 6 21:35:45 2007 @@ -41,8 +41,8 @@ p = &((PyFloatBlock *)p)->objects[0]; q = p + N_FLOATOBJECTS; while (--q > p) - q->ob_type = (struct _typeobject *)(q-1); - q->ob_type = NULL; + Py_Type(q) = (struct _typeobject *)(q-1); + Py_Type(q) = NULL; return p + N_FLOATOBJECTS - 1; } @@ -56,7 +56,7 @@ } /* Inline PyObject_New */ op = free_list; - free_list = (PyFloatObject *)op->ob_type; + free_list = (PyFloatObject *)Py_Type(op); PyObject_INIT(op, &PyFloat_Type); op->ob_fval = fval; return (PyObject *) op; @@ -175,11 +175,11 @@ float_dealloc(PyFloatObject *op) { if (PyFloat_CheckExact(op)) { - op->ob_type = (struct _typeobject *)free_list; + Py_Type(op) = (struct _typeobject *)free_list; free_list = op; } else - op->ob_type->tp_free((PyObject *)op); + Py_Type(op)->tp_free((PyObject *)op); } double @@ -197,7 +197,7 @@ return -1; } - if ((nb = op->ob_type->tp_as_number) == NULL || nb->nb_float == NULL) { + if ((nb = Py_Type(op)->tp_as_number) == NULL || nb->nb_float == NULL) { PyErr_SetString(PyExc_TypeError, "a float is required"); return -1; } @@ -986,7 +986,7 @@ if (!PyString_Check(arg)) { PyErr_Format(PyExc_TypeError, "__getformat__() argument must be string, not %.500s", - arg->ob_type->tp_name); + Py_Type(arg)->tp_name); return NULL; } s = PyString_AS_STRING(arg); @@ -1152,8 +1152,7 @@ }; PyTypeObject PyFloat_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "float", sizeof(PyFloatObject), 0, @@ -1265,7 +1264,7 @@ for (i = 0, p = &list->objects[0]; i < N_FLOATOBJECTS; i++, p++) { - if (PyFloat_CheckExact(p) && p->ob_refcnt != 0) + if (PyFloat_CheckExact(p) && Py_Refcnt(p) != 0) frem++; } next = list->next; @@ -1276,8 +1275,8 @@ i < N_FLOATOBJECTS; i++, p++) { if (!PyFloat_CheckExact(p) || - p->ob_refcnt == 0) { - p->ob_type = (struct _typeobject *) + Py_Refcnt(p) == 0) { + Py_Type(p) = (struct _typeobject *) free_list; free_list = p; } @@ -1309,7 +1308,7 @@ i < N_FLOATOBJECTS; i++, p++) { if (PyFloat_CheckExact(p) && - p->ob_refcnt != 0) { + Py_Refcnt(p) != 0) { char buf[100]; PyFloat_AsString(buf, p); /* XXX(twouters) cast refcount to @@ -1318,7 +1317,7 @@ */ fprintf(stderr, "# \n", - p, (long)p->ob_refcnt, buf); + p, (long)Py_Refcnt(p), buf); } } list = list->next; Modified: python/branches/bcannon-objcap/Objects/frameobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/frameobject.c (original) +++ python/branches/bcannon-objcap/Objects/frameobject.c Thu Sep 6 21:35:45 2007 @@ -509,8 +509,7 @@ PyTypeObject PyFrame_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "frame", sizeof(PyFrameObject), sizeof(PyObject *), @@ -623,7 +622,7 @@ --numfree; f = free_list; free_list = free_list->f_back; - if (f->ob_size < extras) { + if (Py_Size(f) < extras) { f = PyObject_GC_Resize(PyFrameObject, f, extras); if (f == NULL) { Py_DECREF(builtins); Modified: python/branches/bcannon-objcap/Objects/funcobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/funcobject.c (original) +++ python/branches/bcannon-objcap/Objects/funcobject.c Thu Sep 6 21:35:45 2007 @@ -544,8 +544,7 @@ } PyTypeObject PyFunction_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "function", sizeof(PyFunctionObject), 0, @@ -615,7 +614,7 @@ { _PyObject_GC_UNTRACK((PyObject *)cm); Py_XDECREF(cm->cm_callable); - cm->ob_type->tp_free((PyObject *)cm); + Py_Type(cm)->tp_free((PyObject *)cm); } static int @@ -644,9 +643,9 @@ return NULL; } if (type == NULL) - type = (PyObject *)(obj->ob_type); + type = (PyObject *)(Py_Type(obj)); return PyMethod_New(cm->cm_callable, - type, (PyObject *)(type->ob_type)); + type, (PyObject *)(Py_Type(type))); } static int @@ -692,8 +691,7 @@ If you want those, see the staticmethod builtin."); PyTypeObject PyClassMethod_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "classmethod", sizeof(classmethod), 0, @@ -773,7 +771,7 @@ { _PyObject_GC_UNTRACK((PyObject *)sm); Py_XDECREF(sm->sm_callable); - sm->ob_type->tp_free((PyObject *)sm); + Py_Type(sm)->tp_free((PyObject *)sm); } static int @@ -840,8 +838,7 @@ For a more advanced concept, see the classmethod builtin."); PyTypeObject PyStaticMethod_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "staticmethod", sizeof(staticmethod), 0, Modified: python/branches/bcannon-objcap/Objects/genobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/genobject.c (original) +++ python/branches/bcannon-objcap/Objects/genobject.c Thu Sep 6 21:35:45 2007 @@ -28,7 +28,7 @@ if (gen->gi_frame != NULL && gen->gi_frame->f_stacktop != NULL) { /* Generator is paused, so we need to close */ - gen->ob_type->tp_del(self); + Py_Type(gen)->tp_del(self); if (self->ob_refcnt > 0) return; /* resurrected. :( */ } @@ -296,8 +296,7 @@ }; PyTypeObject PyGen_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "generator", /* tp_name */ sizeof(PyGenObject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/intobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/intobject.c (original) +++ python/branches/bcannon-objcap/Objects/intobject.c Thu Sep 6 21:35:45 2007 @@ -56,8 +56,8 @@ p = &((PyIntBlock *)p)->objects[0]; q = p + N_INTOBJECTS; while (--q > p) - q->ob_type = (struct _typeobject *)(q-1); - q->ob_type = NULL; + Py_Type(q) = (struct _typeobject *)(q-1); + Py_Type(q) = NULL; return p + N_INTOBJECTS - 1; } @@ -102,7 +102,7 @@ } /* Inline PyObject_New */ v = free_list; - free_list = (PyIntObject *)v->ob_type; + free_list = (PyIntObject *)Py_Type(v); PyObject_INIT(v, &PyInt_Type); v->ob_ival = ival; return (PyObject *) v; @@ -128,17 +128,17 @@ int_dealloc(PyIntObject *v) { if (PyInt_CheckExact(v)) { - v->ob_type = (struct _typeobject *)free_list; + Py_Type(v) = (struct _typeobject *)free_list; free_list = v; } else - v->ob_type->tp_free((PyObject *)v); + Py_Type(v)->tp_free((PyObject *)v); } static void int_free(PyIntObject *v) { - v->ob_type = (struct _typeobject *)free_list; + Py_Type(v) = (struct _typeobject *)free_list; free_list = v; } @@ -152,7 +152,7 @@ if (op && PyInt_Check(op)) return PyInt_AS_LONG((PyIntObject*) op); - if (op == NULL || (nb = op->ob_type->tp_as_number) == NULL || + if (op == NULL || (nb = Py_Type(op)->tp_as_number) == NULL || nb->nb_int == NULL) { PyErr_SetString(PyExc_TypeError, "an integer is required"); return -1; @@ -207,7 +207,7 @@ return PyInt_AsLong(op); #else - if ((nb = op->ob_type->tp_as_number) == NULL || + if ((nb = Py_Type(op)->tp_as_number) == NULL || (nb->nb_int == NULL && nb->nb_long == 0)) { PyErr_SetString(PyExc_TypeError, "an integer is required"); return -1; @@ -256,7 +256,7 @@ if (op && PyLong_Check(op)) return PyLong_AsUnsignedLongMask(op); - if (op == NULL || (nb = op->ob_type->tp_as_number) == NULL || + if (op == NULL || (nb = Py_Type(op)->tp_as_number) == NULL || nb->nb_int == NULL) { PyErr_SetString(PyExc_TypeError, "an integer is required"); return (unsigned long)-1; @@ -301,7 +301,7 @@ if (op && PyLong_Check(op)) return PyLong_AsUnsignedLongLongMask(op); - if (op == NULL || (nb = op->ob_type->tp_as_number) == NULL || + if (op == NULL || (nb = Py_Type(op)->tp_as_number) == NULL || nb->nb_int == NULL) { PyErr_SetString(PyExc_TypeError, "an integer is required"); return (unsigned PY_LONG_LONG)-1; @@ -1116,8 +1116,7 @@ }; PyTypeObject PyInt_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "int", sizeof(PyIntObject), 0, @@ -1170,7 +1169,7 @@ return 0; /* PyObject_New is inlined */ v = free_list; - free_list = (PyIntObject *)v->ob_type; + free_list = (PyIntObject *)Py_Type(v); PyObject_INIT(v, &PyInt_Type); v->ob_ival = ival; small_ints[ival + NSMALLNEGINTS] = v; @@ -1223,7 +1222,7 @@ ctr++, p++) { if (!PyInt_CheckExact(p) || p->ob_refcnt == 0) { - p->ob_type = (struct _typeobject *) + Py_Type(p) = (struct _typeobject *) free_list; free_list = p; } Modified: python/branches/bcannon-objcap/Objects/iterobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/iterobject.c (original) +++ python/branches/bcannon-objcap/Objects/iterobject.c Thu Sep 6 21:35:45 2007 @@ -94,8 +94,7 @@ }; PyTypeObject PySeqIter_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "iterator", /* tp_name */ sizeof(seqiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -199,8 +198,7 @@ } PyTypeObject PyCallIter_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "callable-iterator", /* tp_name */ sizeof(calliterobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/listobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/listobject.c (original) +++ python/branches/bcannon-objcap/Objects/listobject.c Thu Sep 6 21:35:45 2007 @@ -34,7 +34,7 @@ */ if (allocated >= newsize && newsize >= (allocated >> 1)) { assert(self->ob_item != NULL || newsize == 0); - self->ob_size = newsize; + Py_Size(self) = newsize; return 0; } @@ -58,7 +58,7 @@ return -1; } self->ob_item = items; - self->ob_size = newsize; + Py_Size(self) = newsize; self->allocated = new_allocated; return 0; } @@ -114,7 +114,7 @@ } memset(op->ob_item, 0, nbytes); } - op->ob_size = size; + Py_Size(op) = size; op->allocated = size; _PyObject_GC_TRACK(op); return (PyObject *) op; @@ -128,7 +128,7 @@ return -1; } else - return ((PyListObject *)op) -> ob_size; + return Py_Size(op); } static PyObject *indexerr = NULL; @@ -140,7 +140,7 @@ PyErr_BadInternalCall(); return NULL; } - if (i < 0 || i >= ((PyListObject *)op) -> ob_size) { + if (i < 0 || i >= Py_Size(op)) { if (indexerr == NULL) indexerr = PyString_FromString( "list index out of range"); @@ -161,7 +161,7 @@ PyErr_BadInternalCall(); return -1; } - if (i < 0 || i >= ((PyListObject *)op) -> ob_size) { + if (i < 0 || i >= Py_Size(op)) { Py_XDECREF(newitem); PyErr_SetString(PyExc_IndexError, "list assignment index out of range"); @@ -177,7 +177,7 @@ static int ins1(PyListObject *self, Py_ssize_t where, PyObject *v) { - Py_ssize_t i, n = self->ob_size; + Py_ssize_t i, n = Py_Size(self); PyObject **items; if (v == NULL) { PyErr_BadInternalCall(); @@ -259,7 +259,7 @@ There's a simple test case where somehow this reduces thrashing when a *very* large list is created and immediately deleted. */ - i = op->ob_size; + i = Py_Size(op); while (--i >= 0) { Py_XDECREF(op->ob_item[i]); } @@ -268,7 +268,7 @@ if (num_free_lists < MAXFREELISTS && PyList_CheckExact(op)) free_lists[num_free_lists++] = op; else - op->ob_type->tp_free((PyObject *)op); + Py_Type(op)->tp_free((PyObject *)op); Py_TRASHCAN_SAFE_END(op) } @@ -286,7 +286,7 @@ return 0; } fprintf(fp, "["); - for (i = 0; i < op->ob_size; i++) { + for (i = 0; i < Py_Size(op); i++) { if (i > 0) fprintf(fp, ", "); if (PyObject_Print(op->ob_item[i], fp, 0) != 0) { @@ -311,7 +311,7 @@ return i > 0 ? PyString_FromString("[...]") : NULL; } - if (v->ob_size == 0) { + if (Py_Size(v) == 0) { result = PyString_FromString("[]"); goto Done; } @@ -322,7 +322,7 @@ /* Do repr() on each element. Note that this may mutate the list, so must refetch the list size on each iteration. */ - for (i = 0; i < v->ob_size; ++i) { + for (i = 0; i < Py_Size(v); ++i) { int status; s = PyObject_Repr(v->ob_item[i]); if (s == NULL) @@ -369,7 +369,7 @@ static Py_ssize_t list_length(PyListObject *a) { - return a->ob_size; + return Py_Size(a); } static int @@ -378,7 +378,7 @@ Py_ssize_t i; int cmp; - for (i = 0, cmp = 0 ; cmp == 0 && i < a->ob_size; ++i) + for (i = 0, cmp = 0 ; cmp == 0 && i < Py_Size(a); ++i) cmp = PyObject_RichCompareBool(el, PyList_GET_ITEM(a, i), Py_EQ); return cmp; @@ -387,7 +387,7 @@ static PyObject * list_item(PyListObject *a, Py_ssize_t i) { - if (i < 0 || i >= a->ob_size) { + if (i < 0 || i >= Py_Size(a)) { if (indexerr == NULL) indexerr = PyString_FromString( "list index out of range"); @@ -406,12 +406,12 @@ Py_ssize_t i, len; if (ilow < 0) ilow = 0; - else if (ilow > a->ob_size) - ilow = a->ob_size; + else if (ilow > Py_Size(a)) + ilow = Py_Size(a); if (ihigh < ilow) ihigh = ilow; - else if (ihigh > a->ob_size) - ihigh = a->ob_size; + else if (ihigh > Py_Size(a)) + ihigh = Py_Size(a); len = ihigh - ilow; np = (PyListObject *) PyList_New(len); if (np == NULL) @@ -451,7 +451,7 @@ return NULL; } #define b ((PyListObject *)bb) - size = a->ob_size + b->ob_size; + size = Py_Size(a) + Py_Size(b); if (size < 0) return PyErr_NoMemory(); np = (PyListObject *) PyList_New(size); @@ -460,14 +460,14 @@ } src = a->ob_item; dest = np->ob_item; - for (i = 0; i < a->ob_size; i++) { + for (i = 0; i < Py_Size(a); i++) { PyObject *v = src[i]; Py_INCREF(v); dest[i] = v; } src = b->ob_item; - dest = np->ob_item + a->ob_size; - for (i = 0; i < b->ob_size; i++) { + dest = np->ob_item + Py_Size(a); + for (i = 0; i < Py_Size(b); i++) { PyObject *v = src[i]; Py_INCREF(v); dest[i] = v; @@ -486,17 +486,17 @@ PyObject *elem; if (n < 0) n = 0; - size = a->ob_size * n; + size = Py_Size(a) * n; if (size == 0) return PyList_New(0); - if (n && size/n != a->ob_size) + if (n && size/n != Py_Size(a)) return PyErr_NoMemory(); np = (PyListObject *) PyList_New(size); if (np == NULL) return NULL; items = np->ob_item; - if (a->ob_size == 1) { + if (Py_Size(a) == 1) { elem = a->ob_item[0]; for (i = 0; i < n; i++) { items[i] = elem; @@ -507,7 +507,7 @@ p = np->ob_item; items = a->ob_item; for (i = 0; i < n; i++) { - for (j = 0; j < a->ob_size; j++) { + for (j = 0; j < Py_Size(a); j++) { *p = items[j]; Py_INCREF(*p); p++; @@ -524,8 +524,8 @@ if (item != NULL) { /* Because XDECREF can recursively invoke operations on this list, we make it empty first. */ - i = a->ob_size; - a->ob_size = 0; + i = Py_Size(a); + Py_Size(a) = 0; a->ob_item = NULL; a->allocated = 0; while (--i >= 0) { @@ -571,7 +571,7 @@ else { if (a == b) { /* Special case "a[i:j] = a" -- copy b first */ - v = list_slice(b, 0, b->ob_size); + v = list_slice(b, 0, Py_Size(b)); if (v == NULL) return result; result = list_ass_slice(a, ilow, ihigh, v); @@ -586,18 +586,18 @@ } if (ilow < 0) ilow = 0; - else if (ilow > a->ob_size) - ilow = a->ob_size; + else if (ilow > Py_Size(a)) + ilow = Py_Size(a); if (ihigh < ilow) ihigh = ilow; - else if (ihigh > a->ob_size) - ihigh = a->ob_size; + else if (ihigh > Py_Size(a)) + ihigh = Py_Size(a); norig = ihigh - ilow; assert(norig >= 0); d = n - norig; - if (a->ob_size + d == 0) { + if (Py_Size(a) + d == 0) { Py_XDECREF(v_as_SF); return list_clear(a); } @@ -615,12 +615,12 @@ if (d < 0) { /* Delete -d items */ memmove(&item[ihigh+d], &item[ihigh], - (a->ob_size - ihigh)*sizeof(PyObject *)); - list_resize(a, a->ob_size + d); + (Py_Size(a) - ihigh)*sizeof(PyObject *)); + list_resize(a, Py_Size(a) + d); item = a->ob_item; } else if (d > 0) { /* Insert d items */ - k = a->ob_size; + k = Py_Size(a); if (list_resize(a, k+d) < 0) goto Error; item = a->ob_item; @@ -692,7 +692,7 @@ list_ass_item(PyListObject *a, Py_ssize_t i, PyObject *v) { PyObject *old_value; - if (i < 0 || i >= a->ob_size) { + if (i < 0 || i >= Py_Size(a)) { PyErr_SetString(PyExc_IndexError, "list assignment index out of range"); return -1; @@ -751,7 +751,7 @@ Py_DECREF(b); Py_RETURN_NONE; } - m = self->ob_size; + m = Py_Size(self); if (list_resize(self, m + n) == -1) { Py_DECREF(b); return NULL; @@ -789,14 +789,14 @@ PyErr_Clear(); n = 8; /* arbitrary */ } - m = self->ob_size; + m = Py_Size(self); mn = m + n; if (mn >= m) { /* Make room. */ if (list_resize(self, mn) == -1) goto error; /* Make the list sane again. */ - self->ob_size = m; + Py_Size(self) = m; } /* Else m + n overflowed; on the chance that n lied, and there really * is enough room, ignore it. If n was telling the truth, we'll @@ -815,10 +815,10 @@ } break; } - if (self->ob_size < self->allocated) { + if (Py_Size(self) < self->allocated) { /* steals ref */ - PyList_SET_ITEM(self, self->ob_size, item); - ++self->ob_size; + PyList_SET_ITEM(self, Py_Size(self), item); + ++Py_Size(self); } else { int status = app1(self, item); @@ -829,8 +829,8 @@ } /* Cut back result list if initial guess was too large. */ - if (self->ob_size < self->allocated) - list_resize(self, self->ob_size); /* shrinking can't fail */ + if (Py_Size(self) < self->allocated) + list_resize(self, Py_Size(self)); /* shrinking can't fail */ Py_DECREF(it); Py_RETURN_NONE; @@ -869,20 +869,20 @@ if (!PyArg_ParseTuple(args, "|n:pop", &i)) return NULL; - if (self->ob_size == 0) { + if (Py_Size(self) == 0) { /* Special-case most common failure cause */ PyErr_SetString(PyExc_IndexError, "pop from empty list"); return NULL; } if (i < 0) - i += self->ob_size; - if (i < 0 || i >= self->ob_size) { + i += Py_Size(self); + if (i < 0 || i >= Py_Size(self)) { PyErr_SetString(PyExc_IndexError, "pop index out of range"); return NULL; } v = self->ob_item[i]; - if (i == self->ob_size - 1) { - status = list_resize(self, self->ob_size - 1); + if (i == Py_Size(self) - 1) { + status = list_resize(self, Py_Size(self) - 1); assert(status >= 0); return v; /* and v now owns the reference the list had */ } @@ -1812,8 +1812,7 @@ sortwrapper_dealloc(sortwrapperobject *); static PyTypeObject sortwrapper_type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "sortwrapper", /* tp_name */ sizeof(sortwrapperobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -1930,8 +1929,7 @@ PyDoc_STRVAR(cmpwrapper_doc, "cmp() wrapper for sort with custom keys."); static PyTypeObject cmpwrapper_type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "cmpwrapper", /* tp_name */ sizeof(cmpwrapperobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2014,10 +2012,10 @@ * sorting (allowing mutations during sorting is a core-dump * factory, since ob_item may change). */ - saved_ob_size = self->ob_size; + saved_ob_size = Py_Size(self); saved_ob_item = self->ob_item; saved_allocated = self->allocated; - self->ob_size = 0; + Py_Size(self) = 0; self->ob_item = NULL; self->allocated = -1; /* any operation will reset it to >= 0 */ @@ -2123,8 +2121,8 @@ dsu_fail: final_ob_item = self->ob_item; - i = self->ob_size; - self->ob_size = saved_ob_size; + i = Py_Size(self); + Py_Size(self) = saved_ob_size; self->ob_item = saved_ob_item; self->allocated = saved_allocated; if (final_ob_item != NULL) { @@ -2159,8 +2157,8 @@ static PyObject * listreverse(PyListObject *self) { - if (self->ob_size > 1) - reverse_slice(self->ob_item, self->ob_item + self->ob_size); + if (Py_Size(self) > 1) + reverse_slice(self->ob_item, self->ob_item + Py_Size(self)); Py_RETURN_NONE; } @@ -2173,8 +2171,8 @@ PyErr_BadInternalCall(); return -1; } - if (self->ob_size > 1) - reverse_slice(self->ob_item, self->ob_item + self->ob_size); + if (Py_Size(self) > 1) + reverse_slice(self->ob_item, self->ob_item + Py_Size(self)); return 0; } @@ -2188,7 +2186,7 @@ PyErr_BadInternalCall(); return NULL; } - n = ((PyListObject *)v)->ob_size; + n = Py_Size(v); w = PyTuple_New(n); if (w == NULL) return NULL; @@ -2206,7 +2204,7 @@ static PyObject * listindex(PyListObject *self, PyObject *args) { - Py_ssize_t i, start=0, stop=self->ob_size; + Py_ssize_t i, start=0, stop=Py_Size(self); PyObject *v; if (!PyArg_ParseTuple(args, "O|O&O&:index", &v, @@ -2214,16 +2212,16 @@ _PyEval_SliceIndex, &stop)) return NULL; if (start < 0) { - start += self->ob_size; + start += Py_Size(self); if (start < 0) start = 0; } if (stop < 0) { - stop += self->ob_size; + stop += Py_Size(self); if (stop < 0) stop = 0; } - for (i = start; i < stop && i < self->ob_size; i++) { + for (i = start; i < stop && i < Py_Size(self); i++) { int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ); if (cmp > 0) return PyInt_FromSsize_t(i); @@ -2240,7 +2238,7 @@ Py_ssize_t count = 0; Py_ssize_t i; - for (i = 0; i < self->ob_size; i++) { + for (i = 0; i < Py_Size(self); i++) { int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ); if (cmp > 0) count++; @@ -2255,7 +2253,7 @@ { Py_ssize_t i; - for (i = 0; i < self->ob_size; i++) { + for (i = 0; i < Py_Size(self); i++) { int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ); if (cmp > 0) { if (list_ass_slice(self, i, i+1, @@ -2275,7 +2273,7 @@ { Py_ssize_t i; - for (i = o->ob_size; --i >= 0; ) + for (i = Py_Size(o); --i >= 0; ) Py_VISIT(o->ob_item[i]); return 0; } @@ -2294,7 +2292,7 @@ vl = (PyListObject *)v; wl = (PyListObject *)w; - if (vl->ob_size != wl->ob_size && (op == Py_EQ || op == Py_NE)) { + if (Py_Size(vl) != Py_Size(wl) && (op == Py_EQ || op == Py_NE)) { /* Shortcut: if the lengths differ, the lists differ */ PyObject *res; if (op == Py_EQ) @@ -2306,7 +2304,7 @@ } /* Search for the first index where items are different */ - for (i = 0; i < vl->ob_size && i < wl->ob_size; i++) { + for (i = 0; i < Py_Size(vl) && i < Py_Size(wl); i++) { int k = PyObject_RichCompareBool(vl->ob_item[i], wl->ob_item[i], Py_EQ); if (k < 0) @@ -2315,10 +2313,10 @@ break; } - if (i >= vl->ob_size || i >= wl->ob_size) { + if (i >= Py_Size(vl) || i >= Py_Size(wl)) { /* No more items to compare -- compare sizes */ - Py_ssize_t vs = vl->ob_size; - Py_ssize_t ws = wl->ob_size; + Py_ssize_t vs = Py_Size(vl); + Py_ssize_t ws = Py_Size(wl); int cmp; PyObject *res; switch (op) { @@ -2362,8 +2360,8 @@ return -1; /* Verify list invariants established by PyType_GenericAlloc() */ - assert(0 <= self->ob_size); - assert(self->ob_size <= self->allocated || self->allocated == -1); + assert(0 <= Py_Size(self)); + assert(Py_Size(self) <= self->allocated || self->allocated == -1); assert(self->ob_item != NULL || self->allocated == 0 || self->allocated == -1); @@ -2467,7 +2465,7 @@ PyObject* it; PyObject **src, **dest; - if (PySlice_GetIndicesEx((PySliceObject*)item, self->ob_size, + if (PySlice_GetIndicesEx((PySliceObject*)item, Py_Size(self), &start, &stop, &step, &slicelength) < 0) { return NULL; } @@ -2475,6 +2473,9 @@ if (slicelength <= 0) { return PyList_New(0); } + else if (step == 1) { + return list_slice(self, start, stop); + } else { result = PyList_New(slicelength); if (!result) return NULL; @@ -2513,15 +2514,20 @@ else if (PySlice_Check(item)) { Py_ssize_t start, stop, step, slicelength; - if (PySlice_GetIndicesEx((PySliceObject*)item, self->ob_size, + if (PySlice_GetIndicesEx((PySliceObject*)item, Py_Size(self), &start, &stop, &step, &slicelength) < 0) { return -1; } - /* treat L[slice(a,b)] = v _exactly_ like L[a:b] = v */ - if (step == 1 && ((PySliceObject*)item)->step == Py_None) + if (step == 1) return list_ass_slice(self, start, stop, value); + /* Make sure s[5:2] = [..] inserts at the right place: + before 5, not before 2. */ + if ((step < 0 && start < stop) || + (step > 0 && start > stop)) + stop = start; + if (value == NULL) { /* delete slice */ PyObject **garbage; @@ -2543,32 +2549,37 @@ return -1; } - /* drawing pictures might help - understand these for loops */ + /* drawing pictures might help understand these for + loops. Basically, we memmove the parts of the + list that are *not* part of the slice: step-1 + items for each item that is part of the slice, + and then tail end of the list that was not + covered by the slice */ for (cur = start, i = 0; cur < stop; cur += step, i++) { - Py_ssize_t lim = step; + Py_ssize_t lim = step - 1; garbage[i] = PyList_GET_ITEM(self, cur); - if (cur + step >= self->ob_size) { - lim = self->ob_size - cur - 1; + if (cur + step >= Py_Size(self)) { + lim = Py_Size(self) - cur - 1; } memmove(self->ob_item + cur - i, self->ob_item + cur + 1, lim * sizeof(PyObject *)); } - - for (cur = start + slicelength*step + 1; - cur < self->ob_size; cur++) { - PyList_SET_ITEM(self, cur - slicelength, - PyList_GET_ITEM(self, cur)); + cur = start + slicelength*step; + if (cur < Py_Size(self)) { + memmove(self->ob_item + cur - slicelength, + self->ob_item + cur, + (Py_Size(self) - cur) * + sizeof(PyObject *)); } - self->ob_size -= slicelength; - list_resize(self, self->ob_size); + Py_Size(self) -= slicelength; + list_resize(self, Py_Size(self)); for (i = 0; i < slicelength; i++) { Py_DECREF(garbage[i]); @@ -2579,7 +2590,8 @@ } else { /* assign slice */ - PyObject **garbage, *ins, *seq, **seqitems, **selfitems; + PyObject *ins, *seq; + PyObject **garbage, **seqitems, **selfitems; Py_ssize_t cur, i; /* protect against a[::-1] = a */ @@ -2589,14 +2601,17 @@ } else { seq = PySequence_Fast(value, - "must assign iterable to extended slice"); + "must assign iterable " + "to extended slice"); } if (!seq) return -1; if (PySequence_Fast_GET_SIZE(seq) != slicelength) { PyErr_Format(PyExc_ValueError, - "attempt to assign sequence of size %zd to extended slice of size %zd", + "attempt to assign sequence of " + "size %zd to extended slice of " + "size %zd", PySequence_Fast_GET_SIZE(seq), slicelength); Py_DECREF(seq); @@ -2651,8 +2666,7 @@ }; PyTypeObject PyList_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "list", sizeof(PyListObject), 0, @@ -2717,8 +2731,7 @@ }; PyTypeObject PyListIter_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "listiterator", /* tp_name */ sizeof(listiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2840,8 +2853,7 @@ }; PyTypeObject PyListRevIter_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "listreverseiterator", /* tp_name */ sizeof(listreviterobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/longobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/longobject.c (original) +++ python/branches/bcannon-objcap/Objects/longobject.c Thu Sep 6 21:35:45 2007 @@ -50,13 +50,13 @@ static PyLongObject * long_normalize(register PyLongObject *v) { - Py_ssize_t j = ABS(v->ob_size); + Py_ssize_t j = ABS(Py_Size(v)); Py_ssize_t i = j; while (i > 0 && v->ob_digit[i-1] == 0) --i; if (i != j) - v->ob_size = (v->ob_size < 0) ? -(i) : i; + Py_Size(v) = (Py_Size(v) < 0) ? -(i) : i; return v; } @@ -147,7 +147,7 @@ v = _PyLong_New(ndigits); if (v != NULL) { digit *p = v->ob_digit; - v->ob_size = ndigits; + Py_Size(v) = ndigits; while (ival) { *p++ = (digit)(ival & MASK); ival >>= SHIFT; @@ -189,7 +189,7 @@ frac = ldexp(frac, SHIFT); } if (neg) - v->ob_size = -(v->ob_size); + Py_Size(v) = -(Py_Size(v)); return (PyObject *)v; } @@ -323,7 +323,7 @@ return (unsigned long) -1; } v = (PyLongObject *)vv; - i = v->ob_size; + i = Py_Size(v); x = 0; if (i < 0) { PyErr_SetString(PyExc_OverflowError, @@ -381,7 +381,7 @@ assert(v != NULL); assert(PyLong_Check(v)); - return v->ob_size == 0 ? 0 : (v->ob_size < 0 ? -1 : 1); + return Py_Size(v) == 0 ? 0 : (Py_Size(v) < 0 ? -1 : 1); } size_t @@ -393,7 +393,7 @@ assert(v != NULL); assert(PyLong_Check(v)); - ndigits = ABS(v->ob_size); + ndigits = ABS(Py_Size(v)); assert(ndigits == 0 || v->ob_digit[ndigits - 1] != 0); if (ndigits > 0) { digit msd = v->ob_digit[ndigits - 1]; @@ -519,7 +519,7 @@ } } - v->ob_size = is_signed ? -idigit : idigit; + Py_Size(v) = is_signed ? -idigit : idigit; return (PyObject *)long_normalize(v); } @@ -540,8 +540,8 @@ assert(v != NULL && PyLong_Check(v)); - if (v->ob_size < 0) { - ndigits = -(v->ob_size); + if (Py_Size(v) < 0) { + ndigits = -(Py_Size(v)); if (!is_signed) { PyErr_SetString(PyExc_TypeError, "can't convert negative long to unsigned"); @@ -550,7 +550,7 @@ do_twos_comp = 1; } else { - ndigits = v->ob_size; + ndigits = Py_Size(v); do_twos_comp = 0; } @@ -686,7 +686,7 @@ return -1; } v = (PyLongObject *)vv; - i = v->ob_size; + i = Py_Size(v); sign = 1; if (i < 0) { sign = -1; @@ -847,7 +847,7 @@ v = _PyLong_New(ndigits); if (v != NULL) { digit *p = v->ob_digit; - v->ob_size = negative ? -ndigits : ndigits; + Py_Size(v) = negative ? -ndigits : ndigits; t = (unsigned PY_LONG_LONG)ival; while (t) { *p++ = (digit)(t & MASK); @@ -875,7 +875,7 @@ v = _PyLong_New(ndigits); if (v != NULL) { digit *p = v->ob_digit; - v->ob_size = ndigits; + Py_Size(v) = ndigits; while (ival) { *p++ = (digit)(ival & MASK); ival >>= SHIFT; @@ -1117,7 +1117,7 @@ static PyLongObject * muladd1(PyLongObject *a, wdigit n, wdigit extra) { - Py_ssize_t size_a = ABS(a->ob_size); + Py_ssize_t size_a = ABS(Py_Size(a)); PyLongObject *z = _PyLong_New(size_a+1); twodigits carry = extra; Py_ssize_t i; @@ -1163,7 +1163,7 @@ static PyLongObject * divrem1(PyLongObject *a, digit n, digit *prem) { - const Py_ssize_t size = ABS(a->ob_size); + const Py_ssize_t size = ABS(Py_Size(a)); PyLongObject *z; assert(n > 0 && n <= MASK); @@ -1194,7 +1194,7 @@ return NULL; } assert(base >= 2 && base <= 36); - size_a = ABS(a->ob_size); + size_a = ABS(Py_Size(a)); /* Compute a rough upper bound for the length of the string */ i = base; @@ -1597,7 +1597,7 @@ z = _PyLong_New(size_z); if (z == NULL) return NULL; - z->ob_size = 0; + Py_Size(z) = 0; /* `convwidth` consecutive input digits are treated as a single * digit in base `convmultmax`. @@ -1627,7 +1627,7 @@ /* Multiply z by convmult, and add c. */ pz = z->ob_digit; - pzstop = pz + z->ob_size; + pzstop = pz + Py_Size(z); for (; pz < pzstop; ++pz) { c += (twodigits)*pz * convmult; *pz = (digit)(c & MASK); @@ -1636,14 +1636,14 @@ /* carry off the current end? */ if (c) { assert(c < BASE); - if (z->ob_size < size_z) { + if (Py_Size(z) < size_z) { *pz = (digit)c; - ++z->ob_size; + ++Py_Size(z); } else { PyLongObject *tmp; /* Extremely rare. Get more space. */ - assert(z->ob_size == size_z); + assert(Py_Size(z) == size_z); tmp = _PyLong_New(size_z + 1); if (tmp == NULL) { Py_DECREF(z); @@ -1665,7 +1665,7 @@ if (str == start) goto onError; if (sign < 0) - z->ob_size = -(z->ob_size); + Py_Size(z) = -(Py_Size(z)); if (*str == 'L' || *str == 'l') str++; while (*str && isspace(Py_CHARMASK(*str))) @@ -1726,7 +1726,7 @@ long_divrem(PyLongObject *a, PyLongObject *b, PyLongObject **pdiv, PyLongObject **prem) { - Py_ssize_t size_a = ABS(a->ob_size), size_b = ABS(b->ob_size); + Py_ssize_t size_a = ABS(Py_Size(a)), size_b = ABS(Py_Size(b)); PyLongObject *z; if (size_b == 0) { @@ -1778,7 +1778,7 @@ static PyLongObject * x_divrem(PyLongObject *v1, PyLongObject *w1, PyLongObject **prem) { - Py_ssize_t size_v = ABS(v1->ob_size), size_w = ABS(w1->ob_size); + Py_ssize_t size_v = ABS(Py_Size(v1)), size_w = ABS(Py_Size(w1)); digit d = (digit) ((twodigits)BASE / (w1->ob_digit[size_w-1] + 1)); PyLongObject *v = mul1(v1, d); PyLongObject *w = mul1(w1, d); @@ -1792,10 +1792,10 @@ } assert(size_v >= size_w && size_w > 1); /* Assert checks by div() */ - assert(v->ob_refcnt == 1); /* Since v will be used as accumulator! */ - assert(size_w == ABS(w->ob_size)); /* That's how d was calculated */ + assert(Py_Refcnt(v) == 1); /* Since v will be used as accumulator! */ + assert(size_w == ABS(Py_Size(w))); /* That's how d was calculated */ - size_v = ABS(v->ob_size); + size_v = ABS(Py_Size(v)); k = size_v - size_w; a = _PyLong_New(k + 1); @@ -1878,7 +1878,7 @@ static void long_dealloc(PyObject *v) { - v->ob_type->tp_free(v); + Py_Type(v)->tp_free(v); } static PyObject * @@ -1898,21 +1898,21 @@ { Py_ssize_t sign; - if (a->ob_size != b->ob_size) { - if (ABS(a->ob_size) == 0 && ABS(b->ob_size) == 0) + if (Py_Size(a) != Py_Size(b)) { + if (ABS(Py_Size(a)) == 0 && ABS(Py_Size(b)) == 0) sign = 0; else - sign = a->ob_size - b->ob_size; + sign = Py_Size(a) - Py_Size(b); } else { - Py_ssize_t i = ABS(a->ob_size); + Py_ssize_t i = ABS(Py_Size(a)); while (--i >= 0 && a->ob_digit[i] == b->ob_digit[i]) ; if (i < 0) sign = 0; else { sign = (int)a->ob_digit[i] - (int)b->ob_digit[i]; - if (a->ob_size < 0) + if (Py_Size(a) < 0) sign = -sign; } } @@ -1955,7 +1955,7 @@ static PyLongObject * x_add(PyLongObject *a, PyLongObject *b) { - Py_ssize_t size_a = ABS(a->ob_size), size_b = ABS(b->ob_size); + Py_ssize_t size_a = ABS(Py_Size(a)), size_b = ABS(Py_Size(b)); PyLongObject *z; int i; digit carry = 0; @@ -1989,7 +1989,7 @@ static PyLongObject * x_sub(PyLongObject *a, PyLongObject *b) { - Py_ssize_t size_a = ABS(a->ob_size), size_b = ABS(b->ob_size); + Py_ssize_t size_a = ABS(Py_Size(a)), size_b = ABS(Py_Size(b)); PyLongObject *z; Py_ssize_t i; int sign = 1; @@ -2099,15 +2099,15 @@ x_mul(PyLongObject *a, PyLongObject *b) { PyLongObject *z; - Py_ssize_t size_a = ABS(a->ob_size); - Py_ssize_t size_b = ABS(b->ob_size); + Py_ssize_t size_a = ABS(Py_Size(a)); + Py_ssize_t size_b = ABS(Py_Size(b)); Py_ssize_t i; z = _PyLong_New(size_a + size_b); if (z == NULL) return NULL; - memset(z->ob_digit, 0, z->ob_size * sizeof(digit)); + memset(z->ob_digit, 0, Py_Size(z) * sizeof(digit)); if (a == b) { /* Efficient squaring per HAC, Algorithm 14.16: * http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf @@ -2191,7 +2191,7 @@ { PyLongObject *hi, *lo; Py_ssize_t size_lo, size_hi; - const Py_ssize_t size_n = ABS(n->ob_size); + const Py_ssize_t size_n = ABS(Py_Size(n)); size_lo = MIN(size_n, size); size_hi = size_n - size_lo; @@ -2220,8 +2220,8 @@ static PyLongObject * k_mul(PyLongObject *a, PyLongObject *b) { - Py_ssize_t asize = ABS(a->ob_size); - Py_ssize_t bsize = ABS(b->ob_size); + Py_ssize_t asize = ABS(Py_Size(a)); + Py_ssize_t bsize = ABS(Py_Size(b)); PyLongObject *ah = NULL; PyLongObject *al = NULL; PyLongObject *bh = NULL; @@ -2273,7 +2273,7 @@ /* Split a & b into hi & lo pieces. */ shift = bsize >> 1; if (kmul_split(a, shift, &ah, &al) < 0) goto fail; - assert(ah->ob_size > 0); /* the split isn't degenerate */ + assert(Py_Size(ah) > 0); /* the split isn't degenerate */ if (a == b) { bh = ah; @@ -2304,20 +2304,20 @@ if (ret == NULL) goto fail; #ifdef Py_DEBUG /* Fill with trash, to catch reference to uninitialized digits. */ - memset(ret->ob_digit, 0xDF, ret->ob_size * sizeof(digit)); + memset(ret->ob_digit, 0xDF, Py_Size(ret) * sizeof(digit)); #endif /* 2. t1 <- ah*bh, and copy into high digits of result. */ if ((t1 = k_mul(ah, bh)) == NULL) goto fail; - assert(t1->ob_size >= 0); - assert(2*shift + t1->ob_size <= ret->ob_size); + assert(Py_Size(t1) >= 0); + assert(2*shift + Py_Size(t1) <= Py_Size(ret)); memcpy(ret->ob_digit + 2*shift, t1->ob_digit, - t1->ob_size * sizeof(digit)); + Py_Size(t1) * sizeof(digit)); /* Zero-out the digits higher than the ah*bh copy. */ - i = ret->ob_size - 2*shift - t1->ob_size; + i = Py_Size(ret) - 2*shift - Py_Size(t1); if (i) - memset(ret->ob_digit + 2*shift + t1->ob_size, 0, + memset(ret->ob_digit + 2*shift + Py_Size(t1), 0, i * sizeof(digit)); /* 3. t2 <- al*bl, and copy into the low digits. */ @@ -2325,23 +2325,23 @@ Py_DECREF(t1); goto fail; } - assert(t2->ob_size >= 0); - assert(t2->ob_size <= 2*shift); /* no overlap with high digits */ - memcpy(ret->ob_digit, t2->ob_digit, t2->ob_size * sizeof(digit)); + assert(Py_Size(t2) >= 0); + assert(Py_Size(t2) <= 2*shift); /* no overlap with high digits */ + memcpy(ret->ob_digit, t2->ob_digit, Py_Size(t2) * sizeof(digit)); /* Zero out remaining digits. */ - i = 2*shift - t2->ob_size; /* number of uninitialized digits */ + i = 2*shift - Py_Size(t2); /* number of uninitialized digits */ if (i) - memset(ret->ob_digit + t2->ob_size, 0, i * sizeof(digit)); + memset(ret->ob_digit + Py_Size(t2), 0, i * sizeof(digit)); /* 4 & 5. Subtract ah*bh (t1) and al*bl (t2). We do al*bl first * because it's fresher in cache. */ - i = ret->ob_size - shift; /* # digits after shift */ - (void)v_isub(ret->ob_digit + shift, i, t2->ob_digit, t2->ob_size); + i = Py_Size(ret) - shift; /* # digits after shift */ + (void)v_isub(ret->ob_digit + shift, i, t2->ob_digit, Py_Size(t2)); Py_DECREF(t2); - (void)v_isub(ret->ob_digit + shift, i, t1->ob_digit, t1->ob_size); + (void)v_isub(ret->ob_digit + shift, i, t1->ob_digit, Py_Size(t1)); Py_DECREF(t1); /* 6. t3 <- (ah+al)(bh+bl), and add into result. */ @@ -2366,12 +2366,12 @@ Py_DECREF(t1); Py_DECREF(t2); if (t3 == NULL) goto fail; - assert(t3->ob_size >= 0); + assert(Py_Size(t3) >= 0); /* Add t3. It's not obvious why we can't run out of room here. * See the (*) comment after this function. */ - (void)v_iadd(ret->ob_digit + shift, i, t3->ob_digit, t3->ob_size); + (void)v_iadd(ret->ob_digit + shift, i, t3->ob_digit, Py_Size(t3)); Py_DECREF(t3); return long_normalize(ret); @@ -2441,8 +2441,8 @@ static PyLongObject * k_lopsided_mul(PyLongObject *a, PyLongObject *b) { - const Py_ssize_t asize = ABS(a->ob_size); - Py_ssize_t bsize = ABS(b->ob_size); + const Py_ssize_t asize = ABS(Py_Size(a)); + Py_ssize_t bsize = ABS(Py_Size(b)); Py_ssize_t nbdone; /* # of b digits already multiplied */ PyLongObject *ret; PyLongObject *bslice = NULL; @@ -2454,7 +2454,7 @@ ret = _PyLong_New(asize + bsize); if (ret == NULL) return NULL; - memset(ret->ob_digit, 0, ret->ob_size * sizeof(digit)); + memset(ret->ob_digit, 0, Py_Size(ret) * sizeof(digit)); /* Successive slices of b are copied into bslice. */ bslice = _PyLong_New(asize); @@ -2469,14 +2469,14 @@ /* Multiply the next slice of b by a. */ memcpy(bslice->ob_digit, b->ob_digit + nbdone, nbtouse * sizeof(digit)); - bslice->ob_size = nbtouse; + Py_Size(bslice) = nbtouse; product = k_mul(a, bslice); if (product == NULL) goto fail; /* Add into result. */ - (void)v_iadd(ret->ob_digit + nbdone, ret->ob_size - nbdone, - product->ob_digit, product->ob_size); + (void)v_iadd(ret->ob_digit + nbdone, Py_Size(ret) - nbdone, + product->ob_digit, Py_Size(product)); Py_DECREF(product); bsize -= nbtouse; @@ -2540,8 +2540,8 @@ if (long_divrem(v, w, &div, &mod) < 0) return -1; - if ((mod->ob_size < 0 && w->ob_size > 0) || - (mod->ob_size > 0 && w->ob_size < 0)) { + if ((Py_Size(mod) < 0 && Py_Size(w) > 0) || + (Py_Size(mod) > 0 && Py_Size(w) < 0)) { PyLongObject *temp; PyLongObject *one; temp = (PyLongObject *) long_add(mod, w); @@ -2729,7 +2729,7 @@ return Py_NotImplemented; } - if (b->ob_size < 0) { /* if exponent is negative */ + if (Py_Size(b) < 0) { /* if exponent is negative */ if (c) { PyErr_SetString(PyExc_TypeError, "pow() 2nd argument " "cannot be negative when 3rd argument specified"); @@ -2748,7 +2748,7 @@ if (c) { /* if modulus == 0: raise ValueError() */ - if (c->ob_size == 0) { + if (Py_Size(c) == 0) { PyErr_SetString(PyExc_ValueError, "pow() 3rd argument cannot be 0"); goto Error; @@ -2757,7 +2757,7 @@ /* if modulus < 0: negativeOutput = True modulus = -modulus */ - if (c->ob_size < 0) { + if (Py_Size(c) < 0) { negativeOutput = 1; temp = (PyLongObject *)_PyLong_Copy(c); if (temp == NULL) @@ -2770,7 +2770,7 @@ /* if modulus == 1: return 0 */ - if ((c->ob_size == 1) && (c->ob_digit[0] == 1)) { + if ((Py_Size(c) == 1) && (c->ob_digit[0] == 1)) { z = (PyLongObject *)PyLong_FromLong(0L); goto Done; } @@ -2778,7 +2778,7 @@ /* if base < 0: base = base % modulus Having the base positive just makes things easier. */ - if (a->ob_size < 0) { + if (Py_Size(a) < 0) { if (l_divmod(a, c, NULL, &temp) < 0) goto Error; Py_DECREF(a); @@ -2819,10 +2819,10 @@ REDUCE(result) \ } - if (b->ob_size <= FIVEARY_CUTOFF) { + if (Py_Size(b) <= FIVEARY_CUTOFF) { /* Left-to-right binary exponentiation (HAC Algorithm 14.79) */ /* http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf */ - for (i = b->ob_size - 1; i >= 0; --i) { + for (i = Py_Size(b) - 1; i >= 0; --i) { digit bi = b->ob_digit[i]; for (j = 1 << (SHIFT-1); j != 0; j >>= 1) { @@ -2839,7 +2839,7 @@ for (i = 1; i < 32; ++i) MULT(table[i-1], a, table[i]) - for (i = b->ob_size - 1; i >= 0; --i) { + for (i = Py_Size(b) - 1; i >= 0; --i) { const digit bi = b->ob_digit[i]; for (j = SHIFT - 5; j >= 0; j -= 5) { @@ -2852,7 +2852,7 @@ } } - if (negativeOutput && (z->ob_size != 0)) { + if (negativeOutput && (Py_Size(z) != 0)) { temp = (PyLongObject *)long_sub(z, c); if (temp == NULL) goto Error; @@ -2869,7 +2869,7 @@ } /* fall through */ Done: - if (b->ob_size > FIVEARY_CUTOFF) { + if (Py_Size(b) > FIVEARY_CUTOFF) { for (i = 0; i < 32; ++i) Py_XDECREF(table[i]); } @@ -2893,7 +2893,7 @@ Py_DECREF(w); if (x == NULL) return NULL; - x->ob_size = -(x->ob_size); + Py_Size(x) = -(Py_Size(x)); return (PyObject *)x; } @@ -2935,7 +2935,7 @@ static int long_nonzero(PyLongObject *v) { - return ABS(v->ob_size) != 0; + return ABS(Py_Size(v)) != 0; } static PyObject * @@ -2949,7 +2949,7 @@ CONVERT_BINOP((PyObject *)v, (PyObject *)w, &a, &b); - if (a->ob_size < 0) { + if (Py_Size(a) < 0) { /* Right shifting negative numbers is harder */ PyLongObject *a1, *a2; a1 = (PyLongObject *) long_invert(a); @@ -2973,7 +2973,7 @@ goto rshift_error; } wordshift = shiftby / SHIFT; - newsize = ABS(a->ob_size) - wordshift; + newsize = ABS(Py_Size(a)) - wordshift; if (newsize <= 0) { z = _PyLong_New(0); Py_DECREF(a); @@ -2987,8 +2987,8 @@ z = _PyLong_New(newsize); if (z == NULL) goto rshift_error; - if (a->ob_size < 0) - z->ob_size = -(z->ob_size); + if (Py_Size(a) < 0) + Py_Size(z) = -(Py_Size(z)); for (i = 0, j = wordshift; i < newsize; i++, j++) { z->ob_digit[i] = (a->ob_digit[j] >> loshift) & lomask; if (i+1 < newsize) @@ -3076,7 +3076,7 @@ digit diga, digb; PyObject *v; - if (a->ob_size < 0) { + if (Py_Size(a) < 0) { a = (PyLongObject *) long_invert(a); if (a == NULL) return NULL; @@ -3086,7 +3086,7 @@ Py_INCREF(a); maska = 0; } - if (b->ob_size < 0) { + if (Py_Size(b) < 0) { b = (PyLongObject *) long_invert(b); if (b == NULL) { Py_DECREF(a); @@ -3135,8 +3135,8 @@ whose length should be ignored. */ - size_a = a->ob_size; - size_b = b->ob_size; + size_a = Py_Size(a); + size_b = Py_Size(b); size_z = op == '&' ? (maska ? size_b @@ -3343,7 +3343,7 @@ if (tmp == NULL) return NULL; assert(PyLong_CheckExact(tmp)); - n = tmp->ob_size; + n = Py_Size(tmp); if (n < 0) n = -n; newobj = (PyLongObject *)type->tp_alloc(type, n); @@ -3352,7 +3352,7 @@ return NULL; } assert(PyLong_Check(newobj)); - newobj->ob_size = tmp->ob_size; + Py_Size(newobj) = Py_Size(tmp); for (i = 0; i < n; i++) newobj->ob_digit[i] = tmp->ob_digit[i]; Py_DECREF(tmp); Modified: python/branches/bcannon-objcap/Objects/methodobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/methodobject.c (original) +++ python/branches/bcannon-objcap/Objects/methodobject.c Thu Sep 6 21:35:45 2007 @@ -231,8 +231,7 @@ PyTypeObject PyCFunction_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "builtin_function_or_method", sizeof(PyCFunctionObject), 0, Modified: python/branches/bcannon-objcap/Objects/moduleobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/moduleobject.c (original) +++ python/branches/bcannon-objcap/Objects/moduleobject.c Thu Sep 6 21:35:45 2007 @@ -186,7 +186,7 @@ _PyModule_Clear((PyObject *)m); Py_DECREF(m->md_dict); } - m->ob_type->tp_free((PyObject *)m); + Py_Type(m)->tp_free((PyObject *)m); } static PyObject * @@ -225,8 +225,7 @@ The name must be a string; the optional doc argument can have any type."); PyTypeObject PyModule_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "module", /* tp_name */ sizeof(PyModuleObject), /* tp_size */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/object.c ============================================================================== --- python/branches/bcannon-objcap/Objects/object.c (original) +++ python/branches/bcannon-objcap/Objects/object.c Thu Sep 6 21:35:45 2007 @@ -214,7 +214,7 @@ if (op == NULL) return PyErr_NoMemory(); /* Any changes should be reflected in PyObject_INIT (objimpl.h) */ - op->ob_type = tp; + Py_Type(op) = tp; _Py_NewReference(op); return op; } @@ -226,7 +226,7 @@ return (PyVarObject *) PyErr_NoMemory(); /* Any changes should be reflected in PyObject_INIT_VAR */ op->ob_size = size; - op->ob_type = tp; + Py_Type(op) = tp; _Py_NewReference((PyObject *)op); return op; } @@ -287,7 +287,7 @@ universally available */ fprintf(fp, "", (long)op->ob_refcnt, op); - else if (op->ob_type->tp_print == NULL) { + else if (Py_Type(op)->tp_print == NULL) { PyObject *s; if (flags & Py_PRINT_RAW) s = PyObject_Str(op); @@ -302,7 +302,7 @@ Py_XDECREF(s); } else - ret = (*op->ob_type->tp_print)(op, fp, flags); + ret = (*Py_Type(op)->tp_print)(op, fp, flags); } if (ret == 0) { if (ferror(fp)) { @@ -335,7 +335,7 @@ "type : %s\n" "refcount: %ld\n" "address : %p\n", - op->ob_type==NULL ? "NULL" : op->ob_type->tp_name, + Py_Type(op)==NULL ? "NULL" : Py_Type(op)->tp_name, (long)op->ob_refcnt, op); } @@ -354,12 +354,12 @@ #endif if (v == NULL) return PyString_FromString(""); - else if (v->ob_type->tp_repr == NULL) + else if (Py_Type(v)->tp_repr == NULL) return PyString_FromFormat("<%s object at %p>", - v->ob_type->tp_name, v); + Py_Type(v)->tp_name, v); else { PyObject *res; - res = (*v->ob_type->tp_repr)(v); + res = (*Py_Type(v)->tp_repr)(v); if (res == NULL) return NULL; #ifdef Py_USING_UNICODE @@ -376,7 +376,7 @@ if (!PyString_Check(res)) { PyErr_Format(PyExc_TypeError, "__repr__ returned non-string (type %.200s)", - res->ob_type->tp_name); + Py_Type(res)->tp_name); Py_DECREF(res); return NULL; } @@ -401,10 +401,10 @@ return v; } #endif - if (v->ob_type->tp_str == NULL) + if (Py_Type(v)->tp_str == NULL) return PyObject_Repr(v); - res = (*v->ob_type->tp_str)(v); + res = (*Py_Type(v)->tp_str)(v); if (res == NULL) return NULL; type_ok = PyString_Check(res); @@ -414,7 +414,7 @@ if (!type_ok) { PyErr_Format(PyExc_TypeError, "__str__ returned non-string (type %.200s)", - res->ob_type->tp_name); + Py_Type(res)->tp_name); Py_DECREF(res); return NULL; } @@ -488,8 +488,8 @@ res = v; } else { - if (v->ob_type->tp_str != NULL) - res = (*v->ob_type->tp_str)(v); + if (Py_Type(v)->tp_str != NULL) + res = (*Py_Type(v)->tp_str)(v); else res = PyObject_Repr(v); } @@ -1062,8 +1062,8 @@ { PyObject *w, *res; - if (v->ob_type->tp_getattr != NULL) - return (*v->ob_type->tp_getattr)(v, (char*)name); + if (Py_Type(v)->tp_getattr != NULL) + return (*Py_Type(v)->tp_getattr)(v, (char*)name); w = PyString_InternFromString(name); if (w == NULL) return NULL; @@ -1090,8 +1090,8 @@ PyObject *s; int res; - if (v->ob_type->tp_setattr != NULL) - return (*v->ob_type->tp_setattr)(v, (char*)name, w); + if (Py_Type(v)->tp_setattr != NULL) + return (*Py_Type(v)->tp_setattr)(v, (char*)name, w); s = PyString_InternFromString(name); if (s == NULL) return -1; @@ -1103,7 +1103,7 @@ PyObject * PyObject_GetAttr(PyObject *v, PyObject *name) { - PyTypeObject *tp = v->ob_type; + PyTypeObject *tp = Py_Type(v); if (!PyString_Check(name)) { #ifdef Py_USING_UNICODE @@ -1120,7 +1120,7 @@ { PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", - name->ob_type->tp_name); + Py_Type(name)->tp_name); return NULL; } } @@ -1149,7 +1149,7 @@ int PyObject_SetAttr(PyObject *v, PyObject *name, PyObject *value) { - PyTypeObject *tp = v->ob_type; + PyTypeObject *tp = Py_Type(v); int err; if (!PyString_Check(name)){ @@ -1167,7 +1167,7 @@ { PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", - name->ob_type->tp_name); + Py_Type(name)->tp_name); return -1; } } @@ -1209,7 +1209,7 @@ _PyObject_GetDictPtr(PyObject *obj) { Py_ssize_t dictoffset; - PyTypeObject *tp = obj->ob_type; + PyTypeObject *tp = Py_Type(obj); if (!(tp->tp_flags & Py_TPFLAGS_HAVE_CLASS)) return NULL; @@ -1244,7 +1244,7 @@ PyObject * PyObject_GenericGetAttr(PyObject *obj, PyObject *name) { - PyTypeObject *tp = obj->ob_type; + PyTypeObject *tp = Py_Type(obj); PyObject *descr = NULL; PyObject *res = NULL; descrgetfunc f; @@ -1266,7 +1266,7 @@ { PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", - name->ob_type->tp_name); + Py_Type(name)->tp_name); return NULL; } } @@ -1346,7 +1346,7 @@ } if (f != NULL) { - res = f(descr, obj, (PyObject *)obj->ob_type); + res = f(descr, obj, (PyObject *)Py_Type(obj)); Py_DECREF(descr); goto done; } @@ -1368,7 +1368,7 @@ int PyObject_GenericSetAttr(PyObject *obj, PyObject *name, PyObject *value) { - PyTypeObject *tp = obj->ob_type; + PyTypeObject *tp = Py_Type(obj); PyObject *descr; descrsetfunc f; PyObject **dictptr; @@ -1389,7 +1389,7 @@ { PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", - name->ob_type->tp_name); + Py_Type(name)->tp_name); return -1; } } @@ -1683,7 +1683,7 @@ if (!PyList_Check(names)) { PyErr_Format(PyExc_TypeError, "dir(): expected keys() of locals to be a list, " - "not '%.200s'", names->ob_type->tp_name); + "not '%.200s'", Py_Type(names)->tp_name); Py_DECREF(names); return NULL; } @@ -1818,7 +1818,7 @@ if (!PyList_Check(result)) { PyErr_Format(PyExc_TypeError, "__dir__() must return a list, not %.200s", - result->ob_type->tp_name); + Py_Type(result)->tp_name); Py_DECREF(result); result = NULL; } @@ -1880,8 +1880,7 @@ static PyTypeObject PyNone_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "NoneType", 0, 0, @@ -1898,7 +1897,8 @@ }; PyObject _Py_NoneStruct = { - PyObject_HEAD_INIT(&PyNone_Type) + _PyObject_EXTRA_INIT + 1, &PyNone_Type }; /* NotImplemented is an object that can be used to signal that an @@ -1911,8 +1911,7 @@ } static PyTypeObject PyNotImplemented_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "NotImplementedType", 0, 0, @@ -1929,7 +1928,8 @@ }; PyObject _Py_NotImplementedStruct = { - PyObject_HEAD_INIT(&PyNotImplemented_Type) + _PyObject_EXTRA_INIT + 1, &PyNotImplemented_Type }; void @@ -1997,7 +1997,7 @@ void _Py_Dealloc(PyObject *op) { - destructor dealloc = op->ob_type->tp_dealloc; + destructor dealloc = Py_Type(op)->tp_dealloc; _Py_ForgetReference(op); (*dealloc)(op); } @@ -2028,7 +2028,7 @@ fprintf(fp, "Remaining object addresses:\n"); for (op = refchain._ob_next; op != &refchain; op = op->_ob_next) fprintf(fp, "%p [%" PY_FORMAT_SIZE_T "d] %s\n", op, - op->ob_refcnt, op->ob_type->tp_name); + op->ob_refcnt, Py_Type(op)->tp_name); } PyObject * @@ -2046,7 +2046,7 @@ return NULL; for (i = 0; (n == 0 || i < n) && op != &refchain; i++) { while (op == self || op == args || op == res || op == t || - (t != NULL && op->ob_type != (PyTypeObject *) t)) { + (t != NULL && Py_Type(op) != (PyTypeObject *) t)) { op = op->_ob_next; if (op == &refchain) return res; @@ -2189,7 +2189,7 @@ { while (_PyTrash_delete_later) { PyObject *op = _PyTrash_delete_later; - destructor dealloc = op->ob_type->tp_dealloc; + destructor dealloc = Py_Type(op)->tp_dealloc; _PyTrash_delete_later = (PyObject*) _Py_AS_GC(op)->gc.gc_prev; Modified: python/branches/bcannon-objcap/Objects/obmalloc.c ============================================================================== --- python/branches/bcannon-objcap/Objects/obmalloc.c (original) +++ python/branches/bcannon-objcap/Objects/obmalloc.c Thu Sep 6 21:35:45 2007 @@ -675,8 +675,8 @@ /* This is only useful when running memory debuggers such as * Purify or Valgrind. Uncomment to use. * -#define Py_USING_MEMORY_DEBUGGER */ +#define Py_USING_MEMORY_DEBUGGER #ifdef Py_USING_MEMORY_DEBUGGER Modified: python/branches/bcannon-objcap/Objects/setobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/setobject.c (original) +++ python/branches/bcannon-objcap/Objects/setobject.c Thu Sep 6 21:35:45 2007 @@ -3,7 +3,7 @@ Written and maintained by Raymond D. Hettinger Derived from Lib/sets.py and Objects/dictobject.c. - Copyright (c) 2003-6 Python Software Foundation. + Copyright (c) 2003-2007 Python Software Foundation. All rights reserved. */ @@ -561,7 +561,7 @@ if (num_free_sets < MAXFREESETS && PyAnySet_CheckExact(so)) free_sets[num_free_sets++] = so; else - so->ob_type->tp_free(so); + Py_Type(so)->tp_free(so); Py_TRASHCAN_SAFE_END(so) } @@ -860,8 +860,7 @@ } static PyTypeObject PySetIter_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "setiterator", /* tp_name */ sizeof(setiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -987,7 +986,7 @@ (type == &PySet_Type || type == &PyFrozenSet_Type)) { so = free_sets[--num_free_sets]; assert (so != NULL && PyAnySet_CheckExact(so)); - so->ob_type = type; + Py_Type(so) = type; _Py_NewReference((PyObject *)so); EMPTY_TO_MINSIZE(so); PyObject_GC_Track(so); @@ -1113,8 +1112,8 @@ memcpy(b->smalltable, tab, sizeof(tab)); } - if (PyType_IsSubtype(a->ob_type, &PyFrozenSet_Type) && - PyType_IsSubtype(b->ob_type, &PyFrozenSet_Type)) { + if (PyType_IsSubtype(Py_Type(a), &PyFrozenSet_Type) && + PyType_IsSubtype(Py_Type(b), &PyFrozenSet_Type)) { h = a->hash; a->hash = b->hash; b->hash = h; } else { a->hash = -1; @@ -1125,7 +1124,7 @@ static PyObject * set_copy(PySetObject *so) { - return make_new_set(so->ob_type, (PyObject *)so); + return make_new_set(Py_Type(so), (PyObject *)so); } static PyObject * @@ -1203,7 +1202,7 @@ if ((PyObject *)so == other) return set_copy(so); - result = (PySetObject *)make_new_set(so->ob_type, NULL); + result = (PySetObject *)make_new_set(Py_Type(so), NULL); if (result == NULL) return NULL; @@ -1390,7 +1389,7 @@ return NULL; } - result = make_new_set(so->ob_type, NULL); + result = make_new_set(Py_Type(so), NULL); if (result == NULL) return NULL; @@ -1491,7 +1490,7 @@ Py_INCREF(other); otherset = (PySetObject *)other; } else { - otherset = (PySetObject *)make_new_set(so->ob_type, other); + otherset = (PySetObject *)make_new_set(Py_Type(so), other); if (otherset == NULL) return NULL; } @@ -1522,7 +1521,7 @@ PyObject *rv; PySetObject *otherset; - otherset = (PySetObject *)make_new_set(so->ob_type, other); + otherset = (PySetObject *)make_new_set(Py_Type(so), other); if (otherset == NULL) return NULL; rv = set_symmetric_difference_update(otherset, (PyObject *)so); @@ -1789,7 +1788,7 @@ dict = Py_None; Py_INCREF(dict); } - result = PyTuple_Pack(3, so->ob_type, args, dict); + result = PyTuple_Pack(3, Py_Type(so), args, dict); done: Py_XDECREF(args); Py_XDECREF(keys); @@ -1806,7 +1805,7 @@ if (!PyAnySet_Check(self)) return -1; - if (!PyArg_UnpackTuple(args, self->ob_type->tp_name, 0, 1, &iterable)) + if (!PyArg_UnpackTuple(args, Py_Type(self)->tp_name, 0, 1, &iterable)) return -1; set_clear_internal(self); self->hash = -1; @@ -1922,8 +1921,7 @@ Build an unordered collection of unique elements."); PyTypeObject PySet_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "set", /* tp_name */ sizeof(PySetObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2017,8 +2015,7 @@ Build an immutable unordered collection of unique elements."); PyTypeObject PyFrozenSet_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "frozenset", /* tp_name */ sizeof(PySetObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -2099,7 +2096,7 @@ int PySet_Clear(PyObject *set) { - if (!PyType_IsSubtype(set->ob_type, &PySet_Type)) { + if (!PyType_IsSubtype(Py_Type(set), &PySet_Type)) { PyErr_BadInternalCall(); return -1; } @@ -2119,7 +2116,7 @@ int PySet_Discard(PyObject *set, PyObject *key) { - if (!PyType_IsSubtype(set->ob_type, &PySet_Type)) { + if (!PyType_IsSubtype(Py_Type(set), &PySet_Type)) { PyErr_BadInternalCall(); return -1; } @@ -2129,7 +2126,7 @@ int PySet_Add(PyObject *set, PyObject *key) { - if (!PyType_IsSubtype(set->ob_type, &PySet_Type)) { + if (!PyType_IsSubtype(Py_Type(set), &PySet_Type)) { PyErr_BadInternalCall(); return -1; } @@ -2170,7 +2167,7 @@ PyObject * PySet_Pop(PyObject *set) { - if (!PyType_IsSubtype(set->ob_type, &PySet_Type)) { + if (!PyType_IsSubtype(Py_Type(set), &PySet_Type)) { PyErr_BadInternalCall(); return NULL; } @@ -2180,7 +2177,7 @@ int _PySet_Update(PyObject *set, PyObject *iterable) { - if (!PyType_IsSubtype(set->ob_type, &PySet_Type)) { + if (!PyType_IsSubtype(Py_Type(set), &PySet_Type)) { PyErr_BadInternalCall(); return -1; } Modified: python/branches/bcannon-objcap/Objects/sliceobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/sliceobject.c (original) +++ python/branches/bcannon-objcap/Objects/sliceobject.c Thu Sep 6 21:35:45 2007 @@ -23,8 +23,7 @@ } static PyTypeObject PyEllipsis_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "ellipsis", /* tp_name */ 0, /* tp_basicsize */ 0, /* tp_itemsize */ @@ -47,7 +46,8 @@ }; PyObject _Py_EllipsisObject = { - PyObject_HEAD_INIT(&PyEllipsis_Type) + _PyObject_EXTRA_INIT + 1, &PyEllipsis_Type }; @@ -277,7 +277,7 @@ static PyObject * slice_reduce(PySliceObject* self) { - return Py_BuildValue("O(OOO)", self->ob_type, self->start, self->stop, self->step); + return Py_BuildValue("O(OOO)", Py_Type(self), self->start, self->stop, self->step); } PyDoc_STRVAR(reduce_doc, "Return state information for pickling."); @@ -319,8 +319,7 @@ } PyTypeObject PySlice_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* Number of items for varobject */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "slice", /* Name of this type */ sizeof(PySliceObject), /* Basic object size */ 0, /* Item size for varobject */ Modified: python/branches/bcannon-objcap/Objects/stringobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/stringobject.c (original) +++ python/branches/bcannon-objcap/Objects/stringobject.c Thu Sep 6 21:35:45 2007 @@ -421,7 +421,7 @@ if (!PyString_Check(v)) { PyErr_Format(PyExc_TypeError, "decoder did not return a string object (type=%.400s)", - v->ob_type->tp_name); + Py_Type(v)->tp_name); Py_DECREF(v); goto onError; } @@ -501,7 +501,7 @@ if (!PyString_Check(v)) { PyErr_Format(PyExc_TypeError, "encoder did not return a string object (type=%.400s)", - v->ob_type->tp_name); + Py_Type(v)->tp_name); Py_DECREF(v); goto onError; } @@ -521,7 +521,7 @@ case SSTATE_INTERNED_MORTAL: /* revive dead object temporarily for DelItem */ - op->ob_refcnt = 3; + Py_Refcnt(op) = 3; if (PyDict_DelItem(interned, op) != 0) Py_FatalError( "deletion of interned string failed"); @@ -533,7 +533,7 @@ default: Py_FatalError("Inconsistent interned string state."); } - op->ob_type->tp_free(op); + Py_Type(op)->tp_free(op); } /* Unescape a backslash-escaped string. If unicode is non-zero, @@ -717,7 +717,7 @@ { if (!PyString_Check(op)) return string_getsize(op); - return ((PyStringObject *)op) -> ob_size; + return Py_Size(op); } /*const*/ char * @@ -750,7 +750,7 @@ { PyErr_Format(PyExc_TypeError, "expected string or Unicode object, " - "%.200s found", obj->ob_type->tp_name); + "%.200s found", Py_Type(obj)->tp_name); return -1; } } @@ -805,7 +805,7 @@ } if (flags & Py_PRINT_RAW) { char *data = op->ob_sval; - Py_ssize_t size = op->ob_size; + Py_ssize_t size = Py_Size(op); while (size > INT_MAX) { /* Very long strings cannot be written atomically. * But don't write exactly INT_MAX bytes at a time @@ -826,12 +826,12 @@ /* figure out which quote to use; single is preferred */ quote = '\''; - if (memchr(op->ob_sval, '\'', op->ob_size) && - !memchr(op->ob_sval, '"', op->ob_size)) + if (memchr(op->ob_sval, '\'', Py_Size(op)) && + !memchr(op->ob_sval, '"', Py_Size(op))) quote = '"'; fputc(quote, fp); - for (i = 0; i < op->ob_size; i++) { + for (i = 0; i < Py_Size(op); i++) { c = op->ob_sval[i]; if (c == quote || c == '\\') fprintf(fp, "\\%c", c); @@ -854,9 +854,9 @@ PyString_Repr(PyObject *obj, int smartquotes) { register PyStringObject* op = (PyStringObject*) obj; - size_t newsize = 2 + 4 * op->ob_size; + size_t newsize = 2 + 4 * Py_Size(op); PyObject *v; - if (newsize > PY_SSIZE_T_MAX || newsize / 4 != op->ob_size) { + if (newsize > PY_SSIZE_T_MAX || newsize / 4 != Py_Size(op)) { PyErr_SetString(PyExc_OverflowError, "string is too large to make repr"); } @@ -873,13 +873,13 @@ /* figure out which quote to use; single is preferred */ quote = '\''; if (smartquotes && - memchr(op->ob_sval, '\'', op->ob_size) && - !memchr(op->ob_sval, '"', op->ob_size)) + memchr(op->ob_sval, '\'', Py_Size(op)) && + !memchr(op->ob_sval, '"', Py_Size(op))) quote = '"'; p = PyString_AS_STRING(v); *p++ = quote; - for (i = 0; i < op->ob_size; i++) { + for (i = 0; i < Py_Size(op); i++) { /* There's at least enough room for a hex escape and a closing quote. */ assert(newsize - (p - PyString_AS_STRING(v)) >= 5); @@ -928,14 +928,14 @@ else { /* Subtype -- return genuine string with the same value. */ PyStringObject *t = (PyStringObject *) s; - return PyString_FromStringAndSize(t->ob_sval, t->ob_size); + return PyString_FromStringAndSize(t->ob_sval, Py_Size(t)); } } static Py_ssize_t string_length(PyStringObject *a) { - return a->ob_size; + return Py_Size(a); } static PyObject * @@ -950,21 +950,21 @@ #endif PyErr_Format(PyExc_TypeError, "cannot concatenate 'str' and '%.200s' objects", - bb->ob_type->tp_name); + Py_Type(bb)->tp_name); return NULL; } #define b ((PyStringObject *)bb) /* Optimize cases with empty left or right operand */ - if ((a->ob_size == 0 || b->ob_size == 0) && + if ((Py_Size(a) == 0 || Py_Size(b) == 0) && PyString_CheckExact(a) && PyString_CheckExact(b)) { - if (a->ob_size == 0) { + if (Py_Size(a) == 0) { Py_INCREF(bb); return bb; } Py_INCREF(a); return (PyObject *)a; } - size = a->ob_size + b->ob_size; + size = Py_Size(a) + Py_Size(b); if (size < 0) { PyErr_SetString(PyExc_OverflowError, "strings are too large to concat"); @@ -978,8 +978,8 @@ PyObject_INIT_VAR(op, &PyString_Type, size); op->ob_shash = -1; op->ob_sstate = SSTATE_NOT_INTERNED; - Py_MEMCPY(op->ob_sval, a->ob_sval, a->ob_size); - Py_MEMCPY(op->ob_sval + a->ob_size, b->ob_sval, b->ob_size); + Py_MEMCPY(op->ob_sval, a->ob_sval, Py_Size(a)); + Py_MEMCPY(op->ob_sval + Py_Size(a), b->ob_sval, Py_Size(b)); op->ob_sval[size] = '\0'; return (PyObject *) op; #undef b @@ -998,13 +998,13 @@ /* watch out for overflows: the size can overflow int, * and the # of bytes needed can overflow size_t */ - size = a->ob_size * n; - if (n && size / n != a->ob_size) { + size = Py_Size(a) * n; + if (n && size / n != Py_Size(a)) { PyErr_SetString(PyExc_OverflowError, "repeated string is too long"); return NULL; } - if (size == a->ob_size && PyString_CheckExact(a)) { + if (size == Py_Size(a) && PyString_CheckExact(a)) { Py_INCREF(a); return (PyObject *)a; } @@ -1022,14 +1022,14 @@ op->ob_shash = -1; op->ob_sstate = SSTATE_NOT_INTERNED; op->ob_sval[size] = '\0'; - if (a->ob_size == 1 && n > 0) { + if (Py_Size(a) == 1 && n > 0) { memset(op->ob_sval, a->ob_sval[0] , n); return (PyObject *) op; } i = 0; if (i < size) { - Py_MEMCPY(op->ob_sval, a->ob_sval, a->ob_size); - i = a->ob_size; + Py_MEMCPY(op->ob_sval, a->ob_sval, Py_Size(a)); + i = Py_Size(a); } while (i < size) { j = (i <= size-i) ? i : size-i; @@ -1050,9 +1050,9 @@ i = 0; if (j < 0) j = 0; /* Avoid signed/unsigned bug in next line */ - if (j > a->ob_size) - j = a->ob_size; - if (i == 0 && j == a->ob_size && PyString_CheckExact(a)) { + if (j > Py_Size(a)) + j = Py_Size(a); + if (i == 0 && j == Py_Size(a) && PyString_CheckExact(a)) { /* It's the same as a */ Py_INCREF(a); return (PyObject *)a; @@ -1073,7 +1073,7 @@ if (!PyString_Check(sub_obj)) { PyErr_Format(PyExc_TypeError, "'in ' requires string as left operand, " - "not %.200s", sub_obj->ob_type->tp_name); + "not %.200s", Py_Type(sub_obj)->tp_name); return -1; } } @@ -1086,7 +1086,7 @@ { char pchar; PyObject *v; - if (i < 0 || i >= a->ob_size) { + if (i < 0 || i >= Py_Size(a)) { PyErr_SetString(PyExc_IndexError, "string index out of range"); return NULL; } @@ -1129,16 +1129,16 @@ if (op == Py_EQ) { /* Supporting Py_NE here as well does not save much time, since Py_NE is rarely used. */ - if (a->ob_size == b->ob_size + if (Py_Size(a) == Py_Size(b) && (a->ob_sval[0] == b->ob_sval[0] - && memcmp(a->ob_sval, b->ob_sval, a->ob_size) == 0)) { + && memcmp(a->ob_sval, b->ob_sval, Py_Size(a)) == 0)) { result = Py_True; } else { result = Py_False; } goto out; } - len_a = a->ob_size; len_b = b->ob_size; + len_a = Py_Size(a); len_b = Py_Size(b); min_len = (len_a < len_b) ? len_a : len_b; if (min_len > 0) { c = Py_CHARMASK(*a->ob_sval) - Py_CHARMASK(*b->ob_sval); @@ -1170,9 +1170,9 @@ { PyStringObject *a = (PyStringObject*) o1; PyStringObject *b = (PyStringObject*) o2; - return a->ob_size == b->ob_size + return Py_Size(a) == Py_Size(b) && *a->ob_sval == *b->ob_sval - && memcmp(a->ob_sval, b->ob_sval, a->ob_size) == 0; + && memcmp(a->ob_sval, b->ob_sval, Py_Size(a)) == 0; } static long @@ -1184,12 +1184,12 @@ if (a->ob_shash != -1) return a->ob_shash; - len = a->ob_size; + len = Py_Size(a); p = (unsigned char *) a->ob_sval; x = *p << 7; while (--len >= 0) x = (1000003*x) ^ *p++; - x ^= a->ob_size; + x ^= Py_Size(a); if (x == -1) x = -2; a->ob_shash = x; @@ -1222,6 +1222,17 @@ if (slicelength <= 0) { return PyString_FromStringAndSize("", 0); } + else if (start == 0 && step == 1 && + slicelength == PyString_GET_SIZE(self) && + PyString_CheckExact(self)) { + Py_INCREF(self); + return (PyObject *)self; + } + else if (step == 1) { + return PyString_FromStringAndSize( + PyString_AS_STRING(self) + start, + slicelength); + } else { source_buf = PyString_AsString((PyObject*)self); result_buf = (char *)PyMem_Malloc(slicelength); @@ -1242,7 +1253,7 @@ else { PyErr_Format(PyExc_TypeError, "string indices must be integers, not %.200s", - item->ob_type->tp_name); + Py_Type(item)->tp_name); return NULL; } } @@ -1256,7 +1267,7 @@ return -1; } *ptr = (void *)self->ob_sval; - return self->ob_size; + return Py_Size(self); } static Py_ssize_t @@ -1271,7 +1282,7 @@ string_buffer_getsegcount(PyStringObject *self, Py_ssize_t *lenp) { if ( lenp ) - *lenp = self->ob_size; + *lenp = Py_Size(self); return 1; } @@ -1284,7 +1295,7 @@ return -1; } *ptr = self->ob_sval; - return self->ob_size; + return Py_Size(self); } static PySequenceMethods string_as_sequence = { @@ -1373,7 +1384,7 @@ count++; } /* Always force the list to the expected size. */ -#define FIX_PREALLOC_SIZE(list) ((PyListObject *)list)->ob_size = count +#define FIX_PREALLOC_SIZE(list) Py_Size(list) = count #define SKIP_SPACE(s, i, len) { while (iob_type->tp_name); + i, Py_Type(item)->tp_name); Py_DECREF(seq); return NULL; } @@ -1891,7 +1902,7 @@ "S.find(sub [,start [,end]]) -> int\n\ \n\ Return the lowest index in S where substring sub is found,\n\ -such that sub is contained within s[start,end]. Optional\n\ +such that sub is contained within s[start:end]. Optional\n\ arguments start and end are interpreted as in slice notation.\n\ \n\ Return -1 on failure."); @@ -1930,7 +1941,7 @@ "S.rfind(sub [,start [,end]]) -> int\n\ \n\ Return the highest index in S where substring sub is found,\n\ -such that sub is contained within s[start,end]. Optional\n\ +such that sub is contained within s[start:end]. Optional\n\ arguments start and end are interpreted as in slice notation.\n\ \n\ Return -1 on failure."); @@ -3248,7 +3259,7 @@ PyErr_Format(PyExc_TypeError, "encoder did not return a string/unicode object " "(type=%.400s)", - v->ob_type->tp_name); + Py_Type(v)->tp_name); Py_DECREF(v); return NULL; } @@ -3285,7 +3296,7 @@ PyErr_Format(PyExc_TypeError, "decoder did not return a string/unicode object " "(type=%.400s)", - v->ob_type->tp_name); + Py_Type(v)->tp_name); Py_DECREF(v); return NULL; } @@ -3843,7 +3854,7 @@ static PyObject * string_getnewargs(PyStringObject *v) { - return Py_BuildValue("(s#)", v->ob_sval, v->ob_size); + return Py_BuildValue("(s#)", v->ob_sval, Py_Size(v)); } @@ -3972,8 +3983,7 @@ PyTypeObject PyBaseString_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "basestring", 0, 0, @@ -4021,8 +4031,7 @@ If the argument is a string, the return value is the same object."); PyTypeObject PyString_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "str", sizeof(PyStringObject), sizeof(char), @@ -4108,7 +4117,7 @@ register PyObject *v; register PyStringObject *sv; v = *pv; - if (!PyString_Check(v) || v->ob_refcnt != 1 || newsize < 0 || + if (!PyString_Check(v) || Py_Refcnt(v) != 1 || newsize < 0 || PyString_CHECK_INTERNED(v)) { *pv = 0; Py_DECREF(v); @@ -4127,7 +4136,7 @@ } _Py_NewReference(*pv); sv = (PyStringObject *) *pv; - sv->ob_size = newsize; + Py_Size(sv) = newsize; sv->ob_sval[newsize] = '\0'; sv->ob_shash = -1; /* invalidate cached hash value */ return 0; @@ -4175,7 +4184,7 @@ x = PyFloat_AsDouble(v); if (x == -1.0 && PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "float argument required, " - "not %.200s", v->ob_type->tp_name); + "not %.200s", Py_Type(v)->tp_name); return -1; } if (prec < 0) @@ -4198,7 +4207,8 @@ always given), therefore increase the length by one. */ - if ((type == 'g' && buflen <= (size_t)10 + (size_t)prec) || + if (((type == 'g' || type == 'G') && + buflen <= (size_t)10 + (size_t)prec) || (type == 'f' && buflen <= (size_t)53 + (size_t)prec)) { PyErr_SetString(PyExc_OverflowError, "formatted float is too long (precision too large?)"); @@ -4248,15 +4258,15 @@ switch (type) { case 'd': case 'u': - result = val->ob_type->tp_str(val); + result = Py_Type(val)->tp_str(val); break; case 'o': - result = val->ob_type->tp_as_number->nb_oct(val); + result = Py_Type(val)->tp_as_number->nb_oct(val); break; case 'x': case 'X': numnondigits = 2; - result = val->ob_type->tp_as_number->nb_hex(val); + result = Py_Type(val)->tp_as_number->nb_hex(val); break; default: assert(!"'type' not in [duoxX]"); @@ -4271,7 +4281,7 @@ } /* To modify the string in-place, there can only be one reference. */ - if (result->ob_refcnt != 1) { + if (Py_Refcnt(result) != 1) { PyErr_BadInternalCall(); return NULL; } @@ -4371,7 +4381,7 @@ x = PyInt_AsLong(v); if (x == -1 && PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "int argument required, not %.200s", - v->ob_type->tp_name); + Py_Type(v)->tp_name); return -1; } if (x < 0 && type == 'u') { @@ -4488,7 +4498,7 @@ arglen = -1; argidx = -2; } - if (args->ob_type->tp_as_mapping && !PyTuple_Check(args) && + if (Py_Type(args)->tp_as_mapping && !PyTuple_Check(args) && !PyObject_TypeCheck(args, &PyBaseString_Type)) dict = args; while (--fmtcnt >= 0) { @@ -4955,7 +4965,7 @@ } /* The two references in interned are not counted by refcnt. The string deallocator will take care of this */ - s->ob_refcnt -= 2; + Py_Refcnt(s) -= 2; PyString_CHECK_INTERNED(s) = SSTATE_INTERNED_MORTAL; } @@ -5022,12 +5032,12 @@ /* XXX Shouldn't happen */ break; case SSTATE_INTERNED_IMMORTAL: - s->ob_refcnt += 1; - immortal_size += s->ob_size; + Py_Refcnt(s) += 1; + immortal_size += Py_Size(s); break; case SSTATE_INTERNED_MORTAL: - s->ob_refcnt += 2; - mortal_size += s->ob_size; + Py_Refcnt(s) += 2; + mortal_size += Py_Size(s); break; default: Py_FatalError("Inconsistent interned string state."); Modified: python/branches/bcannon-objcap/Objects/structseq.c ============================================================================== --- python/branches/bcannon-objcap/Objects/structseq.c (original) +++ python/branches/bcannon-objcap/Objects/structseq.c Thu Sep 6 21:35:45 2007 @@ -13,17 +13,17 @@ They are only allowed for indices < n_visible_fields. */ char *PyStructSequence_UnnamedField = "unnamed field"; -#define VISIBLE_SIZE(op) ((op)->ob_size) +#define VISIBLE_SIZE(op) Py_Size(op) #define VISIBLE_SIZE_TP(tp) PyInt_AsLong( \ PyDict_GetItemString((tp)->tp_dict, visible_length_key)) #define REAL_SIZE_TP(tp) PyInt_AsLong( \ PyDict_GetItemString((tp)->tp_dict, real_length_key)) -#define REAL_SIZE(op) REAL_SIZE_TP((op)->ob_type) +#define REAL_SIZE(op) REAL_SIZE_TP(Py_Type(op)) #define UNNAMED_FIELDS_TP(tp) PyInt_AsLong( \ PyDict_GetItemString((tp)->tp_dict, unnamed_fields_key)) -#define UNNAMED_FIELDS(op) UNNAMED_FIELDS_TP((op)->ob_type) +#define UNNAMED_FIELDS(op) UNNAMED_FIELDS_TP(Py_Type(op)) PyObject * @@ -32,7 +32,7 @@ PyStructSequence *obj; obj = PyObject_New(PyStructSequence, type); - obj->ob_size = VISIBLE_SIZE_TP(type); + Py_Size(obj) = VISIBLE_SIZE_TP(type); return (PyObject*) obj; } @@ -90,6 +90,54 @@ } static PyObject * +structseq_subscript(PyStructSequence *self, PyObject *item) +{ + if (PyIndex_Check(item)) { + Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); + if (i == -1 && PyErr_Occurred()) + return NULL; + + if (i < 0) + i += VISIBLE_SIZE(self); + + if (i < 0 || i >= VISIBLE_SIZE(self)) { + PyErr_SetString(PyExc_IndexError, + "tuple index out of range"); + return NULL; + } + Py_INCREF(self->ob_item[i]); + return self->ob_item[i]; + } + else if (PySlice_Check(item)) { + Py_ssize_t start, stop, step, slicelen, cur, i; + PyObject *result; + + if (PySlice_GetIndicesEx((PySliceObject *)item, + VISIBLE_SIZE(self), &start, &stop, + &step, &slicelen) < 0) { + return NULL; + } + if (slicelen <= 0) + return PyTuple_New(0); + result = PyTuple_New(slicelen); + if (result == NULL) + return NULL; + for (cur = start, i = 0; i < slicelen; + cur += step, i++) { + PyObject *v = self->ob_item[cur]; + Py_INCREF(v); + PyTuple_SET_ITEM(result, i, v); + } + return result; + } + else { + PyErr_SetString(PyExc_TypeError, + "structseq index must be integer"); + return NULL; + } +} + +static PyObject * structseq_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { PyObject *arg = NULL; @@ -274,12 +322,12 @@ } for (; i < n_fields; i++) { - char *n = self->ob_type->tp_members[i-n_unnamed_fields].name; + char *n = Py_Type(self)->tp_members[i-n_unnamed_fields].name; PyDict_SetItemString(dict, n, self->ob_item[i]); } - result = Py_BuildValue("(O(OO))", self->ob_type, tup, dict); + result = Py_BuildValue("(O(OO))", Py_Type(self), tup, dict); Py_DECREF(tup); Py_DECREF(dict); @@ -298,6 +346,11 @@ (objobjproc)structseq_contains, /* sq_contains */ }; +static PyMappingMethods structseq_as_mapping = { + (lenfunc)structseq_length, + (binaryfunc)structseq_subscript, +}; + static PyMethodDef structseq_methods[] = { {"__reduce__", (PyCFunction)structseq_reduce, METH_NOARGS, NULL}, @@ -305,8 +358,7 @@ }; static PyTypeObject _struct_sequence_template = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) NULL, /* tp_name */ 0, /* tp_basicsize */ 0, /* tp_itemsize */ @@ -318,7 +370,7 @@ (reprfunc)structseq_repr, /* tp_repr */ 0, /* tp_as_number */ &structseq_as_sequence, /* tp_as_sequence */ - 0, /* tp_as_mapping */ + &structseq_as_mapping, /* tp_as_mapping */ structseq_hash, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ Modified: python/branches/bcannon-objcap/Objects/tupleobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/tupleobject.c (original) +++ python/branches/bcannon-objcap/Objects/tupleobject.c Thu Sep 6 21:35:45 2007 @@ -49,8 +49,8 @@ #endif /* Inline PyObject_InitVar */ #ifdef Py_TRACE_REFS - op->ob_size = size; - op->ob_type = &PyTuple_Type; + Py_Size(op) = size; + Py_Type(op) = &PyTuple_Type; #endif _Py_NewReference((PyObject *)op); } @@ -90,7 +90,7 @@ return -1; } else - return ((PyTupleObject *)op)->ob_size; + return Py_Size(op); } PyObject * @@ -100,7 +100,7 @@ PyErr_BadInternalCall(); return NULL; } - if (i < 0 || i >= ((PyTupleObject *)op) -> ob_size) { + if (i < 0 || i >= Py_Size(op)) { PyErr_SetString(PyExc_IndexError, "tuple index out of range"); return NULL; } @@ -117,7 +117,7 @@ PyErr_BadInternalCall(); return -1; } - if (i < 0 || i >= ((PyTupleObject *)op) -> ob_size) { + if (i < 0 || i >= Py_Size(op)) { Py_XDECREF(newitem); PyErr_SetString(PyExc_IndexError, "tuple assignment index out of range"); @@ -160,7 +160,7 @@ tupledealloc(register PyTupleObject *op) { register Py_ssize_t i; - register Py_ssize_t len = op->ob_size; + register Py_ssize_t len = Py_Size(op); PyObject_GC_UnTrack(op); Py_TRASHCAN_SAFE_BEGIN(op) if (len > 0) { @@ -170,7 +170,7 @@ #if MAXSAVESIZE > 0 if (len < MAXSAVESIZE && num_free_tuples[len] < MAXSAVEDTUPLES && - op->ob_type == &PyTuple_Type) + Py_Type(op) == &PyTuple_Type) { op->ob_item[0] = (PyObject *) free_tuples[len]; num_free_tuples[len]++; @@ -179,7 +179,7 @@ } #endif } - op->ob_type->tp_free((PyObject *)op); + Py_Type(op)->tp_free((PyObject *)op); done: Py_TRASHCAN_SAFE_END(op) } @@ -189,13 +189,13 @@ { Py_ssize_t i; fprintf(fp, "("); - for (i = 0; i < op->ob_size; i++) { + for (i = 0; i < Py_Size(op); i++) { if (i > 0) fprintf(fp, ", "); if (PyObject_Print(op->ob_item[i], fp, 0) != 0) return -1; } - if (op->ob_size == 1) + if (Py_Size(op) == 1) fprintf(fp, ","); fprintf(fp, ")"); return 0; @@ -208,7 +208,7 @@ PyObject *s, *temp; PyObject *pieces, *result = NULL; - n = v->ob_size; + n = Py_Size(v); if (n == 0) return PyString_FromString("()"); @@ -268,7 +268,7 @@ tuplehash(PyTupleObject *v) { register long x, y; - register Py_ssize_t len = v->ob_size; + register Py_ssize_t len = Py_Size(v); register PyObject **p; long mult = 1000003L; x = 0x345678L; @@ -290,7 +290,7 @@ static Py_ssize_t tuplelength(PyTupleObject *a) { - return a->ob_size; + return Py_Size(a); } static int @@ -299,7 +299,7 @@ Py_ssize_t i; int cmp; - for (i = 0, cmp = 0 ; cmp == 0 && i < a->ob_size; ++i) + for (i = 0, cmp = 0 ; cmp == 0 && i < Py_Size(a); ++i) cmp = PyObject_RichCompareBool(el, PyTuple_GET_ITEM(a, i), Py_EQ); return cmp; @@ -308,7 +308,7 @@ static PyObject * tupleitem(register PyTupleObject *a, register Py_ssize_t i) { - if (i < 0 || i >= a->ob_size) { + if (i < 0 || i >= Py_Size(a)) { PyErr_SetString(PyExc_IndexError, "tuple index out of range"); return NULL; } @@ -326,11 +326,11 @@ Py_ssize_t len; if (ilow < 0) ilow = 0; - if (ihigh > a->ob_size) - ihigh = a->ob_size; + if (ihigh > Py_Size(a)) + ihigh = Py_Size(a); if (ihigh < ilow) ihigh = ilow; - if (ilow == 0 && ihigh == a->ob_size && PyTuple_CheckExact(a)) { + if (ilow == 0 && ihigh == Py_Size(a) && PyTuple_CheckExact(a)) { Py_INCREF(a); return (PyObject *)a; } @@ -368,11 +368,11 @@ if (!PyTuple_Check(bb)) { PyErr_Format(PyExc_TypeError, "can only concatenate tuple (not \"%.200s\") to tuple", - bb->ob_type->tp_name); + Py_Type(bb)->tp_name); return NULL; } #define b ((PyTupleObject *)bb) - size = a->ob_size + b->ob_size; + size = Py_Size(a) + Py_Size(b); if (size < 0) return PyErr_NoMemory(); np = (PyTupleObject *) PyTuple_New(size); @@ -381,14 +381,14 @@ } src = a->ob_item; dest = np->ob_item; - for (i = 0; i < a->ob_size; i++) { + for (i = 0; i < Py_Size(a); i++) { PyObject *v = src[i]; Py_INCREF(v); dest[i] = v; } src = b->ob_item; - dest = np->ob_item + a->ob_size; - for (i = 0; i < b->ob_size; i++) { + dest = np->ob_item + Py_Size(a); + for (i = 0; i < Py_Size(b); i++) { PyObject *v = src[i]; Py_INCREF(v); dest[i] = v; @@ -406,18 +406,18 @@ PyObject **p, **items; if (n < 0) n = 0; - if (a->ob_size == 0 || n == 1) { + if (Py_Size(a) == 0 || n == 1) { if (PyTuple_CheckExact(a)) { /* Since tuples are immutable, we can return a shared copy in this case */ Py_INCREF(a); return (PyObject *)a; } - if (a->ob_size == 0) + if (Py_Size(a) == 0) return PyTuple_New(0); } - size = a->ob_size * n; - if (size/a->ob_size != n) + size = Py_Size(a) * n; + if (size/Py_Size(a) != n) return PyErr_NoMemory(); np = (PyTupleObject *) PyTuple_New(size); if (np == NULL) @@ -425,7 +425,7 @@ p = np->ob_item; items = a->ob_item; for (i = 0; i < n; i++) { - for (j = 0; j < a->ob_size; j++) { + for (j = 0; j < Py_Size(a); j++) { *p = items[j]; Py_INCREF(*p); p++; @@ -439,7 +439,7 @@ { Py_ssize_t i; - for (i = o->ob_size; --i >= 0; ) + for (i = Py_Size(o); --i >= 0; ) Py_VISIT(o->ob_item[i]); return 0; } @@ -459,8 +459,8 @@ vt = (PyTupleObject *)v; wt = (PyTupleObject *)w; - vlen = vt->ob_size; - wlen = wt->ob_size; + vlen = Py_Size(vt); + wlen = Py_Size(wt); /* Note: the corresponding code for lists has an "early out" test * here when op is EQ or NE and the lengths differ. That pays there, @@ -603,6 +603,12 @@ if (slicelength <= 0) { return PyTuple_New(0); } + else if (start == 0 && step == 1 && + slicelength == PyTuple_GET_SIZE(self) && + PyTuple_CheckExact(self)) { + Py_INCREF(self); + return (PyObject *)self; + } else { result = PyTuple_New(slicelength); if (!result) return NULL; @@ -622,7 +628,7 @@ else { PyErr_Format(PyExc_TypeError, "tuple indices must be integers, not %.200s", - item->ob_type->tp_name); + Py_Type(item)->tp_name); return NULL; } } @@ -630,7 +636,7 @@ static PyObject * tuple_getnewargs(PyTupleObject *v) { - return Py_BuildValue("(N)", tupleslice(v, 0, v->ob_size)); + return Py_BuildValue("(N)", tupleslice(v, 0, Py_Size(v))); } @@ -648,8 +654,7 @@ static PyObject *tuple_iter(PyObject *seq); PyTypeObject PyTuple_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "tuple", sizeof(PyTupleObject) - sizeof(PyObject *), sizeof(PyObject *), @@ -707,14 +712,14 @@ Py_ssize_t oldsize; v = (PyTupleObject *) *pv; - if (v == NULL || v->ob_type != &PyTuple_Type || - (v->ob_size != 0 && v->ob_refcnt != 1)) { + if (v == NULL || Py_Type(v) != &PyTuple_Type || + (Py_Size(v) != 0 && Py_Refcnt(v) != 1)) { *pv = 0; Py_XDECREF(v); PyErr_BadInternalCall(); return -1; } - oldsize = v->ob_size; + oldsize = Py_Size(v); if (oldsize == newsize) return 0; @@ -838,8 +843,7 @@ }; PyTypeObject PyTupleIter_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "tupleiterator", /* tp_name */ sizeof(tupleiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/typeobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/typeobject.c (original) +++ python/branches/bcannon-objcap/Objects/typeobject.c Thu Sep 6 21:35:45 2007 @@ -57,7 +57,7 @@ if (!PyString_Check(value)) { PyErr_Format(PyExc_TypeError, "can only assign string to %s.__name__, not '%s'", - type->tp_name, value->ob_type->tp_name); + type->tp_name, Py_Type(value)->tp_name); return -1; } if (strlen(PyString_AS_STRING(value)) @@ -203,7 +203,7 @@ if (!PyTuple_Check(value)) { PyErr_Format(PyExc_TypeError, "can only assign tuple to %s.__bases__, not %s", - type->tp_name, value->ob_type->tp_name); + type->tp_name, Py_Type(value)->tp_name); return -1; } if (PyTuple_GET_SIZE(value) == 0) { @@ -218,7 +218,7 @@ PyErr_Format( PyExc_TypeError, "%s.__bases__ must be tuple of old- or new-style classes, not '%s'", - type->tp_name, ob->ob_type->tp_name); + type->tp_name, Py_Type(ob)->tp_name); return -1; } if (PyType_Check(ob)) { @@ -343,8 +343,8 @@ result = Py_None; Py_INCREF(result); } - else if (result->ob_type->tp_descr_get) { - result = result->ob_type->tp_descr_get(result, NULL, + else if (Py_Type(result)->tp_descr_get) { + result = Py_Type(result)->tp_descr_get(result, NULL, (PyObject *)type); } else { @@ -488,7 +488,7 @@ Py_ssize_t i, n; PyMemberDef *mp; - n = type->ob_size; + n = Py_Size(type); mp = PyHeapType_GET_MEMBERS((PyHeapTypeObject *)type); for (i = 0; i < n; i++, mp++) { if (mp->type == T_OBJECT_EX) { @@ -512,10 +512,10 @@ /* Find the nearest base with a different tp_traverse, and traverse slots while we're at it */ - type = self->ob_type; + type = Py_Type(self); base = type; while ((basetraverse = base->tp_traverse) == subtype_traverse) { - if (base->ob_size) { + if (Py_Size(base)) { int err = traverse_slots(base, self, visit, arg); if (err) return err; @@ -547,7 +547,7 @@ Py_ssize_t i, n; PyMemberDef *mp; - n = type->ob_size; + n = Py_Size(type); mp = PyHeapType_GET_MEMBERS((PyHeapTypeObject *)type); for (i = 0; i < n; i++, mp++) { if (mp->type == T_OBJECT_EX && !(mp->flags & READONLY)) { @@ -569,10 +569,10 @@ /* Find the nearest base with a different tp_clear and clear slots while we're at it */ - type = self->ob_type; + type = Py_Type(self); base = type; while ((baseclear = base->tp_clear) == subtype_clear) { - if (base->ob_size) + if (Py_Size(base)) clear_slots(base, self); base = base->tp_base; assert(base); @@ -593,7 +593,7 @@ destructor basedealloc; /* Extract the type; we expect it to be a heap type */ - type = self->ob_type; + type = Py_Type(self); assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE); /* Test whether the type has GC exactly once */ @@ -615,7 +615,7 @@ /* Find the nearest base with a different tp_dealloc */ base = type; while ((basedealloc = base->tp_dealloc) == subtype_dealloc) { - assert(base->ob_size == 0); + assert(Py_Size(base) == 0); base = base->tp_base; assert(base); } @@ -683,7 +683,7 @@ /* Clear slots up to the nearest base with a different tp_dealloc */ base = type; while ((basedealloc = base->tp_dealloc) == subtype_dealloc) { - if (base->ob_size) + if (Py_Size(base)) clear_slots(base, self); base = base->tp_base; assert(base); @@ -877,13 +877,13 @@ if (*attrobj == NULL) return NULL; } - res = _PyType_Lookup(self->ob_type, *attrobj); + res = _PyType_Lookup(Py_Type(self), *attrobj); if (res != NULL) { descrgetfunc f; - if ((f = res->ob_type->tp_descr_get) == NULL) + if ((f = Py_Type(res)->tp_descr_get) == NULL) Py_INCREF(res); else - res = f(res, self, (PyObject *)(self->ob_type)); + res = f(res, self, (PyObject *)(Py_Type(self))); } return res; } @@ -1301,7 +1301,7 @@ PyObject *mro, *result, *tuple; int checkit = 0; - if (type->ob_type == &PyType_Type) { + if (Py_Type(type) == &PyType_Type) { result = mro_implementation(type); } else { @@ -1336,7 +1336,7 @@ else if (!PyType_Check(cls)) { PyErr_Format(PyExc_TypeError, "mro() returned a non-class ('%.500s')", - cls->ob_type->tp_name); + Py_Type(cls)->tp_name); Py_DECREF(tuple); return -1; } @@ -1565,7 +1565,7 @@ if (value != NULL && !PyDict_Check(value)) { PyErr_Format(PyExc_TypeError, "__dict__ must be set to a dictionary, " - "not a '%.200s'", value->ob_type->tp_name); + "not a '%.200s'", Py_Type(value)->tp_name); return -1; } dict = *dictptr; @@ -1581,16 +1581,16 @@ PyObject **weaklistptr; PyObject *result; - if (obj->ob_type->tp_weaklistoffset == 0) { + if (Py_Type(obj)->tp_weaklistoffset == 0) { PyErr_SetString(PyExc_AttributeError, "This object has no __weakref__"); return NULL; } - assert(obj->ob_type->tp_weaklistoffset > 0); - assert(obj->ob_type->tp_weaklistoffset + sizeof(PyObject *) <= - (size_t)(obj->ob_type->tp_basicsize)); + assert(Py_Type(obj)->tp_weaklistoffset > 0); + assert(Py_Type(obj)->tp_weaklistoffset + sizeof(PyObject *) <= + (size_t)(Py_Type(obj)->tp_basicsize)); weaklistptr = (PyObject **) - ((char *)obj + obj->ob_type->tp_weaklistoffset); + ((char *)obj + Py_Type(obj)->tp_weaklistoffset); if (*weaklistptr == NULL) result = Py_None; else @@ -1630,7 +1630,7 @@ if (!PyString_Check(s)) { PyErr_Format(PyExc_TypeError, "__slots__ items must be strings, not '%.200s'", - s->ob_type->tp_name); + Py_Type(s)->tp_name); return 0; } p = (unsigned char *) PyString_AS_STRING(s); @@ -1740,8 +1740,8 @@ if (PyType_CheckExact(metatype) && nargs == 1 && nkwds == 0) { PyObject *x = PyTuple_GET_ITEM(args, 0); - Py_INCREF(x->ob_type); - return (PyObject *) x->ob_type; + Py_INCREF(Py_Type(x)); + return (PyObject *) Py_Type(x); } /* SF bug 475327 -- if that didn't trigger, we need 3 @@ -2176,7 +2176,7 @@ static PyObject * type_getattro(PyTypeObject *type, PyObject *name) { - PyTypeObject *metatype = type->ob_type; + PyTypeObject *metatype = Py_Type(type); PyObject *meta_attribute, *attribute; descrgetfunc meta_get; @@ -2193,7 +2193,7 @@ meta_attribute = _PyType_Lookup(metatype, name); if (meta_attribute != NULL) { - meta_get = meta_attribute->ob_type->tp_descr_get; + meta_get = Py_Type(meta_attribute)->tp_descr_get; if (meta_get != NULL && PyDescr_IsData(meta_attribute)) { /* Data descriptors implement tp_descr_set to intercept @@ -2211,7 +2211,7 @@ attribute = _PyType_Lookup(type, name); if (attribute != NULL) { /* Implement descriptor functionality, if any */ - descrgetfunc local_get = attribute->ob_type->tp_descr_get; + descrgetfunc local_get = Py_Type(attribute)->tp_descr_get; Py_XDECREF(meta_attribute); @@ -2289,7 +2289,7 @@ PyObject_Free((char *)type->tp_doc); Py_XDECREF(et->ht_name); Py_XDECREF(et->ht_slots); - type->ob_type->tp_free((PyObject *)type); + Py_Type(type)->tp_free((PyObject *)type); } @@ -2368,8 +2368,7 @@ } PyTypeObject PyType_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "type", /* tp_name */ sizeof(PyHeapTypeObject), /* tp_basicsize */ sizeof(PyMemberDef), /* tp_itemsize */ @@ -2471,7 +2470,7 @@ { int err = 0; if (excess_args(args, kwds)) { - PyTypeObject *type = self->ob_type; + PyTypeObject *type = Py_Type(self); if (type->tp_init != object_init && type->tp_new != object_new) { @@ -2518,7 +2517,7 @@ static void object_dealloc(PyObject *self) { - self->ob_type->tp_free(self); + Py_Type(self)->tp_free(self); } static PyObject * @@ -2527,7 +2526,7 @@ PyTypeObject *type; PyObject *mod, *name, *rtn; - type = self->ob_type; + type = Py_Type(self); mod = type_module(type, NULL); if (mod == NULL) PyErr_Clear(); @@ -2556,7 +2555,7 @@ { unaryfunc f; - f = self->ob_type->tp_repr; + f = Py_Type(self)->tp_repr; if (f == NULL) f = object_repr; return f(self); @@ -2571,8 +2570,8 @@ static PyObject * object_get_class(PyObject *self, void *closure) { - Py_INCREF(self->ob_type); - return (PyObject *)(self->ob_type); + Py_INCREF(Py_Type(self)); + return (PyObject *)(Py_Type(self)); } static int @@ -2657,7 +2656,7 @@ static int object_set_class(PyObject *self, PyObject *value, void *closure) { - PyTypeObject *oldto = self->ob_type; + PyTypeObject *oldto = Py_Type(self); PyTypeObject *newto; if (value == NULL) { @@ -2668,7 +2667,7 @@ if (!PyType_Check(value)) { PyErr_Format(PyExc_TypeError, "__class__ must be set to new-style class, not '%s' object", - value->ob_type->tp_name); + Py_Type(value)->tp_name); return -1; } newto = (PyTypeObject *)value; @@ -2681,7 +2680,7 @@ } if (compatible_for_assignment(newto, oldto, "__class__")) { Py_INCREF(newto); - self->ob_type = newto; + Py_Type(self) = newto; Py_DECREF(oldto); return 0; } @@ -2777,7 +2776,7 @@ if (args != NULL && !PyTuple_Check(args)) { PyErr_Format(PyExc_TypeError, "__getnewargs__ should return a tuple, " - "not '%.200s'", args->ob_type->tp_name); + "not '%.200s'", Py_Type(args)->tp_name); goto end; } } @@ -2989,8 +2988,7 @@ PyTypeObject PyBaseObject_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "object", /* tp_name */ sizeof(PyObject), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -3432,8 +3430,8 @@ NULL when type is &PyBaseObject_Type, and we know its ob_type is not NULL (it's initialized to &PyType_Type). But coverity doesn't know that. */ - if (type->ob_type == NULL && base != NULL) - type->ob_type = base->ob_type; + if (Py_Type(type) == NULL && base != NULL) + Py_Type(type) = Py_Type(base); /* Initialize tp_bases */ bases = type->tp_bases; @@ -3793,7 +3791,7 @@ if (i == -1 && PyErr_Occurred()) return -1; if (i < 0) { - PySequenceMethods *sq = self->ob_type->tp_as_sequence; + PySequenceMethods *sq = Py_Type(self)->tp_as_sequence; if (sq && sq->sq_length) { Py_ssize_t n = (*sq->sq_length)(self); if (n < 0) @@ -3969,14 +3967,14 @@ if (!check_num_args(args, 1)) return NULL; other = PyTuple_GET_ITEM(args, 0); - if (other->ob_type->tp_compare != func && - !PyType_IsSubtype(other->ob_type, self->ob_type)) { + if (Py_Type(other)->tp_compare != func && + !PyType_IsSubtype(Py_Type(other), Py_Type(self))) { PyErr_Format( PyExc_TypeError, "%s.__cmp__(x,y) requires y to be a '%s', not a '%s'", - self->ob_type->tp_name, - self->ob_type->tp_name, - other->ob_type->tp_name); + Py_Type(self)->tp_name, + Py_Type(self)->tp_name, + Py_Type(other)->tp_name); return NULL; } res = (*func)(self, other); @@ -3990,7 +3988,7 @@ static int hackcheck(PyObject *self, setattrofunc func, char *what) { - PyTypeObject *type = self->ob_type; + PyTypeObject *type = Py_Type(self); while (type && type->tp_flags & Py_TPFLAGS_HEAPTYPE) type = type->tp_base; /* If type is NULL now, this is a really weird type. @@ -4190,7 +4188,7 @@ PyErr_Format(PyExc_TypeError, "%s.__new__(X): X is not a type object (%s)", type->tp_name, - arg0->ob_type->tp_name); + Py_Type(arg0)->tp_name); return NULL; } subtype = (PyTypeObject *)arg0; @@ -4281,14 +4279,14 @@ PyObject *a, *b; int ok; - b = PyObject_GetAttrString((PyObject *)(right->ob_type), name); + b = PyObject_GetAttrString((PyObject *)(Py_Type(right)), name); if (b == NULL) { PyErr_Clear(); /* If right doesn't have it, it's not overloaded */ return 0; } - a = PyObject_GetAttrString((PyObject *)(left->ob_type), name); + a = PyObject_GetAttrString((PyObject *)(Py_Type(left)), name); if (a == NULL) { PyErr_Clear(); Py_DECREF(b); @@ -4313,14 +4311,14 @@ FUNCNAME(PyObject *self, PyObject *other) \ { \ static PyObject *cache_str, *rcache_str; \ - int do_other = self->ob_type != other->ob_type && \ - other->ob_type->tp_as_number != NULL && \ - other->ob_type->tp_as_number->SLOTNAME == TESTFUNC; \ - if (self->ob_type->tp_as_number != NULL && \ - self->ob_type->tp_as_number->SLOTNAME == TESTFUNC) { \ + int do_other = Py_Type(self) != Py_Type(other) && \ + Py_Type(other)->tp_as_number != NULL && \ + Py_Type(other)->tp_as_number->SLOTNAME == TESTFUNC; \ + if (Py_Type(self)->tp_as_number != NULL && \ + Py_Type(self)->tp_as_number->SLOTNAME == TESTFUNC) { \ PyObject *r; \ if (do_other && \ - PyType_IsSubtype(other->ob_type, self->ob_type) && \ + PyType_IsSubtype(Py_Type(other), Py_Type(self)) && \ method_is_overloaded(self, other, ROPSTR)) { \ r = call_maybe( \ other, ROPSTR, &rcache_str, "(O)", self); \ @@ -4332,7 +4330,7 @@ r = call_maybe( \ self, OPSTR, &cache_str, "(O)", other); \ if (r != Py_NotImplemented || \ - other->ob_type == self->ob_type) \ + Py_Type(other) == Py_Type(self)) \ return r; \ Py_DECREF(r); \ } \ @@ -4390,12 +4388,12 @@ if (getitem_str == NULL) return NULL; } - func = _PyType_Lookup(self->ob_type, getitem_str); + func = _PyType_Lookup(Py_Type(self), getitem_str); if (func != NULL) { - if ((f = func->ob_type->tp_descr_get) == NULL) + if ((f = Py_Type(func)->tp_descr_get) == NULL) Py_INCREF(func); else { - func = f(func, self, (PyObject *)(self->ob_type)); + func = f(func, self, (PyObject *)(Py_Type(self))); if (func == NULL) { return NULL; } @@ -4534,8 +4532,8 @@ /* Three-arg power doesn't use __rpow__. But ternary_op can call this when the second argument's type uses slot_nb_power, so check before calling self.__pow__. */ - if (self->ob_type->tp_as_number != NULL && - self->ob_type->tp_as_number->nb_power == slot_nb_power) { + if (Py_Type(self)->tp_as_number != NULL && + Py_Type(self)->tp_as_number->nb_power == slot_nb_power) { return call_method(self, "__pow__", &pow_str, "(OO)", other, modulus); } @@ -4725,12 +4723,12 @@ { int c; - if (self->ob_type->tp_compare == _PyObject_SlotCompare) { + if (Py_Type(self)->tp_compare == _PyObject_SlotCompare) { c = half_compare(self, other); if (c <= 1) return c; } - if (other->ob_type->tp_compare == _PyObject_SlotCompare) { + if (Py_Type(other)->tp_compare == _PyObject_SlotCompare) { c = half_compare(other, self); if (c < -1) return -2; @@ -4755,7 +4753,7 @@ } PyErr_Clear(); return PyString_FromFormat("<%s object at %p>", - self->ob_type->tp_name, self); + Py_Type(self)->tp_name, self); } static PyObject * @@ -4864,7 +4862,7 @@ static PyObject * slot_tp_getattr_hook(PyObject *self, PyObject *name) { - PyTypeObject *tp = self->ob_type; + PyTypeObject *tp = Py_Type(self); PyObject *getattr, *getattribute, *res; static PyObject *getattribute_str = NULL; static PyObject *getattr_str = NULL; @@ -4888,7 +4886,7 @@ } getattribute = _PyType_Lookup(tp, getattribute_str); if (getattribute == NULL || - (getattribute->ob_type == &PyWrapperDescr_Type && + (Py_Type(getattribute) == &PyWrapperDescr_Type && ((PyWrapperDescrObject *)getattribute)->d_wrapped == (void *)PyObject_GenericGetAttr)) res = PyObject_GenericGetAttr(self, name); @@ -4957,13 +4955,13 @@ { PyObject *res; - if (self->ob_type->tp_richcompare == slot_tp_richcompare) { + if (Py_Type(self)->tp_richcompare == slot_tp_richcompare) { res = half_richcompare(self, other, op); if (res != Py_NotImplemented) return res; Py_DECREF(res); } - if (other->ob_type->tp_richcompare == slot_tp_richcompare) { + if (Py_Type(other)->tp_richcompare == slot_tp_richcompare) { res = half_richcompare(other, self, _Py_SwappedOp[op]); if (res != Py_NotImplemented) { return res; @@ -4996,7 +4994,7 @@ if (func == NULL) { PyErr_Format(PyExc_TypeError, "'%.200s' object is not iterable", - self->ob_type->tp_name); + Py_Type(self)->tp_name); return NULL; } Py_DECREF(func); @@ -5013,7 +5011,7 @@ static PyObject * slot_tp_descr_get(PyObject *self, PyObject *obj, PyObject *type) { - PyTypeObject *tp = self->ob_type; + PyTypeObject *tp = Py_Type(self); PyObject *get; static PyObject *get_str = NULL; @@ -5071,7 +5069,7 @@ if (res != Py_None) { PyErr_Format(PyExc_TypeError, "__init__() should return None, not '%.200s'", - res->ob_type->tp_name); + Py_Type(res)->tp_name); Py_DECREF(res); return -1; } @@ -5156,7 +5154,7 @@ _Py_NewReference(self); self->ob_refcnt = refcnt; } - assert(!PyType_IS_GC(self->ob_type) || + assert(!PyType_IS_GC(Py_Type(self)) || _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so * we need to undo that. */ @@ -5168,8 +5166,8 @@ * undone. */ #ifdef COUNT_ALLOCS - --self->ob_type->tp_frees; - --self->ob_type->tp_allocs; + --Py_Type(self)->tp_frees; + --Py_Type(self)->tp_allocs; #endif } @@ -5531,7 +5529,7 @@ descr = _PyType_Lookup(type, p->name_strobj); if (descr == NULL) continue; - if (descr->ob_type == &PyWrapperDescr_Type) { + if (Py_Type(descr) == &PyWrapperDescr_Type) { void **tptr = resolve_slotdups(type, p->name_strobj); if (tptr == NULL || tptr == ptr) generic = p->function; @@ -5546,7 +5544,7 @@ use_generic = 1; } } - else if (descr->ob_type == &PyCFunction_Type && + else if (Py_Type(descr) == &PyCFunction_Type && PyCFunction_GET_FUNCTION(descr) == (PyCFunction)tp_new_wrapper && strcmp(p->name, "__new__") == 0) @@ -5817,7 +5815,7 @@ Py_XDECREF(su->obj); Py_XDECREF(su->type); Py_XDECREF(su->obj_type); - self->ob_type->tp_free(self); + Py_Type(self)->tp_free(self); } static PyObject * @@ -5882,7 +5880,7 @@ res = PyDict_GetItem(dict, name); if (res != NULL) { Py_INCREF(res); - f = res->ob_type->tp_descr_get; + f = Py_Type(res)->tp_descr_get; if (f != NULL) { tmp = f(res, /* Only pass 'obj' param if @@ -5918,7 +5916,7 @@ the normal case; the return value is obj.__class__. But... when obj is an instance, we want to allow for the case where - obj->ob_type is not a subclass of type, but obj.__class__ is! + Py_Type(obj) is not a subclass of type, but obj.__class__ is! This will allow using super() with a proxy for obj. */ @@ -5929,9 +5927,9 @@ } /* Normal case */ - if (PyType_IsSubtype(obj->ob_type, type)) { - Py_INCREF(obj->ob_type); - return obj->ob_type; + if (PyType_IsSubtype(Py_Type(obj), type)) { + Py_INCREF(Py_Type(obj)); + return Py_Type(obj); } else { /* Try the slow way */ @@ -5948,7 +5946,7 @@ if (class_attr != NULL && PyType_Check(class_attr) && - (PyTypeObject *)class_attr != obj->ob_type) + (PyTypeObject *)class_attr != Py_Type(obj)) { int ok = PyType_IsSubtype( (PyTypeObject *)class_attr, type); @@ -5979,10 +5977,10 @@ Py_INCREF(self); return self; } - if (su->ob_type != &PySuper_Type) + if (Py_Type(su) != &PySuper_Type) /* If su is an instance of a (strict) subclass of super, call its type */ - return PyObject_CallFunctionObjArgs((PyObject *)su->ob_type, + return PyObject_CallFunctionObjArgs((PyObject *)Py_Type(su), su->type, obj, NULL); else { /* Inline the common case */ @@ -6051,8 +6049,7 @@ } PyTypeObject PySuper_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "super", /* tp_name */ sizeof(superobject), /* tp_basicsize */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/unicodeobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/unicodeobject.c (original) +++ python/branches/bcannon-objcap/Objects/unicodeobject.c Thu Sep 6 21:35:45 2007 @@ -312,7 +312,7 @@ else { PyMem_DEL(unicode->str); Py_XDECREF(unicode->defenc); - unicode->ob_type->tp_free((PyObject *)unicode); + Py_Type(unicode)->tp_free((PyObject *)unicode); } } @@ -326,7 +326,7 @@ return -1; } v = (PyUnicodeObject *)*unicode; - if (v == NULL || !PyUnicode_Check(v) || v->ob_refcnt != 1 || length < 0) { + if (v == NULL || !PyUnicode_Check(v) || Py_Refcnt(v) != 1 || length < 0) { PyErr_BadInternalCall(); return -1; } @@ -554,7 +554,7 @@ PyErr_Format(PyExc_TypeError, "coercing to Unicode: need string or buffer, " "%.80s found", - obj->ob_type->tp_name); + Py_Type(obj)->tp_name); goto onError; } @@ -604,7 +604,7 @@ if (!PyUnicode_Check(unicode)) { PyErr_Format(PyExc_TypeError, "decoder did not return an unicode object (type=%.400s)", - unicode->ob_type->tp_name); + Py_Type(unicode)->tp_name); Py_DECREF(unicode); goto onError; } @@ -714,7 +714,7 @@ if (!PyString_Check(v)) { PyErr_Format(PyExc_TypeError, "encoder did not return a string object (type=%.400s)", - v->ob_type->tp_name); + Py_Type(v)->tp_name); Py_DECREF(v); goto onError; } @@ -795,7 +795,8 @@ static int unicode_decode_call_errorhandler(const char *errors, PyObject **errorHandler, const char *encoding, const char *reason, - const char *input, Py_ssize_t insize, Py_ssize_t *startinpos, Py_ssize_t *endinpos, PyObject **exceptionObject, const char **inptr, + const char *input, Py_ssize_t insize, Py_ssize_t *startinpos, + Py_ssize_t *endinpos, PyObject **exceptionObject, const char **inptr, PyObject **output, Py_ssize_t *outpos, Py_UNICODE **outptr) { static char *argparse = "O!n;decoding error handler must return (unicode, int) tuple"; @@ -1027,6 +1028,7 @@ } } else if (SPECIAL(ch,0,0)) { + startinpos = s-starts; errmsg = "unexpected special character"; s++; goto utf7Error; @@ -1504,6 +1506,272 @@ NULL); } +/* --- UTF-32 Codec ------------------------------------------------------- */ + +PyObject * +PyUnicode_DecodeUTF32(const char *s, + Py_ssize_t size, + const char *errors, + int *byteorder) +{ + return PyUnicode_DecodeUTF32Stateful(s, size, errors, byteorder, NULL); +} + +PyObject * +PyUnicode_DecodeUTF32Stateful(const char *s, + Py_ssize_t size, + const char *errors, + int *byteorder, + Py_ssize_t *consumed) +{ + const char *starts = s; + Py_ssize_t startinpos; + Py_ssize_t endinpos; + Py_ssize_t outpos; + PyUnicodeObject *unicode; + Py_UNICODE *p; +#ifndef Py_UNICODE_WIDE + int i, pairs; +#else + const int pairs = 0; +#endif + const unsigned char *q, *e; + int bo = 0; /* assume native ordering by default */ + const char *errmsg = ""; + /* Offsets from q for retrieving bytes in the right order. */ +#ifdef BYTEORDER_IS_LITTLE_ENDIAN + int iorder[] = {0, 1, 2, 3}; +#else + int iorder[] = {3, 2, 1, 0}; +#endif + PyObject *errorHandler = NULL; + PyObject *exc = NULL; + /* On narrow builds we split characters outside the BMP into two + codepoints => count how much extra space we need. */ +#ifndef Py_UNICODE_WIDE + for (i = pairs = 0; i < size/4; i++) + if (((Py_UCS4 *)s)[i] >= 0x10000) + pairs++; +#endif + + /* This might be one to much, because of a BOM */ + unicode = _PyUnicode_New((size+3)/4+pairs); + if (!unicode) + return NULL; + if (size == 0) + return (PyObject *)unicode; + + /* Unpack UTF-32 encoded data */ + p = unicode->str; + q = (unsigned char *)s; + e = q + size; + + if (byteorder) + bo = *byteorder; + + /* Check for BOM marks (U+FEFF) in the input and adjust current + byte order setting accordingly. In native mode, the leading BOM + mark is skipped, in all other modes, it is copied to the output + stream as-is (giving a ZWNBSP character). */ + if (bo == 0) { + if (size >= 4) { + const Py_UCS4 bom = (q[iorder[3]] << 24) | (q[iorder[2]] << 16) | + (q[iorder[1]] << 8) | q[iorder[0]]; +#ifdef BYTEORDER_IS_LITTLE_ENDIAN + if (bom == 0x0000FEFF) { + q += 4; + bo = -1; + } + else if (bom == 0xFFFE0000) { + q += 4; + bo = 1; + } +#else + if (bom == 0x0000FEFF) { + q += 4; + bo = 1; + } + else if (bom == 0xFFFE0000) { + q += 4; + bo = -1; + } +#endif + } + } + + if (bo == -1) { + /* force LE */ + iorder[0] = 0; + iorder[1] = 1; + iorder[2] = 2; + iorder[3] = 3; + } + else if (bo == 1) { + /* force BE */ + iorder[0] = 3; + iorder[1] = 2; + iorder[2] = 1; + iorder[3] = 0; + } + + while (q < e) { + Py_UCS4 ch; + /* remaining bytes at the end? (size should be divisible by 4) */ + if (e-q<4) { + if (consumed) + break; + errmsg = "truncated data"; + startinpos = ((const char *)q)-starts; + endinpos = ((const char *)e)-starts; + goto utf32Error; + /* The remaining input chars are ignored if the callback + chooses to skip the input */ + } + ch = (q[iorder[3]] << 24) | (q[iorder[2]] << 16) | + (q[iorder[1]] << 8) | q[iorder[0]]; + + if (ch >= 0x110000) + { + errmsg = "codepoint not in range(0x110000)"; + startinpos = ((const char *)q)-starts; + endinpos = startinpos+4; + goto utf32Error; + } +#ifndef Py_UNICODE_WIDE + if (ch >= 0x10000) + { + *p++ = 0xD800 | ((ch-0x10000) >> 10); + *p++ = 0xDC00 | ((ch-0x10000) & 0x3FF); + } + else +#endif + *p++ = ch; + q += 4; + continue; + utf32Error: + outpos = p-PyUnicode_AS_UNICODE(unicode); + if (unicode_decode_call_errorhandler( + errors, &errorHandler, + "utf32", errmsg, + starts, size, &startinpos, &endinpos, &exc, &s, + (PyObject **)&unicode, &outpos, &p)) + goto onError; + } + + if (byteorder) + *byteorder = bo; + + if (consumed) + *consumed = (const char *)q-starts; + + /* Adjust length */ + if (_PyUnicode_Resize(&unicode, p - unicode->str) < 0) + goto onError; + + Py_XDECREF(errorHandler); + Py_XDECREF(exc); + return (PyObject *)unicode; + +onError: + Py_DECREF(unicode); + Py_XDECREF(errorHandler); + Py_XDECREF(exc); + return NULL; +} + +PyObject * +PyUnicode_EncodeUTF32(const Py_UNICODE *s, + Py_ssize_t size, + const char *errors, + int byteorder) +{ + PyObject *v; + unsigned char *p; +#ifndef Py_UNICODE_WIDE + int i, pairs; +#else + const int pairs = 0; +#endif + /* Offsets from p for storing byte pairs in the right order. */ +#ifdef BYTEORDER_IS_LITTLE_ENDIAN + int iorder[] = {0, 1, 2, 3}; +#else + int iorder[] = {3, 2, 1, 0}; +#endif + +#define STORECHAR(CH) \ + do { \ + p[iorder[3]] = ((CH) >> 24) & 0xff; \ + p[iorder[2]] = ((CH) >> 16) & 0xff; \ + p[iorder[1]] = ((CH) >> 8) & 0xff; \ + p[iorder[0]] = (CH) & 0xff; \ + p += 4; \ + } while(0) + + /* In narrow builds we can output surrogate pairs as one codepoint, + so we need less space. */ +#ifndef Py_UNICODE_WIDE + for (i = pairs = 0; i < size-1; i++) + if (0xD800 <= s[i] && s[i] <= 0xDBFF && + 0xDC00 <= s[i+1] && s[i+1] <= 0xDFFF) + pairs++; +#endif + v = PyString_FromStringAndSize(NULL, + 4 * (size - pairs + (byteorder == 0))); + if (v == NULL) + return NULL; + + p = (unsigned char *)PyString_AS_STRING(v); + if (byteorder == 0) + STORECHAR(0xFEFF); + if (size == 0) + return v; + + if (byteorder == -1) { + /* force LE */ + iorder[0] = 0; + iorder[1] = 1; + iorder[2] = 2; + iorder[3] = 3; + } + else if (byteorder == 1) { + /* force BE */ + iorder[0] = 3; + iorder[1] = 2; + iorder[2] = 1; + iorder[3] = 0; + } + + while (size-- > 0) { + Py_UCS4 ch = *s++; +#ifndef Py_UNICODE_WIDE + if (0xD800 <= ch && ch <= 0xDBFF && size > 0) { + Py_UCS4 ch2 = *s; + if (0xDC00 <= ch2 && ch2 <= 0xDFFF) { + ch = (((ch & 0x3FF)<<10) | (ch2 & 0x3FF)) + 0x10000; + s++; + size--; + } + } +#endif + STORECHAR(ch); + } + return v; +#undef STORECHAR +} + +PyObject *PyUnicode_AsUTF32String(PyObject *unicode) +{ + if (!PyUnicode_Check(unicode)) { + PyErr_BadArgument(); + return NULL; + } + return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(unicode), + PyUnicode_GET_SIZE(unicode), + NULL, + 0); +} + /* --- UTF-16 Codec ------------------------------------------------------- */ PyObject * @@ -3242,8 +3510,7 @@ } static PyTypeObject EncodingMapType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "EncodingMap", /*tp_name*/ sizeof(struct encoding_map), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -3502,7 +3769,7 @@ char *outstart; Py_ssize_t outsize = PyString_GET_SIZE(*outobj); - if (mapping->ob_type == &EncodingMapType) { + if (Py_Type(mapping) == &EncodingMapType) { int res = encoding_map_lookup(c, mapping); Py_ssize_t requiredsize = *outpos+1; if (res == -1) @@ -3574,7 +3841,7 @@ /* find all unencodable characters */ while (collendpos < size) { PyObject *rep; - if (mapping->ob_type == &EncodingMapType) { + if (Py_Type(mapping) == &EncodingMapType) { int res = encoding_map_lookup(p[collendpos], mapping); if (res != -1) break; @@ -4632,7 +4899,7 @@ PyErr_Format(PyExc_TypeError, "sequence item %zd: expected string or Unicode," " %.80s found", - i, item->ob_type->tp_name); + i, Py_Type(item)->tp_name); goto onError; } item = PyUnicode_FromObject(item); @@ -5632,7 +5899,7 @@ PyErr_Format(PyExc_TypeError, "encoder did not return a string/unicode object " "(type=%.400s)", - v->ob_type->tp_name); + Py_Type(v)->tp_name); Py_DECREF(v); return NULL; } @@ -5668,7 +5935,7 @@ PyErr_Format(PyExc_TypeError, "decoder did not return a string/unicode object " "(type=%.400s)", - v->ob_type->tp_name); + Py_Type(v)->tp_name); Py_DECREF(v); return NULL; } @@ -5761,7 +6028,7 @@ "S.find(sub [,start [,end]]) -> int\n\ \n\ Return the lowest index in S where substring sub is found,\n\ -such that sub is contained within s[start,end]. Optional\n\ +such that sub is contained within s[start:end]. Optional\n\ arguments start and end are interpreted as in slice notation.\n\ \n\ Return -1 on failure."); @@ -6502,7 +6769,7 @@ "S.rfind(sub [,start [,end]]) -> int\n\ \n\ Return the highest index in S where substring sub is found,\n\ -such that sub is contained within s[start,end]. Optional\n\ +such that sub is contained within s[start:end]. Optional\n\ arguments start and end are interpreted as in slice notation.\n\ \n\ Return -1 on failure."); @@ -7120,6 +7387,12 @@ if (slicelength <= 0) { return PyUnicode_FromUnicode(NULL, 0); + } else if (start == 0 && step == 1 && slicelength == self->length && + PyUnicode_CheckExact(self)) { + Py_INCREF(self); + return (PyObject *)self; + } else if (step == 1) { + return PyUnicode_FromUnicode(self->str + start, slicelength); } else { source_buf = PyUnicode_AS_UNICODE((PyObject*)self); result_buf = (Py_UNICODE *)PyMem_MALLOC(slicelength* @@ -7294,7 +7567,8 @@ always given), therefore increase the length by one. */ - if ((type == 'g' && buflen <= (size_t)10 + (size_t)prec) || + if (((type == 'g' || type == 'G') && + buflen <= (size_t)10 + (size_t)prec) || (type == 'f' && buflen <= (size_t)53 + (size_t)prec)) { PyErr_SetString(PyExc_OverflowError, "formatted float is too long (precision too large?)"); @@ -7498,7 +7772,7 @@ arglen = -1; argidx = -2; } - if (args->ob_type->tp_as_mapping && !PyTuple_Check(args) && + if (Py_Type(args)->tp_as_mapping && !PyTuple_Check(args) && !PyObject_TypeCheck(args, &PyBaseString_Type)) dict = args; @@ -7962,8 +8236,7 @@ errors can be 'strict', 'replace' or 'ignore' and defaults to 'strict'."); PyTypeObject PyUnicode_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /* ob_size */ + PyVarObject_HEAD_INIT(&PyType_Type, 0) "unicode", /* tp_name */ sizeof(PyUnicodeObject), /* tp_size */ 0, /* tp_itemsize */ Modified: python/branches/bcannon-objcap/Objects/weakrefobject.c ============================================================================== --- python/branches/bcannon-objcap/Objects/weakrefobject.c (original) +++ python/branches/bcannon-objcap/Objects/weakrefobject.c Thu Sep 6 21:35:45 2007 @@ -105,7 +105,7 @@ { PyObject_GC_UnTrack(self); clear_weakref((PyWeakReference *) self); - self->ob_type->tp_free(self); + Py_Type(self)->tp_free(self); } @@ -172,7 +172,7 @@ name ? "" : "", self, - PyWeakref_GET_OBJECT(self)->ob_type->tp_name, + Py_Type(PyWeakref_GET_OBJECT(self))->tp_name, PyWeakref_GET_OBJECT(self), name); Py_XDECREF(nameobj); @@ -274,10 +274,10 @@ PyWeakReference *ref, *proxy; PyWeakReference **list; - if (!PyType_SUPPORTS_WEAKREFS(ob->ob_type)) { + if (!PyType_SUPPORTS_WEAKREFS(Py_Type(ob))) { PyErr_Format(PyExc_TypeError, "cannot create weak reference to '%s' object", - ob->ob_type->tp_name); + Py_Type(ob)->tp_name); return NULL; } if (callback == Py_None) @@ -332,8 +332,7 @@ PyTypeObject _PyWeakref_RefType = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "weakref", sizeof(PyWeakReference), 0, @@ -447,7 +446,7 @@ char buf[160]; PyOS_snprintf(buf, sizeof(buf), "", proxy, - PyWeakref_GET_OBJECT(proxy)->ob_type->tp_name, + Py_Type(PyWeakref_GET_OBJECT(proxy))->tp_name, PyWeakref_GET_OBJECT(proxy)); return PyString_FromString(buf); } @@ -646,8 +645,7 @@ PyTypeObject _PyWeakref_ProxyType = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "weakproxy", sizeof(PyWeakReference), 0, @@ -681,8 +679,7 @@ PyTypeObject _PyWeakref_CallableProxyType = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "weakcallableproxy", sizeof(PyWeakReference), 0, @@ -722,10 +719,10 @@ PyWeakReference **list; PyWeakReference *ref, *proxy; - if (!PyType_SUPPORTS_WEAKREFS(ob->ob_type)) { + if (!PyType_SUPPORTS_WEAKREFS(Py_Type(ob))) { PyErr_Format(PyExc_TypeError, "cannot create weak reference to '%s' object", - ob->ob_type->tp_name); + Py_Type(ob)->tp_name); return NULL; } list = GET_WEAKREFS_LISTPTR(ob); @@ -781,10 +778,10 @@ PyWeakReference **list; PyWeakReference *ref, *proxy; - if (!PyType_SUPPORTS_WEAKREFS(ob->ob_type)) { + if (!PyType_SUPPORTS_WEAKREFS(Py_Type(ob))) { PyErr_Format(PyExc_TypeError, "cannot create weak reference to '%s' object", - ob->ob_type->tp_name); + Py_Type(ob)->tp_name); return NULL; } list = GET_WEAKREFS_LISTPTR(ob); @@ -807,9 +804,9 @@ PyWeakReference *prev; if (PyCallable_Check(ob)) - result->ob_type = &_PyWeakref_CallableProxyType; + Py_Type(result) = &_PyWeakref_CallableProxyType; else - result->ob_type = &_PyWeakref_ProxyType; + Py_Type(result) = &_PyWeakref_ProxyType; get_basic_refs(*list, &ref, &proxy); if (callback == NULL) { if (proxy != NULL) { @@ -874,7 +871,7 @@ PyWeakReference **list; if (object == NULL - || !PyType_SUPPORTS_WEAKREFS(object->ob_type) + || !PyType_SUPPORTS_WEAKREFS(Py_Type(object)) || object->ob_refcnt != 0) { PyErr_BadInternalCall(); return; Modified: python/branches/bcannon-objcap/PC/_msi.c ============================================================================== --- python/branches/bcannon-objcap/PC/_msi.c (original) +++ python/branches/bcannon-objcap/PC/_msi.c Thu Sep 6 21:35:45 2007 @@ -417,8 +417,7 @@ }; static PyTypeObject record_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_msi.Record", /*tp_name*/ sizeof(msiobj), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -584,8 +583,7 @@ }; static PyTypeObject summary_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_msi.SummaryInformation", /*tp_name*/ sizeof(msiobj), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -733,8 +731,7 @@ }; static PyTypeObject msiview_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_msi.View", /*tp_name*/ sizeof(msiobj), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -851,8 +848,7 @@ }; static PyTypeObject msidb_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "_msi.Database", /*tp_name*/ sizeof(msiobj), /*tp_basicsize*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/PC/_winreg.c ============================================================================== --- python/branches/bcannon-objcap/PC/_winreg.c (original) +++ python/branches/bcannon-objcap/PC/_winreg.c Thu Sep 6 21:35:45 2007 @@ -460,8 +460,7 @@ /* The type itself */ PyTypeObject PyHKEY_Type = { - PyObject_HEAD_INIT(0) /* fill in type at module init */ - 0, + PyVarObject_HEAD_INIT(0, 0) /* fill in type at module init */ "PyHKEY", sizeof(PyHKEYObject), 0, Modified: python/branches/bcannon-objcap/PC/pyconfig.h ============================================================================== --- python/branches/bcannon-objcap/PC/pyconfig.h (original) +++ python/branches/bcannon-objcap/PC/pyconfig.h Thu Sep 6 21:35:45 2007 @@ -32,6 +32,11 @@ #define MS_WINCE #endif +/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */ +#ifdef USE_DL_EXPORT +# define Py_BUILD_CORE +#endif /* USE_DL_EXPORT */ + /* Visual Studio 2005 introduces deprecation warnings for "insecure" and POSIX functions. The insecure functions should be replaced by *_s versions (according to Microsoft); the @@ -140,7 +145,7 @@ #if defined(_M_IA64) #define COMPILER _Py_PASTE_VERSION("64 bit (Itanium)") #define MS_WINI64 -#elif defined(_M_X64) +#elif defined(_M_X64) || defined(_M_AMD64) #define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)") #define MS_WINX64 #else @@ -151,12 +156,26 @@ /* set the version macros for the windows headers */ #ifdef MS_WINX64 /* 64 bit only runs on XP or greater */ -#define _WIN32_WINNT 0x0501 -#define WINVER 0x0501 +#define Py_WINVER 0x0501 #else /* NT 4.0 or greater required otherwise */ -#define _WIN32_WINNT 0x0400 -#define WINVER 0x0400 +#define Py_WINVER 0x0400 +#endif + +/* We only set these values when building Python - we don't want to force + these values on extensions, as that will affect the prototypes and + structures exposed in the Windows headers. Even when building Python, we + allow a single source file to override this - they may need access to + structures etc so it can optionally use new Windows features if it + determines at runtime they are available. +*/ +#ifdef Py_BUILD_CORE +#ifndef WINVER +#define WINVER Py_WINVER +#endif +#ifndef _WIN32_WINNT +#define _WIN32_WINNT Py_WINVER +#endif #endif /* _W64 is not defined for VC6 or eVC4 */ @@ -287,11 +306,6 @@ # define MS_COREDLL /* deprecated old symbol */ #endif /* !MS_NO_COREDLL && ... */ -/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */ -#ifdef USE_DL_EXPORT -# define Py_BUILD_CORE -#endif /* USE_DL_EXPORT */ - /* All windows compilers that use this header support __declspec */ #define HAVE_DECLSPEC_DLL Modified: python/branches/bcannon-objcap/PCbuild8/build.bat ============================================================================== --- python/branches/bcannon-objcap/PCbuild8/build.bat (original) +++ python/branches/bcannon-objcap/PCbuild8/build.bat Thu Sep 6 21:35:45 2007 @@ -14,4 +14,15 @@ set cmd=devenv pcbuild.sln %build% "%conf%|%platf%" echo %cmd% -%cmd% \ No newline at end of file +%cmd% + +rem Copy whatever was built to the canonical 'PCBuild' directory. +rem This helps extensions which use distutils etc. +rem (Don't check if the build was successful - we expect a few failures +rem due to missing libs) +echo Copying built files to ..\PCBuild +if not exist %platf%%conf%\. (echo %platf%%conf% does not exist - nothing copied & goto xit) +if not exist ..\PCBuild\. (echo ..\PCBuild does not exist - nothing copied & goto xit) +xcopy /q/y %platf%%conf%\* ..\PCBuild\. + +:xit Modified: python/branches/bcannon-objcap/PCbuild8/readme.txt ============================================================================== --- python/branches/bcannon-objcap/PCbuild8/readme.txt (original) +++ python/branches/bcannon-objcap/PCbuild8/readme.txt Thu Sep 6 21:35:45 2007 @@ -90,6 +90,13 @@ large tables of Unicode data winsound play sounds (typically .wav files) under Windows + +Note: Check the dependencies of subprojects when building a subproject. You +need to manually build each of the dependencies, in order, first. A good +example of this is the pythoncore subproject. It is dependent on both the +make_versioninfo and the make_buildinfo subprojects. You can check the build +order by right clicking on the project name, in the solution explorer, and +selecting the project build order item. The following subprojects will generally NOT build out of the box. They wrap code Python doesn't control, and you'll need to download the base Modified: python/branches/bcannon-objcap/Parser/parsetok.c ============================================================================== --- python/branches/bcannon-objcap/Parser/parsetok.c (original) +++ python/branches/bcannon-objcap/Parser/parsetok.c Thu Sep 6 21:35:45 2007 @@ -218,16 +218,24 @@ err_ret->error = E_EOF; err_ret->lineno = tok->lineno; if (tok->buf != NULL) { + char *text = NULL; size_t len; assert(tok->cur - tok->buf < INT_MAX); err_ret->offset = (int)(tok->cur - tok->buf); len = tok->inp - tok->buf; - err_ret->text = (char *) PyObject_MALLOC(len + 1); - if (err_ret->text != NULL) { - if (len > 0) - strncpy(err_ret->text, tok->buf, len); - err_ret->text[len] = '\0'; +#ifdef Py_USING_UNICODE + text = PyTokenizer_RestoreEncoding(tok, len, &err_ret->offset); + +#endif + if (text == NULL) { + text = (char *) PyObject_MALLOC(len + 1); + if (text != NULL) { + if (len > 0) + strncpy(text, tok->buf, len); + text[len] = '\0'; + } } + err_ret->text = text; } } else if (tok->encoding != NULL) { node* r = PyNode_New(encoding_decl); Modified: python/branches/bcannon-objcap/Parser/tokenizer.c ============================================================================== --- python/branches/bcannon-objcap/Parser/tokenizer.c (original) +++ python/branches/bcannon-objcap/Parser/tokenizer.c Thu Sep 6 21:35:45 2007 @@ -1522,6 +1522,68 @@ return result; } +/* This function is only called from parsetok. However, it cannot live + there, as it must be empty for PGEN, and we can check for PGEN only + in this file. */ + +#ifdef PGEN +char* +PyTokenizer_RestoreEncoding(struct tok_state* tok, int len, int* offset) +{ + return NULL; +} +#else +static PyObject * +dec_utf8(const char *enc, const char *text, size_t len) { + PyObject *ret = NULL; + PyObject *unicode_text = PyUnicode_DecodeUTF8(text, len, "replace"); + if (unicode_text) { + ret = PyUnicode_AsEncodedString(unicode_text, enc, "replace"); + Py_DECREF(unicode_text); + } + if (!ret) { + PyErr_Print(); + } + return ret; +} + +char * +PyTokenizer_RestoreEncoding(struct tok_state* tok, int len, int *offset) +{ + char *text = NULL; + if (tok->encoding) { + /* convert source to original encondig */ + PyObject *lineobj = dec_utf8(tok->encoding, tok->buf, len); + if (lineobj != NULL) { + int linelen = PyString_Size(lineobj); + const char *line = PyString_AsString(lineobj); + text = PyObject_MALLOC(linelen + 1); + if (text != NULL && line != NULL) { + if (linelen) + strncpy(text, line, linelen); + text[linelen] = '\0'; + } + Py_DECREF(lineobj); + + /* adjust error offset */ + if (*offset > 1) { + PyObject *offsetobj = dec_utf8(tok->encoding, + tok->buf, *offset-1); + if (offsetobj) { + *offset = PyString_Size(offsetobj) + 1; + Py_DECREF(offsetobj); + } + } + + } + } + return text; + +} +#endif + + + #ifdef Py_DEBUG void Modified: python/branches/bcannon-objcap/Parser/tokenizer.h ============================================================================== --- python/branches/bcannon-objcap/Parser/tokenizer.h (original) +++ python/branches/bcannon-objcap/Parser/tokenizer.h Thu Sep 6 21:35:45 2007 @@ -58,6 +58,8 @@ extern struct tok_state *PyTokenizer_FromFile(FILE *, char *, char *); extern void PyTokenizer_Free(struct tok_state *); extern int PyTokenizer_Get(struct tok_state *, char **, char **); +extern char * PyTokenizer_RestoreEncoding(struct tok_state* tok, + int len, int *offset); #ifdef __cplusplus } Modified: python/branches/bcannon-objcap/Python/ast.c ============================================================================== --- python/branches/bcannon-objcap/Python/ast.c (original) +++ python/branches/bcannon-objcap/Python/ast.c Thu Sep 6 21:35:45 2007 @@ -1243,9 +1243,26 @@ c->c_arena); case STRING: { PyObject *str = parsestrplus(c, n); - if (!str) + if (!str) { + if (PyErr_ExceptionMatches(PyExc_UnicodeError)){ + PyObject *type, *value, *tback, *errstr; + PyErr_Fetch(&type, &value, &tback); + errstr = ((PyUnicodeErrorObject *)value)->reason; + if (errstr) { + char *s = ""; + char buf[128]; + s = PyString_AsString(errstr); + PyOS_snprintf(buf, sizeof(buf), "(unicode error) %s", s); + ast_error(n, buf); + } else { + ast_error(n, "(unicode error) unknown error"); + } + Py_DECREF(type); + Py_DECREF(value); + Py_XDECREF(tback); + } return NULL; - + } PyArena_AddPyObject(c->c_arena, str); return Str(str, LINENO(n), n->n_col_offset, c->c_arena); } @@ -3126,6 +3143,7 @@ #endif } +#ifdef Py_USING_UNICODE static PyObject * decode_unicode(const char *s, size_t len, int rawmode, const char *encoding) { @@ -3187,6 +3205,7 @@ Py_XDECREF(u); return v; } +#endif /* s is a Python string literal, including the bracketing quote characters, * and r &/or u prefixes (if any), and embedded escape sequences (if any). Modified: python/branches/bcannon-objcap/Python/ceval.c ============================================================================== --- python/branches/bcannon-objcap/Python/ceval.c (original) +++ python/branches/bcannon-objcap/Python/ceval.c Thu Sep 6 21:35:45 2007 @@ -3655,7 +3655,7 @@ } if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); - nd = ((PyTupleObject *)argdefs)->ob_size; + nd = Py_Size(argdefs); } return PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, (*pp_stack)-n, na, Modified: python/branches/bcannon-objcap/Python/compile.c ============================================================================== --- python/branches/bcannon-objcap/Python/compile.c (original) +++ python/branches/bcannon-objcap/Python/compile.c Thu Sep 6 21:35:45 2007 @@ -907,7 +907,20 @@ Py_ssize_t arg; /* necessary to make sure types aren't coerced (e.g., int and long) */ - t = PyTuple_Pack(2, o, o->ob_type); + /* _and_ to distinguish 0.0 from -0.0 e.g. on IEEE platforms */ + if (PyFloat_Check(o)) { + double d = PyFloat_AS_DOUBLE(o); + unsigned char* p = (unsigned char*) &d; + /* all we need is to make the tuple different in either the 0.0 + * or -0.0 case from all others, just to avoid the "coercion". + */ + if (*p==0 && p[sizeof(double)-1]==0) + t = PyTuple_Pack(3, o, o->ob_type, Py_None); + else + t = PyTuple_Pack(2, o, o->ob_type); + } else { + t = PyTuple_Pack(2, o, o->ob_type); + } if (t == NULL) return -1; Modified: python/branches/bcannon-objcap/Python/import.c ============================================================================== --- python/branches/bcannon-objcap/Python/import.c (original) +++ python/branches/bcannon-objcap/Python/import.c Thu Sep 6 21:35:45 2007 @@ -119,15 +119,19 @@ /* prepare _PyImport_Filetab: copy entries from _PyImport_DynLoadFiletab and _PyImport_StandardFiletab. */ +#ifdef HAVE_DYNAMIC_LOADING for (scan = _PyImport_DynLoadFiletab; scan->suffix != NULL; ++scan) ++countD; +#endif for (scan = _PyImport_StandardFiletab; scan->suffix != NULL; ++scan) ++countS; filetab = PyMem_NEW(struct filedescr, countD + countS + 1); if (filetab == NULL) Py_FatalError("Can't initialize import file table."); +#ifdef HAVE_DYNAMIC_LOADING memcpy(filetab, _PyImport_DynLoadFiletab, countD * sizeof(struct filedescr)); +#endif memcpy(filetab + countD, _PyImport_StandardFiletab, countS * sizeof(struct filedescr)); filetab[countD + countS].suffix = NULL; @@ -1373,7 +1377,7 @@ saved_namelen = namelen; #endif /* PYOS_OS2 */ for (fdp = _PyImport_Filetab; fdp->suffix != NULL; fdp++) { -#if defined(PYOS_OS2) +#if defined(PYOS_OS2) && defined(HAVE_DYNAMIC_LOADING) /* OS/2 limits DLLs to 8 character names (w/o extension) * so if the name is longer than that and its a @@ -3039,8 +3043,7 @@ static PyTypeObject NullImporterType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ + PyVarObject_HEAD_INIT(NULL, 0) "imp.NullImporter", /*tp_name*/ sizeof(NullImporter), /*tp_basicsize*/ 0, /*tp_itemsize*/ Modified: python/branches/bcannon-objcap/Python/structmember.c ============================================================================== --- python/branches/bcannon-objcap/Python/structmember.c (original) +++ python/branches/bcannon-objcap/Python/structmember.c Thu Sep 6 21:35:45 2007 @@ -156,6 +156,12 @@ return -1; } +#define WARN(msg) \ + do { \ + if (PyErr_Warn(PyExc_RuntimeWarning, msg) < 0) \ + return -1; \ + } while (0) + int PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v) { @@ -178,60 +184,54 @@ addr += l->offset; switch (l->type) { case T_BYTE:{ - long long_val; - long_val = PyInt_AsLong(v); + long long_val = PyInt_AsLong(v); if ((long_val == -1) && PyErr_Occurred()) return -1; + *(char*)addr = (char)long_val; /* XXX: For compatibility, only warn about truncations for now. */ if ((long_val > CHAR_MAX) || (long_val < CHAR_MIN)) - PyErr_Warn(PyExc_RuntimeWarning, "Truncation of value to char"); - *(char*)addr = (char)long_val; + WARN("Truncation of value to char"); break; } case T_UBYTE:{ - long long_val; - long_val = PyInt_AsLong(v); + long long_val = PyInt_AsLong(v); if ((long_val == -1) && PyErr_Occurred()) return -1; - if ((long_val > UCHAR_MAX) || (long_val < 0)) - PyErr_Warn(PyExc_RuntimeWarning, "Truncation of value to unsigned char"); *(unsigned char*)addr = (unsigned char)long_val; + if ((long_val > UCHAR_MAX) || (long_val < 0)) + WARN("Truncation of value to unsigned char"); break; } case T_SHORT:{ - long long_val; - long_val = PyInt_AsLong(v); + long long_val = PyInt_AsLong(v); if ((long_val == -1) && PyErr_Occurred()) return -1; - if ((long_val > SHRT_MAX) || (long_val < SHRT_MIN)) - PyErr_Warn(PyExc_RuntimeWarning, "Truncation of value to short"); *(short*)addr = (short)long_val; + if ((long_val > SHRT_MAX) || (long_val < SHRT_MIN)) + WARN("Truncation of value to short"); break; } case T_USHORT:{ - long long_val; - long_val = PyInt_AsLong(v); + long long_val = PyInt_AsLong(v); if ((long_val == -1) && PyErr_Occurred()) return -1; - if ((long_val > USHRT_MAX) || (long_val < 0)) - PyErr_Warn(PyExc_RuntimeWarning, "Truncation of value to unsigned short"); *(unsigned short*)addr = (unsigned short)long_val; + if ((long_val > USHRT_MAX) || (long_val < 0)) + WARN("Truncation of value to unsigned short"); break; } case T_INT:{ - long long_val; - long_val = PyInt_AsLong(v); + long long_val = PyInt_AsLong(v); if ((long_val == -1) && PyErr_Occurred()) return -1; - if ((long_val > INT_MAX) || (long_val < INT_MIN)) - PyErr_Warn(PyExc_RuntimeWarning, "Truncation of value to int"); *(int *)addr = (int)long_val; + if ((long_val > INT_MAX) || (long_val < INT_MIN)) + WARN("Truncation of value to int"); break; } case T_UINT:{ - unsigned long ulong_val; - ulong_val = PyLong_AsUnsignedLong(v); + unsigned long ulong_val = PyLong_AsUnsignedLong(v); if ((ulong_val == (unsigned int)-1) && PyErr_Occurred()) { /* XXX: For compatibility, accept negative int values as well. */ @@ -239,11 +239,12 @@ ulong_val = PyLong_AsLong(v); if ((ulong_val == (unsigned int)-1) && PyErr_Occurred()) return -1; - PyErr_Warn(PyExc_RuntimeWarning, "Writing negative value into unsigned field"); - } + *(unsigned int *)addr = (unsigned int)ulong_val; + WARN("Writing negative value into unsigned field"); + } else + *(unsigned int *)addr = (unsigned int)ulong_val; if (ulong_val > UINT_MAX) - PyErr_Warn(PyExc_RuntimeWarning, "Truncation of value to unsigned int"); - *(unsigned int *)addr = (unsigned int)ulong_val; + WARN("Truncation of value to unsigned int"); break; } case T_LONG:{ @@ -260,9 +261,10 @@ as well. */ PyErr_Clear(); *(unsigned long*)addr = PyLong_AsLong(v); - if ((*(unsigned long*)addr == (unsigned int)-1) && PyErr_Occurred()) + if ((*(unsigned long*)addr == (unsigned int)-1) + && PyErr_Occurred()) return -1; - PyErr_Warn(PyExc_RuntimeWarning, "Writing negative value into unsigned field"); + WARN("Writing negative value into unsigned field"); } break; } @@ -274,8 +276,7 @@ break; } case T_FLOAT:{ - double double_val; - double_val = PyFloat_AsDouble(v); + double double_val = PyFloat_AsDouble(v); if ((double_val == -1) && PyErr_Occurred()) return -1; *(float*)addr = (float)double_val; Modified: python/branches/bcannon-objcap/Python/symtable.c ============================================================================== --- python/branches/bcannon-objcap/Python/symtable.c (original) +++ python/branches/bcannon-objcap/Python/symtable.c Thu Sep 6 21:35:45 2007 @@ -117,8 +117,7 @@ }; PyTypeObject PySTEntry_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "symtable entry", sizeof(PySTEntryObject), 0, Modified: python/branches/bcannon-objcap/Python/traceback.c ============================================================================== --- python/branches/bcannon-objcap/Python/traceback.c (original) +++ python/branches/bcannon-objcap/Python/traceback.c Thu Sep 6 21:35:45 2007 @@ -52,8 +52,7 @@ } PyTypeObject PyTraceBack_Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, + PyVarObject_HEAD_INIT(&PyType_Type, 0) "traceback", sizeof(PyTracebackObject), 0, Modified: python/branches/bcannon-objcap/Tools/msi/msi.py ============================================================================== --- python/branches/bcannon-objcap/Tools/msi/msi.py (original) +++ python/branches/bcannon-objcap/Tools/msi/msi.py Thu Sep 6 21:35:45 2007 @@ -103,7 +103,8 @@ msvcr71_uuid = "{8666C8DD-D0B4-4B42-928E-A69E32FA5D4D}" pythondll_uuid = { "24":"{9B81E618-2301-4035-AC77-75D9ABEB7301}", - "25":"{2e41b118-38bd-4c1b-a840-6977efd1b911}" + "25":"{2e41b118-38bd-4c1b-a840-6977efd1b911}", + "26":"{34ebecac-f046-4e1c-b0e3-9bac3cdaacfa}", } [major+minor] # Build the mingw import library, libpythonXY.a @@ -166,9 +167,11 @@ testprefix = '' if msilib.Win64: - SystemFolderName = "[SystemFolder64]" + SystemFolderName = "[System64Folder]" + registry_component = 4|256 else: SystemFolderName = "[SystemFolder]" + registry_component = 4 msilib.reset() @@ -191,7 +194,7 @@ schema, ProductName="Python "+full_current_version, ProductCode=product_code, ProductVersion=current_version, - Manufacturer=u"Martin v. L\xf6wis") + Manufacturer=u"Python Software Foundation") # The default sequencing of the RemoveExistingProducts action causes # removal of files that got just installed. Place it after # InstallInitialize, so we first uninstall everything, but still roll @@ -1061,15 +1064,15 @@ tcldata = [] if have_tcl: tcldata = [ - ("REGISTRY.tcl", msilib.gen_uuid(), "TARGETDIR", 4, None, + ("REGISTRY.tcl", msilib.gen_uuid(), "TARGETDIR", registry_component, None, "py.IDLE")] add_data(db, "Component", # msidbComponentAttributesRegistryKeyPath = 4 - [("REGISTRY", msilib.gen_uuid(), "TARGETDIR", 4, None, + [("REGISTRY", msilib.gen_uuid(), "TARGETDIR", registry_component, None, "InstallPath"), - ("REGISTRY.doc", msilib.gen_uuid(), "TARGETDIR", 4, None, + ("REGISTRY.doc", msilib.gen_uuid(), "TARGETDIR", registry_component, None, "Documentation"), - ("REGISTRY.def", msilib.gen_uuid(), "TARGETDIR", 4, + ("REGISTRY.def", msilib.gen_uuid(), "TARGETDIR", registry_component, None, None)] + tcldata) # See "FeatureComponents Table". # The association between TclTk and pythonw.exe is necessary to make ICE59 Modified: python/branches/bcannon-objcap/Tools/msi/msilib.py ============================================================================== --- python/branches/bcannon-objcap/Tools/msi/msilib.py (original) +++ python/branches/bcannon-objcap/Tools/msi/msilib.py Thu Sep 6 21:35:45 2007 @@ -390,8 +390,8 @@ cabarc = "cabarc.exe" cmd = r'"%s" -m lzx:21 n %s.cab @%s.txt' % (cabarc, self.name, self.name) p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT)[0] - for line in (p.stdout, p.stdin): + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + for line in p.stdout: if line.startswith(" -- adding "): sys.stdout.write(".") else: Modified: python/branches/bcannon-objcap/Tools/scripts/setup.py ============================================================================== --- python/branches/bcannon-objcap/Tools/scripts/setup.py (original) +++ python/branches/bcannon-objcap/Tools/scripts/setup.py Thu Sep 6 21:35:45 2007 @@ -11,6 +11,7 @@ 'ftpmirror.py', 'h2py.py', 'lfcr.py', + '../i18n/pygettext.py', 'logmerge.py', '../../Lib/tabnanny.py', '../../Lib/timeit.py', Modified: python/branches/bcannon-objcap/configure ============================================================================== --- python/branches/bcannon-objcap/configure (original) +++ python/branches/bcannon-objcap/configure Thu Sep 6 21:35:45 2007 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 54283 . +# From configure.in Revision: 57904 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.6. # @@ -1838,6 +1838,14 @@ _ACEOF +# OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is +# also defined. This can be overridden by defining _BSD_SOURCE + +cat >>confdefs.h <<\_ACEOF +#define _BSD_SOURCE 1 +_ACEOF + + # The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables # u_int on Irix 5.3. Defining _BSD_TYPES brings it back. @@ -12025,6 +12033,14 @@ cur_target=10.3 fi CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + + # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the + # environment with a value that is the same as what we'll use + # in the Makefile to ensure that we'll get the same compiler + # environment during configure and build time. + MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" + export MACOSX_DEPLOYMENT_TARGET + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 then @@ -21683,6 +21699,77 @@ fi +# also in 4.0 +{ echo "$as_me:$LINENO: checking for rl_completion_display_matches_hook in -lreadline" >&5 +echo $ECHO_N "checking for rl_completion_display_matches_hook in -lreadline... $ECHO_C" >&6; } +if test "${ac_cv_lib_readline_rl_completion_display_matches_hook+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lreadline $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char rl_completion_display_matches_hook (); +int +main () +{ +return rl_completion_display_matches_hook (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_readline_rl_completion_display_matches_hook=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_readline_rl_completion_display_matches_hook=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_completion_display_matches_hook" >&5 +echo "${ECHO_T}$ac_cv_lib_readline_rl_completion_display_matches_hook" >&6; } +if test $ac_cv_lib_readline_rl_completion_display_matches_hook = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1 +_ACEOF + +fi + + # check for readline 4.2 { echo "$as_me:$LINENO: checking for rl_completion_matches in -lreadline" >&5 echo $ECHO_N "checking for rl_completion_matches in -lreadline... $ECHO_C" >&6; } @@ -24195,4 +24282,21 @@ $SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ -s Modules Modules/Setup.config \ Modules/Setup.local Modules/Setup + +case $ac_sys_system in +BeOS) + { echo "$as_me:$LINENO: WARNING: + + Support for BeOS is deprecated as of Python 2.6. + See PEP 11 for the gory details. + " >&5 +echo "$as_me: WARNING: + + Support for BeOS is deprecated as of Python 2.6. + See PEP 11 for the gory details. + " >&2;} + ;; +*) ;; +esac + mv config.c Modules Modified: python/branches/bcannon-objcap/configure.in ============================================================================== --- python/branches/bcannon-objcap/configure.in (original) +++ python/branches/bcannon-objcap/configure.in Thu Sep 6 21:35:45 2007 @@ -4,7 +4,7 @@ m4_define(PYTHON_VERSION, 2.6) AC_REVISION($Revision$) -AC_PREREQ(2.59) +AC_PREREQ(2.61) AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs) AC_CONFIG_SRCDIR([Include/object.h]) AC_CONFIG_HEADER(pyconfig.h) @@ -50,6 +50,10 @@ # them. AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features]) +# OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is +# also defined. This can be overridden by defining _BSD_SOURCE +AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features]) + # The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables # u_int on Irix 5.3. Defining _BSD_TYPES brings it back. AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int]) @@ -1505,6 +1509,14 @@ cur_target=10.3 fi CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + + # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the + # environment with a value that is the same as what we'll use + # in the Makefile to ensure that we'll get the same compiler + # environment during configure and build time. + MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" + export MACOSX_DEPLOYMENT_TARGET + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 then @@ -3125,6 +3137,11 @@ AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1, [Define if you have readline 4.0]), , ) +# also in 4.0 +AC_CHECK_LIB(readline, rl_completion_display_matches_hook, + AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1, + [Define if you have readline 4.0]), , ) + # check for readline 4.2 AC_CHECK_LIB(readline, rl_completion_matches, AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1, @@ -3477,4 +3494,16 @@ $SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ -s Modules Modules/Setup.config \ Modules/Setup.local Modules/Setup + +case $ac_sys_system in +BeOS) + AC_MSG_WARN([ + + Support for BeOS is deprecated as of Python 2.6. + See PEP 11 for the gory details. + ]) + ;; +*) ;; +esac + mv config.c Modules Modified: python/branches/bcannon-objcap/pyconfig.h.in ============================================================================== --- python/branches/bcannon-objcap/pyconfig.h.in (original) +++ python/branches/bcannon-objcap/pyconfig.h.in Thu Sep 6 21:35:45 2007 @@ -103,6 +103,10 @@ /* Define if you have the 'resize_term' function. */ #undef HAVE_CURSES_RESIZE_TERM +/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. + */ +#undef HAVE_DECL_TZNAME + /* Define to 1 if you have the device macros. */ #undef HAVE_DEVICE_MACROS @@ -428,6 +432,9 @@ /* Define if you have readline 2.2 */ #undef HAVE_RL_COMPLETION_APPEND_CHARACTER +/* Define if you have readline 4.0 */ +#undef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK + /* Define if you have readline 4.2 */ #undef HAVE_RL_COMPLETION_MATCHES @@ -802,22 +809,22 @@ /* Define if i>>j for signed int i does not extend the sign bit when i < 0 */ #undef SIGNED_RIGHT_SHIFT_ZERO_FILLS -/* The size of a `double', as computed by sizeof. */ +/* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE -/* The size of a `float', as computed by sizeof. */ +/* The size of `float', as computed by sizeof. */ #undef SIZEOF_FLOAT -/* The size of a `fpos_t', as computed by sizeof. */ +/* The size of `fpos_t', as computed by sizeof. */ #undef SIZEOF_FPOS_T -/* The size of a `int', as computed by sizeof. */ +/* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT -/* The size of a `long', as computed by sizeof. */ +/* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG -/* The size of a `long long', as computed by sizeof. */ +/* The size of `long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG /* The number of bytes in an off_t. */ @@ -826,25 +833,25 @@ /* The number of bytes in a pthread_t. */ #undef SIZEOF_PTHREAD_T -/* The size of a `short', as computed by sizeof. */ +/* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT -/* The size of a `size_t', as computed by sizeof. */ +/* The size of `size_t', as computed by sizeof. */ #undef SIZEOF_SIZE_T /* The number of bytes in a time_t. */ #undef SIZEOF_TIME_T -/* The size of a `uintptr_t', as computed by sizeof. */ +/* The size of `uintptr_t', as computed by sizeof. */ #undef SIZEOF_UINTPTR_T -/* The size of a `void *', as computed by sizeof. */ +/* The size of `void *', as computed by sizeof. */ #undef SIZEOF_VOID_P -/* The size of a `wchar_t', as computed by sizeof. */ +/* The size of `wchar_t', as computed by sizeof. */ #undef SIZEOF_WCHAR_T -/* The size of a `_Bool', as computed by sizeof. */ +/* The size of `_Bool', as computed by sizeof. */ #undef SIZEOF__BOOL /* Define to 1 if you have the ANSI C header files. */ @@ -924,6 +931,9 @@ # undef _ALL_SOURCE #endif +/* Define on OpenBSD to activate all library features */ +#undef _BSD_SOURCE + /* Define on Irix to enable u_int */ #undef _BSD_TYPES @@ -980,7 +990,7 @@ /* Define to `int' if does not define. */ #undef mode_t -/* Define to `long' if does not define. */ +/* Define to `long int' if does not define. */ #undef off_t /* Define to `int' if does not define. */ @@ -989,7 +999,7 @@ /* Define to empty if the keyword does not work. */ #undef signed -/* Define to `unsigned' if does not define. */ +/* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `int' if does not define. */ Modified: python/branches/bcannon-objcap/setup.py ============================================================================== --- python/branches/bcannon-objcap/setup.py (original) +++ python/branches/bcannon-objcap/setup.py Thu Sep 6 21:35:45 2007 @@ -194,18 +194,21 @@ for e, f, g in zip(lst[::3], lst[1::3], lst[2::3]): print "%-*s %-*s %-*s" % (longest, e, longest, f, longest, g) - print if missing: print print "Failed to find the necessary bits to build these modules:" print_three_column(missing) + print ("To find the necessary bits, look in setup.py in" + " detect_modules() for the module's name.") + print if self.failed: failed = self.failed[:] print print "Failed to build these modules:" print_three_column(failed) + print def build_extension(self, ext): @@ -299,7 +302,8 @@ # strip out double-dashes first so that we don't end up with # substituting "--Long" to "-Long" and thus lead to "ong" being # used for a library directory. - env_val = re.sub(r'(^|\s+)-(-|(?!%s))' % arg_name[1], '', env_val) + env_val = re.sub(r'(^|\s+)-(-|(?!%s))' % arg_name[1], + ' ', env_val) parser = optparse.OptionParser() # Make sure that allowing args interspersed with options is # allowed @@ -631,7 +635,8 @@ include_dirs = ssl_incs, library_dirs = ssl_libs, libraries = ['ssl', 'crypto']) ) - missing.extend(['_sha', '_md5']) + # these aren't strictly missing since they are unneeded. + #missing.extend(['_sha', '_md5']) else: # The _sha module implements the SHA1 hash algorithm. exts.append( Extension('_sha', ['shamodule.c']) ) @@ -648,6 +653,7 @@ exts.append( Extension('_sha256', ['sha256module.c']) ) exts.append( Extension('_sha512', ['sha512module.c']) ) else: + # these aren't strictly missing since they are unneeded. missing.extend(['_sha256', '_sha512']) # Modules that provide persistent dictionary-like semantics. You will @@ -657,14 +663,14 @@ # implementation independent wrapper for these; dumbdbm.py provides # similar functionality (but slower of course) implemented in Python. - # Sleepycat Berkeley DB interface. http://www.sleepycat.com + # Sleepycat^WOracle Berkeley DB interface. http://www.sleepycat.com # - # This requires the Sleepycat DB code. The supported versions + # This requires the Sleepycat^WOracle DB code. The supported versions # are set below. Visit http://www.sleepycat.com/ to download # a release. Most open source OSes come with one or more # versions of BerkeleyDB already installed. - max_db_ver = (4, 5) + max_db_ver = (4, 6) min_db_ver = (3, 3) db_setup_debug = False # verbose debug prints from this script? @@ -682,7 +688,7 @@ '/sw/include/db3', ] # 4.x minor number specific paths - for x in (0,1,2,3,4,5): + for x in (0,1,2,3,4,5,6): db_inc_paths.append('/usr/include/db4%d' % x) db_inc_paths.append('/usr/include/db4.%d' % x) db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x) @@ -707,7 +713,7 @@ for dn in inc_dirs: std_variants.append(os.path.join(dn, 'db3')) std_variants.append(os.path.join(dn, 'db4')) - for x in (0,1,2,3,4): + for x in (0,1,2,3,4,5,6): std_variants.append(os.path.join(dn, "db4%d"%x)) std_variants.append(os.path.join(dn, "db4.%d"%x)) for x in (2,3): @@ -903,8 +909,13 @@ # accidentally building this module with a later version of the # underlying db library. May BSD-ish Unixes incorporate db 1.85 # symbols into libc and place the include file in /usr/include. + # + # If the better bsddb library can be built (db_incs is defined) + # we do not build this one. Otherwise this build will pick up + # the more recent berkeleydb's db.h file first in the include path + # when attempting to compile and it will fail. f = "/usr/include/db.h" - if os.path.exists(f): + if os.path.exists(f) and not db_incs: data = open(f).read() m = re.search(r"#s*define\s+HASHVERSION\s+2\s*", data) if m is not None: From python-checkins at python.org Thu Sep 6 22:13:37 2007 From: python-checkins at python.org (brett.cannon) Date: Thu, 6 Sep 2007 22:13:37 +0200 (CEST) Subject: [Python-checkins] r58019 - in python/branches/bcannon-objcap: Doc/extending/extending.rst Lib/test/crashers/borrowed_ref_4.py Modules/_lsprof.c Message-ID: <20070906201337.756F41E400A@bag.python.org> Author: brett.cannon Date: Thu Sep 6 22:13:37 2007 New Revision: 58019 Added: python/branches/bcannon-objcap/Lib/test/crashers/borrowed_ref_4.py - copied unchanged from r58013, python/trunk/Lib/test/crashers/borrowed_ref_4.py Modified: python/branches/bcannon-objcap/ (props changed) python/branches/bcannon-objcap/Doc/extending/extending.rst python/branches/bcannon-objcap/Modules/_lsprof.c Log: Merged revisions 57999-58018 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r58004 | armin.rigo | 2007-09-06 01:30:51 -0700 (Thu, 06 Sep 2007) | 4 lines Patch #1733973 by peaker: ptrace_enter_call() assumes no exception is currently set. This assumption is broken when throwing into a generator. ........ r58006 | armin.rigo | 2007-09-06 02:30:38 -0700 (Thu, 06 Sep 2007) | 4 lines PyDict_GetItem() returns a borrowed reference. This attack is against ceval.c:IMPORT_NAME, which calls an object (__builtin__.__import__) without holding a reference to it. ........ r58013 | georg.brandl | 2007-09-06 07:49:56 -0700 (Thu, 06 Sep 2007) | 2 lines Backport from 3k: #1116: fix reference to old filename. ........ Modified: python/branches/bcannon-objcap/Doc/extending/extending.rst ============================================================================== --- python/branches/bcannon-objcap/Doc/extending/extending.rst (original) +++ python/branches/bcannon-objcap/Doc/extending/extending.rst Thu Sep 6 22:13:37 2007 @@ -423,7 +423,7 @@ standard interface to call a Python function. (I won't dwell on how to call the Python parser with a particular string as input --- if you're interested, have a look at the implementation of the :option:`-c` command line option in -:file:`Python/pythonmain.c` from the Python source code.) +:file:`Modules/main.c` from the Python source code.) Calling a Python function is easy. First, the Python program must somehow pass you the Python function object. You should provide a function (or some other Modified: python/branches/bcannon-objcap/Modules/_lsprof.c ============================================================================== --- python/branches/bcannon-objcap/Modules/_lsprof.c (original) +++ python/branches/bcannon-objcap/Modules/_lsprof.c Thu Sep 6 22:13:37 2007 @@ -369,11 +369,20 @@ ProfilerEntry *profEntry; ProfilerContext *pContext; + /* In the case of entering a generator expression frame via a + * throw (gen_send_ex(.., 1)), we may already have an + * Exception set here. We must not mess around with this + * exception, and some of the code under here assumes that + * PyErr_* is its own to mess around with, so we have to + * save and restore any current exception. */ + PyObject *last_type, *last_value, *last_tb; + PyErr_Fetch(&last_type, &last_value, &last_tb); + profEntry = getEntry(pObj, key); if (profEntry == NULL) { profEntry = newProfilerEntry(pObj, key, userObj); if (profEntry == NULL) - return; + goto restorePyerr; } /* grab a ProfilerContext out of the free list */ pContext = pObj->freelistProfilerContext; @@ -386,10 +395,13 @@ malloc(sizeof(ProfilerContext)); if (pContext == NULL) { pObj->flags |= POF_NOMEMORY; - return; + goto restorePyerr; } } initContext(pObj, pContext, profEntry); + +restorePyerr: + PyErr_Restore(last_type, last_value, last_tb); } static void From python-checkins at python.org Thu Sep 6 22:26:04 2007 From: python-checkins at python.org (thomas.heller) Date: Thu, 6 Sep 2007 22:26:04 +0200 (CEST) Subject: [Python-checkins] r58020 - python/branches/release25-maint/Doc/lib/libctypes.tex Message-ID: <20070906202604.15F5D1E400A@bag.python.org> Author: thomas.heller Date: Thu Sep 6 22:26:03 2007 New Revision: 58020 Modified: python/branches/release25-maint/Doc/lib/libctypes.tex Log: Fix typo: c_float represents to C float type. Modified: python/branches/release25-maint/Doc/lib/libctypes.tex ============================================================================== --- python/branches/release25-maint/Doc/lib/libctypes.tex (original) +++ python/branches/release25-maint/Doc/lib/libctypes.tex Thu Sep 6 22:26:03 2007 @@ -2177,7 +2177,7 @@ \end{classdesc*} \begin{classdesc*}{c_float} -Represents the C double datatype. The constructor accepts an +Represents the C float datatype. The constructor accepts an optional float initializer. \end{classdesc*} From python-checkins at python.org Thu Sep 6 22:26:20 2007 From: python-checkins at python.org (thomas.heller) Date: Thu, 6 Sep 2007 22:26:20 +0200 (CEST) Subject: [Python-checkins] r58021 - python/trunk/Doc/library/ctypes.rst Message-ID: <20070906202620.AFC8C1E400A@bag.python.org> Author: thomas.heller Date: Thu Sep 6 22:26:20 2007 New Revision: 58021 Modified: python/trunk/Doc/library/ctypes.rst Log: Fix typo: c_float represents to C float type. Modified: python/trunk/Doc/library/ctypes.rst ============================================================================== --- python/trunk/Doc/library/ctypes.rst (original) +++ python/trunk/Doc/library/ctypes.rst Thu Sep 6 22:26:20 2007 @@ -2069,7 +2069,7 @@ .. class:: c_float - Represents the C double datatype. The constructor accepts an optional float + Represents the C float datatype. The constructor accepts an optional float initializer. From python-checkins at python.org Fri Sep 7 00:29:07 2007 From: python-checkins at python.org (skip.montanaro) Date: Fri, 7 Sep 2007 00:29:07 +0200 (CEST) Subject: [Python-checkins] r58022 - python/trunk/setup.py Message-ID: <20070906222907.465B41E400A@bag.python.org> Author: skip.montanaro Date: Fri Sep 7 00:29:06 2007 New Revision: 58022 Modified: python/trunk/setup.py Log: If this is correct for py3k branch and it's already in the release25-maint branch, seems like it ought to be on the trunk as well. Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Fri Sep 7 00:29:06 2007 @@ -648,9 +648,6 @@ # OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash exts.append( Extension('_sha256', ['sha256module.c']) ) exts.append( Extension('_sha512', ['sha512module.c']) ) - else: - # these aren't strictly missing since they are unneeded. - missing.extend(['_sha256', '_sha512']) # Modules that provide persistent dictionary-like semantics. You will # probably want to arrange for at least one of them to be available on From buildbot at python.org Fri Sep 7 00:34:17 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 22:34:17 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu 3.0 Message-ID: <20070906223417.D3F3C1E400A@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%203.0/builds/18 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: jeffrey.yasskin BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 01:00:00 2007 From: python-checkins at python.org (gregory.p.smith) Date: Fri, 7 Sep 2007 01:00:00 +0200 (CEST) Subject: [Python-checkins] r58023 - python/trunk/Lib/bsddb/test/test_1413192.py Message-ID: <20070906230000.1D07F1E400A@bag.python.org> Author: gregory.p.smith Date: Fri Sep 7 00:59:59 2007 New Revision: 58023 Modified: python/trunk/Lib/bsddb/test/test_1413192.py Log: Apply the fix from Issue1112 to make this test more robust and keep windows happy. Modified: python/trunk/Lib/bsddb/test/test_1413192.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_1413192.py (original) +++ python/trunk/Lib/bsddb/test/test_1413192.py Fri Sep 7 00:59:59 2007 @@ -1,7 +1,6 @@ - -# http://python.org/sf/1413192 +# http://bugs.python.org/issue1413192 # -# This test relies on the variable names, see the bug report for details. +# See the bug report for details. # The problem was that the env was deallocated prior to the txn. import shutil @@ -15,14 +14,28 @@ env_name = tempfile.mkdtemp() -env = db.DBEnv() -env.open(env_name, db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) -the_txn = env.txn_begin() +# Wrap test operation in a class so we can control destruction rather than +# waiting for the controlling Python executable to exit + +class Context: + + def __init__(self): + self.env = db.DBEnv() + self.env.open(env_name, + db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) + self.the_txn = self.env.txn_begin() + + self.map = db.DB(self.env) + self.map.open('xxx.db', "p", + db.DB_HASH, db.DB_CREATE, 0666, txn=self.the_txn) + del self.env + del self.the_txn + -map = db.DB(env) -map.open('xxx.db', "p", db.DB_HASH, db.DB_CREATE, 0666, txn=the_txn) +context = Context() +del context -# try not to leave a turd (won't help Windows since files are still open) +# try not to leave a turd try: shutil.rmtree(env_name) except EnvironmentError: From python-checkins at python.org Fri Sep 7 01:01:32 2007 From: python-checkins at python.org (gregory.p.smith) Date: Fri, 7 Sep 2007 01:01:32 +0200 (CEST) Subject: [Python-checkins] r58024 - python/branches/release25-maint/Lib/bsddb/test/test_1413192.py Message-ID: <20070906230132.54FCC1E400A@bag.python.org> Author: gregory.p.smith Date: Fri Sep 7 01:01:32 2007 New Revision: 58024 Modified: python/branches/release25-maint/Lib/bsddb/test/test_1413192.py Log: backport of r58023 to fix unit test suite issue1112 on windows Modified: python/branches/release25-maint/Lib/bsddb/test/test_1413192.py ============================================================================== --- python/branches/release25-maint/Lib/bsddb/test/test_1413192.py (original) +++ python/branches/release25-maint/Lib/bsddb/test/test_1413192.py Fri Sep 7 01:01:32 2007 @@ -1,7 +1,6 @@ - -# http://python.org/sf/1413192 +# http://bugs.python.org/issue1413192 # -# This test relies on the variable names, see the bug report for details. +# See the bug report for details. # The problem was that the env was deallocated prior to the txn. import shutil @@ -15,14 +14,28 @@ env_name = tempfile.mkdtemp() -env = db.DBEnv() -env.open(env_name, db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) -the_txn = env.txn_begin() +# Wrap test operation in a class so we can control destruction rather than +# waiting for the controlling Python executable to exit + +class Context: + + def __init__(self): + self.env = db.DBEnv() + self.env.open(env_name, + db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) + self.the_txn = self.env.txn_begin() + + self.map = db.DB(self.env) + self.map.open('xxx.db', "p", + db.DB_HASH, db.DB_CREATE, 0666, txn=self.the_txn) + del self.env + del self.the_txn + -map = db.DB(env) -map.open('xxx.db', "p", db.DB_HASH, db.DB_CREATE, 0666, txn=the_txn) +context = Context() +del context -# try not to leave a turd (won't help Windows since files are still open) +# try not to leave a turd try: shutil.rmtree(env_name) except EnvironmentError: From buildbot at python.org Fri Sep 7 01:46:20 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 23:46:20 +0000 Subject: [Python-checkins] buildbot warnings in x86 FreeBSD trunk Message-ID: <20070906234621.18D8D1E401B@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/16 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: gregory.p.smith Build had warnings: warnings test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: (35, 'Resource temporarily unavailable') Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: (35, 'Resource temporarily unavailable') 1 test failed: test_xmlrpc sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 01:47:17 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 06 Sep 2007 23:47:17 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP-3 2.5 Message-ID: <20070906234717.335BF1E400A@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%202.5/builds/60 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: gregory.p.smith,thomas.heller Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_socket_ssl sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 02:08:52 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 00:08:52 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD 2.5 Message-ID: <20070907000853.2696B1E400A@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%202.5/builds/7 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: gregory.p.smith,thomas.heller BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 02:19:06 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 00:19:06 +0000 Subject: [Python-checkins] buildbot warnings in alpha Tru64 5.1 2.5 Message-ID: <20070907001906.560181E401D@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/315 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: gregory.p.smith,thomas.heller Build had warnings: warnings test Excerpt from the test logfile: 2 tests failed: test_signal test_socket Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/net/taipan/scratch1/nnorwitz/python/2.5.norwitz-tru64/build/Lib/test/test_signal.py", line 143, in print "KeyboardInterrupt (the alarm() went off)" File "/net/taipan/scratch1/nnorwitz/python/2.5.norwitz-tru64/build/Lib/test/test_signal.py", line 49, in handlerB raise HandlerBCalled, args HandlerBCalled: (30, ) sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 03:28:01 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 01:28:01 +0000 Subject: [Python-checkins] buildbot warnings in hppa Ubuntu 2.5 Message-ID: <20070907012801.8E53A1E400A@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%202.5/builds/38 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: gregory.p.smith,thomas.heller Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 04:19:39 2007 From: python-checkins at python.org (brett.cannon) Date: Fri, 7 Sep 2007 04:19:39 +0200 (CEST) Subject: [Python-checkins] r58027 - peps/trunk/pep-0362.txt Message-ID: <20070907021939.93DEF1E400A@bag.python.org> Author: brett.cannon Date: Fri Sep 7 04:19:39 2007 New Revision: 58027 Modified: peps/trunk/pep-0362.txt Log: Update PEP 362. Modified: peps/trunk/pep-0362.txt ============================================================================== --- peps/trunk/pep-0362.txt (original) +++ peps/trunk/pep-0362.txt Fri Sep 7 04:19:39 2007 @@ -25,10 +25,16 @@ This PEP proposes an object representation for function signatures. This should help facilitate introspection on functions for various -usese (e.g., decorators). The introspection information contains all +uses (e.g., decorators). The introspection information contains all possible information about the parameters in a signature (including Python 3.0 features). +This object, though, is not meant to replace existing ways of +introspection on a function's signature. The current solutions are +there to make Python's execution work in an efficient manner. The +proposed object representation is only meant to help make application +code have an easier time to query a function on its signature. + Signature Object ================ @@ -68,7 +74,7 @@ called with the given arguments. The Signature object is stored in the ``__signature__`` attribute of -the function. When it is to be created is discussed in +a function. When it is to be created is discussed in `Open Issues`_. @@ -123,9 +129,10 @@ An implementation can be found in Python's sandbox [#impl]_. There is a function named ``signature()`` which returns the value stored on the ``__signature__`` attribute if it -exists, else it creates it bound to the Signature object for the -function. For methods this is stored directly on the im_func function -object since that is what decorators will work with. +exists, else it creates the Signature object for the +function and sets ``__signature__``. For methods this is stored +directly on the im_func function object since that is what decorators +work with. Open Issues @@ -169,6 +176,36 @@ ``tuple``). +Remove ``has_*`` attributes? +---------------------------- + +If an EAFP approach to the API is taken, both ``has_annotation`` and +``has_default`` are unneeded as the respective ``annotation`` and +``default_value`` attributes are simply not set. It's simply a +question of whether to have a EAFP or LBYL interface. + + +Have ``var_args`` and ``_var_kw_args`` default to ``None``? +------------------------------------------------------------ + +It has been suggested by Fred Drake that these two attributes have a +value of ``None`` instead of empty strings when they do not exist. + + +Deprecate ``inspect.getargspec()`` and ``.formatargspec()``? +------------------------------------------------------------- + +Since the Signature object replicates the use of ``getargspec()`` +from the ``inspect`` module it might make sense to deprecate it in +2.6. ``formatargspec()`` could also go if Signature objects gained a +__str__ representation. + +Issue with that is types such as ``int``, when used as annotations, +do not lend themselves for output (e.g., ``"type 'int'>"`` is the +string represenation for ``int``). The repr representation of types +would need to change in order to make this reasonable. + + References ========== From python-checkins at python.org Fri Sep 7 04:26:50 2007 From: python-checkins at python.org (brett.cannon) Date: Fri, 7 Sep 2007 04:26:50 +0200 (CEST) Subject: [Python-checkins] r58028 - sandbox/trunk/pep362/pep362.py sandbox/trunk/pep362/pep362_fodder.py sandbox/trunk/pep362/pep362_py3k_fodder.py sandbox/trunk/pep362/test_pep362.py Message-ID: <20070907022650.EA7FA1E400A@bag.python.org> Author: brett.cannon Date: Fri Sep 7 04:26:50 2007 New Revision: 58028 Modified: sandbox/trunk/pep362/pep362.py sandbox/trunk/pep362/pep362_fodder.py sandbox/trunk/pep362/pep362_py3k_fodder.py sandbox/trunk/pep362/test_pep362.py Log: Make compatible with Python 3.0a1. Modified: sandbox/trunk/pep362/pep362.py ============================================================================== --- sandbox/trunk/pep362/pep362.py (original) +++ sandbox/trunk/pep362/pep362.py Fri Sep 7 04:26:50 2007 @@ -1,4 +1,5 @@ -from inspect import getargspec +import inspect + class BindError(TypeError): """Represent a failure of inspect.Signature.bind() being able to to @@ -74,11 +75,17 @@ """Initialize from a function or method object.""" if hasattr(func, 'im_func'): func = func.im_func - func_code = func.func_code + func_code = func.__code__ self.name = func.__name__ - argspec = getargspec(func) # Needed only for tuple parameters. + try: + # Unneeded once 2.x support is removed; can easily get info the + # "hard" way. + argspec = inspect.getfullargspec(func)[:4] + except AttributeError: + # Needed only for tuple parameters. + argspec = inspect.getargspec(func) parameters = [] # Parameter information. @@ -90,8 +97,8 @@ positional = argspec[0] keyword_only = func_code.co_varnames[pos_count: pos_count+keyword_only_count] - if func.func_defaults: - pos_default_count = len(func.func_defaults) + if func.__defaults__: + pos_default_count = len(func.__defaults__) else: pos_default_count = 0 @@ -107,7 +114,7 @@ for offset, name in enumerate(positional[non_default_count:]): name = self._convert_name(name) has_annotation, annotation = self._find_annotation(func, name) - default_value = func.func_defaults[offset] + default_value = func.__defaults__[offset] param = Parameter(name, offset+non_default_count, has_default=True, default_value=default_value, has_annotation=has_annotation, @@ -117,9 +124,9 @@ for offset, name in enumerate(keyword_only): has_annotation, annotation = self._find_annotation(func, name) has_default, default_value = False, None - if func.func_kwdefaults and name in func.func_kwdefaults: + if func.__kwdefaults__ and name in func.__kwdefaults__: has_default = True - default_value = func.func_kwdefaults[name] + default_value = func.__kwdefaults__[name] param = Parameter(name, offset+pos_count, keyword_only=True, has_default=has_default, default_value=default_value, @@ -135,7 +142,7 @@ self.var_args) if has_annotation: self.var_annotations[self.var_args] = ( - func.func_annotations[self.var_args]) + func.__annotations__[self.var_args]) index += 1 else: self.var_args = '' @@ -145,7 +152,7 @@ self.var_args) if has_annotation: self.var_annotations[self.var_kw_args] = ( - func.func_annotations[self.var_kw_args]) + func.__annotations__[self.var_kw_args]) index += 1 else: self.var_kw_args = '' @@ -154,19 +161,19 @@ # Return annotation. self.has_annotation = False - if hasattr(func, 'func_annotations'): - if 'return' in func.func_annotations: + if hasattr(func, '__annotations__'): + if 'return' in func.__annotations__: self.has_annotation = True - self.annotation = func.func_annotations['return'] + self.annotation = func.__annotations__['return'] def _find_annotation(self, func, name): """Return True if an annotation exists for the named parameter along with its annotation, else return False and None.""" has_annotation, annotation = False, None - if hasattr(func, 'func_annotations'): - if name in func.func_annotations: + if hasattr(func, '__annotations__'): + if name in func.__annotations__: has_annotation = True - annotation = func.func_annotations[name] + annotation = func.__annotations__[name] return has_annotation, annotation def _convert_name(self, name): Modified: sandbox/trunk/pep362/pep362_fodder.py ============================================================================== --- sandbox/trunk/pep362/pep362_fodder.py (original) +++ sandbox/trunk/pep362/pep362_fodder.py Fri Sep 7 04:26:50 2007 @@ -12,12 +12,3 @@ def default_args(a=42): pass - -def tuple_args((a, (b,))): - return a, b - -def default_tuple_args((a, (b,))=(1, (2,))): - pass - -def all_args(a, (b, (c,)), d=0, (e, (f,))=(4, (5,)), *g, **h): - return a, b, c, d, e, f, g, h Modified: sandbox/trunk/pep362/pep362_py3k_fodder.py ============================================================================== --- sandbox/trunk/pep362/pep362_py3k_fodder.py (original) +++ sandbox/trunk/pep362/pep362_py3k_fodder.py Fri Sep 7 04:26:50 2007 @@ -19,6 +19,6 @@ def return_annotation() -> int: pass -def all_args(a:int, (b, (c,)), d=0, (e, (f,))=(0, (0,)), *args:int, +def all_args(a:int, d=0, *args:int, g:int, h:int=8, **kwargs:int) -> int: - return a, b, c, d, e, f, g, h, args, kwargs + return a, d, g, h, args, kwargs Modified: sandbox/trunk/pep362/test_pep362.py ============================================================================== --- sandbox/trunk/pep362/test_pep362.py (original) +++ sandbox/trunk/pep362/test_pep362.py Fri Sep 7 04:26:50 2007 @@ -3,15 +3,20 @@ import unittest from test import test_support import pep362_fodder -from sys import version_info -if version_info[0] >= 3: +try: + import pep362_py2_fodder +except SyntaxError: import pep362_py3k_fodder +from sys import version_info -def py3k_test(fxn): - if version_info[0] >= 3: - return fxn - else: - return lambda self: self + +def version_specific(major_number): + def inner(fxn): + if version_info[0] == major_number: + return fxn + else: + return lambda self: self + return inner class ParameterObjectTests(unittest.TestCase): @@ -111,9 +116,10 @@ self.failUnless(param.has_default) self.failUnlessEqual(42, param.default_value) + @version_specific(2) def test_parameter_tuple(self): # A function with a tuple as a parameter should work. - sig = pep362.Signature(pep362_fodder.tuple_args) + sig = pep362.Signature(pep362_py2_fodder.tuple_args) self.failUnlessEqual('tuple_args', sig.name) param = sig.parameters[0] self.failUnless(isinstance(param.name, tuple)) @@ -122,9 +128,10 @@ self.failUnless(not param.has_default) self.failUnless(not hasattr(param, 'default_value')) + @version_specific(2) def test_parameter_tuple_default(self): # A default argument for a tuple parameter needs to work. - sig = pep362.Signature(pep362_fodder.default_tuple_args) + sig = pep362.Signature(pep362_py2_fodder.default_tuple_args) self.failUnlessEqual('default_tuple_args', sig.name) param = sig.parameters[0] self.failUnlessEqual(('a', ('b',)), param.name) @@ -132,13 +139,7 @@ self.failUnless(param.has_default) self.failUnlessEqual((1, (2,)), param.default_value) - def test_getitem(self): - # Signature objects should have __getitem__ defined. - sig = pep362.Signature(pep362_fodder.all_args) - param = sig.parameters[2] - self.failUnlessEqual('d', param.name) - - @py3k_test + @version_specific(3) def test_keyword_only(self): # Is a function containing keyword-only parameters handled properly? sig = pep362.Signature(pep362_py3k_fodder.keyword_only) @@ -147,7 +148,7 @@ self.failUnless(param.keyword_only) self.failUnlessEqual(param.position, 0) - @py3k_test + @version_specific(3) def test_keyword_only_default(self): # Default arguments can work for keyword-only parameters. sig = pep362.Signature(pep362_py3k_fodder.keyword_only_default) @@ -158,7 +159,7 @@ self.failUnless(param.has_default) self.failUnlessEqual(param.default_value, 42) - @py3k_test + @version_specific(3) def test_annotations(self): # Make sure the proper annotation is found. sig = pep362.Signature(pep362_py3k_fodder.arg_annotation) @@ -167,7 +168,7 @@ self.failUnless(param.has_annotation) self.failUnlessEqual(param.annotation, int) - @py3k_test + @version_specific(3) def test_annotations_default(self): # Annotations with a default value should work. sig = pep362.Signature(pep362_py3k_fodder.arg_annotation_default) @@ -178,7 +179,7 @@ self.failUnless(param.has_default) self.failUnlessEqual(param.default_value, 42) - @py3k_test + @version_specific(3) def test_annotation_keyword_only(self): # Keyword-only parameters can have an annotation. sig = pep362.Signature(pep362_py3k_fodder.arg_annotation_keyword_only) @@ -188,14 +189,14 @@ self.failUnlessEqual(param.annotation, int) self.failUnless(param.keyword_only) - @py3k_test + @version_specific(3) def test_return_annotation(self): # The return value annotation. sig = pep362.Signature(pep362_py3k_fodder.return_annotation) self.failUnless(sig.has_annotation) self.failUnlessEqual(sig.annotation, int) - @py3k_test + @version_specific(3) def test_var_annotations(self): # Annotation on variable arguments (*args & **kwargs). sig = pep362.Signature(pep362_py3k_fodder.arg_annotation_var) @@ -266,24 +267,27 @@ self.failUnlessRaises(pep362.BindError, sig.bind, a=0, b=1) self.failUnlessRaises(pep362.BindError, sig.bind, b=1) + @version_specific(2) def test_tuple_parameter(self): - sig = pep362.Signature(pep362_fodder.tuple_args) + sig = pep362.Signature(pep362_py2_fodder.tuple_args) arg = (1, ((2,),)) binding = sig.bind(arg) self.failUnlessEqual({'a':1, 'b':(2,)}, binding) self.failUnlessRaises(pep362.BindError, sig.bind, (1,2,3)) self.failUnlessRaises(pep362.BindError, sig.bind, (1, 2)) + @version_specific(2) def test_default_tuple_parameter(self): - sig = pep362.Signature(pep362_fodder.default_tuple_args) + sig = pep362.Signature(pep362_py2_fodder.default_tuple_args) binding = sig.bind() self.failUnlessEqual({'a':1, 'b':2}, binding) arg = (0, (1,)) binding = sig.bind(arg) self.failUnlessEqual({'a':0, 'b':1}, binding) - def test_all_args(self): - sig = pep362.Signature(pep362_fodder.all_args) + @version_specific(2) + def test_py2_all_args(self): + sig = pep362.Signature(pep362_py2_fodder.all_args) # a, (b, (c,)), d=0, (e, (f,))=(4, (5,)), *g, **h # name, position, has_default, default value expect = (('a', 0, False, None), @@ -312,7 +316,7 @@ 'h':{'i':7}} self.failUnlessEqual(expected, binding) - @py3k_test + @version_specific(3) def test_keyword_only(self): sig = pep362.Signature(pep362_py3k_fodder.keyword_only) binding = sig.bind(a=42) @@ -320,7 +324,7 @@ self.failUnlessRaises(pep362.BindError, sig.bind) self.failUnlessRaises(pep362.BindError, sig.bind, 42) - @py3k_test + @version_specific(3) def test_keyword_only_default(self): sig = pep362.Signature(pep362_py3k_fodder.keyword_only_default) binding = sig.bind() @@ -329,17 +333,15 @@ self.failUnlessEqual(binding, {'a':1}) self.failUnlessRaises(pep362.BindError, sig.bind, 1) - @py3k_test + @version_specific(3) def test_all_py3k_args(self): # a, (b, (c,)), d=0, (e, (f,))=(0, (0,)), *args, g, h=8, **kwargs sig = pep362.Signature(pep362_py3k_fodder.all_args) # name, position, kw only, has_default, default, has anno, anno expected = (('a', 0, False, False, None, True, int), - (('b', ('c',)), 1, False, False, None, False, None), - ('d', 2, False, True, 0, False, None), - (('e', ('f',)), 3, False, True, (0, (0,)), False, None), - ('g', 4, True, False, None, True, int), - ('h', 5, True, True, 8, True, int)) + ('d', 1, False, True, 0, False, None), + ('g', 2, True, False, None, True, int), + ('h', 3, True, True, 8, True, int)) self.failUnlessEqual(len(sig.parameters), len(expected), "len(%r) != len(%r)" % ([param.name for param in sig.parameters], @@ -370,9 +372,8 @@ self.failUnlessEqual(sig.var_kw_args, 'kwargs') self.failUnless(sig.var_kw_args in sig.var_annotations) self.failUnlessEqual(sig.var_annotations[sig.var_kw_args], int) - binding = sig.bind(0, (1, (2,)), 3, (4, (5,)), 6, g=7, i=9) - expected = {'a':0, 'b':1, 'c':2, 'd':3, 'e':4, 'f':5, 'g':7, 'h':8, - 'args':(6,), 'kwargs':{'i':9}} + binding = sig.bind(0, 3, 6, g=7, i=9) + expected = {'a':0, 'd':3, 'g':7, 'h':8, 'args':(6,), 'kwargs':{'i':9}} self.failUnlessEqual(binding, expected) def test_too_many_arguments(self): From python-checkins at python.org Fri Sep 7 04:35:14 2007 From: python-checkins at python.org (brett.cannon) Date: Fri, 7 Sep 2007 04:35:14 +0200 (CEST) Subject: [Python-checkins] r58029 - peps/trunk/pep-0362.txt Message-ID: <20070907023514.E6A8E1E4011@bag.python.org> Author: brett.cannon Date: Fri Sep 7 04:35:14 2007 New Revision: 58029 Modified: peps/trunk/pep-0362.txt Log: Update the PEP. Modified: peps/trunk/pep-0362.txt ============================================================================== --- peps/trunk/pep-0362.txt (original) +++ peps/trunk/pep-0362.txt Fri Sep 7 04:35:14 2007 @@ -9,7 +9,7 @@ Content-Type: text/x-rst Created: 21-Aug-2006 Python-Version: 2.6 -Post-History: +Post-History: 05-Sep-2007 Abstract From buildbot at python.org Fri Sep 7 04:36:32 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 02:36:32 +0000 Subject: [Python-checkins] buildbot warnings in PPC64 Debian trunk Message-ID: <20070907023632.D775A1E400F@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/182 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: gregory.p.smith Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_xmlrpc ====================================================================== ERROR: test_fail_with_info (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_xmlrpc.py", line 517, in test_fail_with_info p.pow(6,8) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1157, in __call__ return self.__send(self.__name, args) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1447, in __request verbose=self.__verbose File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1195, in request errcode, errmsg, headers = h.getreply() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 1005, in getreply response = self._conn.getresponse() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 931, in getresponse response.begin() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 415, in begin self.msg = HTTPMessage(self.fp, 0) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/mimetools.py", line 16, in __init__ rfc822.Message.__init__(self, fp, seekable) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/rfc822.py", line 104, in __init__ self.readheaders() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 271, in readheaders line = self.fp.readline() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/socket.py", line 351, in readline data = recv(1) error: (104, 'Connection reset by peer') make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 04:42:46 2007 From: python-checkins at python.org (fred.drake) Date: Fri, 7 Sep 2007 04:42:46 +0200 (CEST) Subject: [Python-checkins] r58030 - peps/trunk/pep-0362.txt Message-ID: <20070907024246.0D42F1E4018@bag.python.org> Author: fred.drake Date: Fri Sep 7 04:42:45 2007 New Revision: 58030 Modified: peps/trunk/pep-0362.txt Log: fix typo Modified: peps/trunk/pep-0362.txt ============================================================================== --- peps/trunk/pep-0362.txt (original) +++ peps/trunk/pep-0362.txt Fri Sep 7 04:42:45 2007 @@ -201,7 +201,7 @@ __str__ representation. Issue with that is types such as ``int``, when used as annotations, -do not lend themselves for output (e.g., ``"type 'int'>"`` is the +do not lend themselves for output (e.g., ``""`` is the string represenation for ``int``). The repr representation of types would need to change in order to make this reasonable. From buildbot at python.org Fri Sep 7 05:04:44 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 03:04:44 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP 3.0 Message-ID: <20070907030444.8B2C01E401B@bag.python.org> The Buildbot has detected a new failure of x86 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%203.0/builds/112 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: brett.cannon Build had warnings: warnings test Excerpt from the test logfile: 12 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 05:17:50 2007 From: python-checkins at python.org (brett.cannon) Date: Fri, 7 Sep 2007 05:17:50 +0200 (CEST) Subject: [Python-checkins] r58031 - python/trunk/Lib/test/test_uuid.py Message-ID: <20070907031750.9D5861E400A@bag.python.org> Author: brett.cannon Date: Fri Sep 7 05:17:50 2007 New Revision: 58031 Modified: python/trunk/Lib/test/test_uuid.py Log: Make uuid1 and uuid4 tests conditional on whether ctypes can be imported; implementation of either function depends on ctypes but uuid as a whole does not. Modified: python/trunk/Lib/test/test_uuid.py ============================================================================== --- python/trunk/Lib/test/test_uuid.py (original) +++ python/trunk/Lib/test/test_uuid.py Fri Sep 7 05:17:50 2007 @@ -367,6 +367,12 @@ self.assertEqual(node1, node2) def test_uuid1(self): + # uuid1 requires ctypes. + try: + import ctypes + except ImportError: + return + equal = self.assertEqual # Make sure uuid1() generates UUIDs that are actually version 1. @@ -420,6 +426,12 @@ equal(str(u), v) def test_uuid4(self): + # uuid4 requires ctypes. + try: + import ctypes + except ImportError: + return + equal = self.assertEqual # Make sure uuid4() generates UUIDs that are actually version 4. From python-checkins at python.org Fri Sep 7 06:18:30 2007 From: python-checkins at python.org (brett.cannon) Date: Fri, 7 Sep 2007 06:18:30 +0200 (CEST) Subject: [Python-checkins] r58032 - in python/trunk: Include/pyerrors.h Lib/test/crashers/infinite_rec_1.py Lib/test/crashers/infinite_rec_2.py Lib/test/crashers/infinite_rec_4.py Lib/test/crashers/infinite_rec_5.py Lib/test/test_descr.py Misc/NEWS Objects/abstract.c Objects/exceptions.c Objects/typeobject.c Python/errors.c Message-ID: <20070907041830.D16091E400A@bag.python.org> Author: brett.cannon Date: Fri Sep 7 06:18:30 2007 New Revision: 58032 Removed: python/trunk/Lib/test/crashers/infinite_rec_1.py python/trunk/Lib/test/crashers/infinite_rec_2.py python/trunk/Lib/test/crashers/infinite_rec_4.py python/trunk/Lib/test/crashers/infinite_rec_5.py Modified: python/trunk/Include/pyerrors.h python/trunk/Lib/test/test_descr.py python/trunk/Misc/NEWS python/trunk/Objects/abstract.c python/trunk/Objects/exceptions.c python/trunk/Objects/typeobject.c python/trunk/Python/errors.c Log: Fix a crasher where Python code managed to infinitely recurse in C code without ever going back out to Python code in PyObject_Call(). Required introducing a static RuntimeError instance so that normalizing an exception there is no reliance on a recursive call that would put the exception system over the recursion check itself. Modified: python/trunk/Include/pyerrors.h ============================================================================== --- python/trunk/Include/pyerrors.h (original) +++ python/trunk/Include/pyerrors.h Fri Sep 7 06:18:30 2007 @@ -161,6 +161,7 @@ #endif PyAPI_DATA(PyObject *) PyExc_MemoryErrorInst; +PyAPI_DATA(PyObject *) PyExc_RecursionErrorInst; /* Predefined warning categories */ PyAPI_DATA(PyObject *) PyExc_Warning; Deleted: /python/trunk/Lib/test/crashers/infinite_rec_1.py ============================================================================== --- /python/trunk/Lib/test/crashers/infinite_rec_1.py Fri Sep 7 06:18:30 2007 +++ (empty file) @@ -1,11 +0,0 @@ - -# http://python.org/sf/1202533 - -import new, operator - -class A: - pass -A.__mul__ = new.instancemethod(operator.mul, None, A) - -if __name__ == '__main__': - A()*2 # segfault: infinite recursion in C Deleted: /python/trunk/Lib/test/crashers/infinite_rec_2.py ============================================================================== --- /python/trunk/Lib/test/crashers/infinite_rec_2.py Fri Sep 7 06:18:30 2007 +++ (empty file) @@ -1,10 +0,0 @@ - -# http://python.org/sf/1202533 - -class A(str): - __get__ = getattr - -if __name__ == '__main__': - a = A('a') - A.a = a - a.a # segfault: infinite recursion in C Deleted: /python/trunk/Lib/test/crashers/infinite_rec_4.py ============================================================================== --- /python/trunk/Lib/test/crashers/infinite_rec_4.py Fri Sep 7 06:18:30 2007 +++ (empty file) @@ -1,7 +0,0 @@ - -# http://python.org/sf/1202533 - -if __name__ == '__main__': - lst = [apply] - lst.append(lst) - apply(*lst) # segfault: infinite recursion in C Deleted: /python/trunk/Lib/test/crashers/infinite_rec_5.py ============================================================================== --- /python/trunk/Lib/test/crashers/infinite_rec_5.py Fri Sep 7 06:18:30 2007 +++ (empty file) @@ -1,10 +0,0 @@ - -# http://python.org/sf/1267884 - -import types - -class C: - __str__ = types.InstanceType.__str__ - -if __name__ == '__main__': - str(C()) # segfault: infinite recursion in C Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Fri Sep 7 06:18:30 2007 @@ -4,6 +4,7 @@ from copy import deepcopy import warnings import types +import new warnings.filterwarnings("ignore", r'complex divmod\(\), // and % are deprecated$', @@ -1981,6 +1982,10 @@ unsafecmp(1, 1L) unsafecmp(1L, 1) +def recursions(): + if verbose: + print "Testing recursion checks ..." + class Letter(str): def __new__(cls, letter): if letter == 'EPS': @@ -1990,7 +1995,6 @@ if not self: return 'EPS' return self - # sys.stdout needs to be the original to trigger the recursion bug import sys test_stdout = sys.stdout @@ -2004,6 +2008,17 @@ raise TestFailed, "expected a RuntimeError for print recursion" sys.stdout = test_stdout + # Bug #1202533. + class A(object): + pass + A.__mul__ = new.instancemethod(lambda self, x: self * x, None, A) + try: + A()*2 + except RuntimeError: + pass + else: + raise TestFailed("expected a RuntimeError") + def weakrefs(): if verbose: print "Testing weak references..." import weakref @@ -4395,6 +4410,7 @@ overloading() methods() specials() + recursions() weakrefs() properties() supers() Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Sep 7 06:18:30 2007 @@ -12,6 +12,12 @@ Core and builtins ----------------- +- Issue #1202533: Fix infinite recursion calls triggered by calls to + PyObject_Call() never calling back out to Python code to trigger recursion + depth updates/checks. Required the creation of a static RuntimeError + instance in case normalizing an exception put the recursion check value past + its limit. Fixes crashers infinite_rec_(1|2|4|5).py. + - Patch #1031213: Decode source line in SyntaxErrors back to its original source encoding. Modified: python/trunk/Objects/abstract.c ============================================================================== --- python/trunk/Objects/abstract.c (original) +++ python/trunk/Objects/abstract.c Fri Sep 7 06:18:30 2007 @@ -1857,7 +1857,11 @@ ternaryfunc call; if ((call = func->ob_type->tp_call) != NULL) { - PyObject *result = (*call)(func, arg, kw); + PyObject *result; + if (Py_EnterRecursiveCall(" while calling a Python object")) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); if (result == NULL && !PyErr_Occurred()) PyErr_SetString( PyExc_SystemError, Modified: python/trunk/Objects/exceptions.c ============================================================================== --- python/trunk/Objects/exceptions.c (original) +++ python/trunk/Objects/exceptions.c Fri Sep 7 06:18:30 2007 @@ -1912,6 +1912,12 @@ */ PyObject *PyExc_MemoryErrorInst=NULL; +/* Pre-computed RuntimeError instance for when recursion depth is reached. + Meant to be used when normalizing the exception for exceeding the recursion + depth will cause its own infinite recursion. +*/ +PyObject *PyExc_RecursionErrorInst = NULL; + /* module global functions */ static PyMethodDef functions[] = { /* Sentinel */ @@ -2079,6 +2085,29 @@ if (!PyExc_MemoryErrorInst) Py_FatalError("Cannot pre-allocate MemoryError instance\n"); + PyExc_RecursionErrorInst = BaseException_new(&_PyExc_RuntimeError, NULL, NULL); + if (!PyExc_RecursionErrorInst) + Py_FatalError("Cannot pre-allocate RuntimeError instance for " + "recursion errors"); + else { + PyBaseExceptionObject *err_inst = + (PyBaseExceptionObject *)PyExc_RecursionErrorInst; + PyObject *args_tuple; + PyObject *exc_message; + exc_message = PyString_FromString("maximum recursion depth exceeded"); + if (!exc_message) + Py_FatalError("cannot allocate argument for RuntimeError " + "pre-allocation"); + args_tuple = PyTuple_Pack(1, exc_message); + if (!args_tuple) + Py_FatalError("cannot allocate tuple for RuntimeError " + "pre-allocation"); + Py_DECREF(exc_message); + if (BaseException_init(err_inst, args_tuple, NULL)) + Py_FatalError("init of pre-allocated RuntimeError failed"); + Py_DECREF(args_tuple); + } + Py_DECREF(bltinmod); #if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__) Modified: python/trunk/Objects/typeobject.c ============================================================================== --- python/trunk/Objects/typeobject.c (original) +++ python/trunk/Objects/typeobject.c Fri Sep 7 06:18:30 2007 @@ -4854,16 +4854,7 @@ if (meth == NULL) return NULL; - /* PyObject_Call() will end up calling slot_tp_call() again if - the object returned for __call__ has __call__ itself defined - upon it. This can be an infinite recursion if you set - __call__ in a class to an instance of it. */ - if (Py_EnterRecursiveCall(" in __call__")) { - Py_DECREF(meth); - return NULL; - } res = PyObject_Call(meth, args, kwds); - Py_LeaveRecursiveCall(); Py_DECREF(meth); return res; Modified: python/trunk/Python/errors.c ============================================================================== --- python/trunk/Python/errors.c (original) +++ python/trunk/Python/errors.c Fri Sep 7 06:18:30 2007 @@ -132,6 +132,7 @@ PyObject *value = *val; PyObject *inclass = NULL; PyObject *initial_tb = NULL; + PyThreadState *tstate = NULL; if (type == NULL) { /* There was no exception, so nothing to do. */ @@ -207,7 +208,14 @@ Py_DECREF(initial_tb); } /* normalize recursively */ + tstate = PyThreadState_GET(); + if (++tstate->recursion_depth > Py_GetRecursionLimit()) { + --tstate->recursion_depth; + PyErr_SetObject(PyExc_RuntimeError, PyExc_RecursionErrorInst); + return; + } PyErr_NormalizeException(exc, val, tb); + --tstate->recursion_depth; } From buildbot at python.org Fri Sep 7 06:27:22 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 04:27:22 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20070907042722.9C63D1E400A@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/182 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 06:32:13 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 04:32:13 +0000 Subject: [Python-checkins] buildbot warnings in x86 mvlgcc trunk Message-ID: <20070907043213.E77DC1E400A@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/786 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault (core dumped) sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 06:42:53 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 04:42:53 +0000 Subject: [Python-checkins] buildbot warnings in x86 gentoo trunk Message-ID: <20070907044253.5EEA11E400A@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/2447 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_timeout make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 07:01:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 05:01:56 +0000 Subject: [Python-checkins] buildbot warnings in PPC64 Debian trunk Message-ID: <20070907050156.57CE21E400E@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/184 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon Build had warnings: warnings test Excerpt from the test logfile: 2 tests failed: test_urllib2net test_urllibnet make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 07:03:15 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 05:03:15 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP trunk Message-ID: <20070907050316.023411E400A@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/641 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_urllib2net sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 07:06:01 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 05:06:01 +0000 Subject: [Python-checkins] buildbot warnings in hppa Ubuntu trunk Message-ID: <20070907050601.CACBC1E400A@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/127 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 08:01:11 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 06:01:11 +0000 Subject: [Python-checkins] buildbot warnings in x86 FreeBSD 3.0 Message-ID: <20070907060111.6C0131E400A@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/21 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: kurt.kaiser Build had warnings: warnings test Excerpt from the test logfile: 3 tests failed: test_asynchat test_email test_xmlrpc ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 522, in __init__ self.handle() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 330, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 313, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 366, in nreadahead readahead = self.peek(1, unsafe=True) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 758, in peek current = self.raw.read(to_read) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: (35, 'Resource temporarily unavailable') ====================================================================== ERROR: test_fail_with_info (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 475, in test_fail_with_info p.pow(6,8) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1091, in __call__ return self.__send(self.__name, args) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1349, in __request verbose=self.__verbose File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/xmlrpclib.py", line 1121, in request resp = http_conn.getresponse() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 954, in getresponse response.begin() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 395, in begin version, status, reason = self._read_status() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/httplib.py", line 357, in _read_status raise BadStatusLine(line) httplib.BadStatusLine ====================================================================== FAIL: test_introspection1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 354, in test_introspection1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection2 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 365, in test_introspection2 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection3 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 378, in test_introspection3 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_multicall (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 395, in test_multicall self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_simple1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 341, in test_simple1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_basic (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 447, in test_basic self.fail("%s\n%s" % (e, e.headers)) AssertionError: sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 08:32:17 2007 From: python-checkins at python.org (thomas.heller) Date: Fri, 7 Sep 2007 08:32:17 +0200 (CEST) Subject: [Python-checkins] r58034 - in python/trunk: Doc/library/ctypes.rst Lib/ctypes/__init__.py Lib/ctypes/test/test_arrays.py Lib/ctypes/test/test_callbacks.py Lib/ctypes/test/test_cfuncs.py Lib/ctypes/test/test_functions.py Lib/ctypes/test/test_repr.py Misc/NEWS Modules/_ctypes/_ctypes.c Modules/_ctypes/_ctypes_test.c Modules/_ctypes/callproc.c Modules/_ctypes/cfield.c Modules/_ctypes/ctypes.h Message-ID: <20070907063217.B143B1E401D@bag.python.org> Author: thomas.heller Date: Fri Sep 7 08:32:17 2007 New Revision: 58034 Modified: python/trunk/Doc/library/ctypes.rst python/trunk/Lib/ctypes/__init__.py python/trunk/Lib/ctypes/test/test_arrays.py python/trunk/Lib/ctypes/test/test_callbacks.py python/trunk/Lib/ctypes/test/test_cfuncs.py python/trunk/Lib/ctypes/test/test_functions.py python/trunk/Lib/ctypes/test/test_repr.py python/trunk/Misc/NEWS python/trunk/Modules/_ctypes/_ctypes.c python/trunk/Modules/_ctypes/_ctypes_test.c python/trunk/Modules/_ctypes/callproc.c python/trunk/Modules/_ctypes/cfield.c python/trunk/Modules/_ctypes/ctypes.h Log: Add a 'c_longdouble' type to the ctypes module. Modified: python/trunk/Doc/library/ctypes.rst ============================================================================== --- python/trunk/Doc/library/ctypes.rst (original) +++ python/trunk/Doc/library/ctypes.rst Fri Sep 7 08:32:17 2007 @@ -249,6 +249,8 @@ +----------------------+--------------------------------+----------------------------+ | :class:`c_double` | ``double`` | float | +----------------------+--------------------------------+----------------------------+ + | :class:`c_longdouble`| ``long double`` | float | + +----------------------+--------------------------------+----------------------------+ | :class:`c_char_p` | ``char *`` (NUL terminated) | string or ``None`` | +----------------------+--------------------------------+----------------------------+ | :class:`c_wchar_p` | ``wchar_t *`` (NUL terminated) | unicode or ``None`` | @@ -2067,6 +2069,13 @@ initializer. +.. class:: c_longdouble + + Represents the C long double datatype. The constructor accepts an + optional float initializer. On platforms where ``sizeof(long + double) == sizeof(double)`` it is an alias to :class:`c_double`. + + .. class:: c_float Represents the C float datatype. The constructor accepts an optional float Modified: python/trunk/Lib/ctypes/__init__.py ============================================================================== --- python/trunk/Lib/ctypes/__init__.py (original) +++ python/trunk/Lib/ctypes/__init__.py Fri Sep 7 08:32:17 2007 @@ -191,6 +191,11 @@ _type_ = "d" _check_size(c_double) +class c_longdouble(_SimpleCData): + _type_ = "D" +if sizeof(c_longdouble) == sizeof(c_double): + c_longdouble = c_double + if _calcsize("l") == _calcsize("q"): # if long and long long have the same size, make c_longlong an alias for c_long c_longlong = c_long Modified: python/trunk/Lib/ctypes/test/test_arrays.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_arrays.py (original) +++ python/trunk/Lib/ctypes/test/test_arrays.py Fri Sep 7 08:32:17 2007 @@ -4,7 +4,7 @@ formats = "bBhHiIlLqQfd" formats = c_byte, c_ubyte, c_short, c_ushort, c_int, c_uint, \ - c_long, c_ulonglong, c_float, c_double + c_long, c_ulonglong, c_float, c_double, c_longdouble class ArrayTestCase(unittest.TestCase): def test_simple(self): Modified: python/trunk/Lib/ctypes/test/test_callbacks.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_callbacks.py (original) +++ python/trunk/Lib/ctypes/test/test_callbacks.py Fri Sep 7 08:32:17 2007 @@ -77,6 +77,10 @@ self.check_type(c_double, 3.14) self.check_type(c_double, -3.14) + def test_longdouble(self): + self.check_type(c_longdouble, 3.14) + self.check_type(c_longdouble, -3.14) + def test_char(self): self.check_type(c_char, "x") self.check_type(c_char, "a") Modified: python/trunk/Lib/ctypes/test/test_cfuncs.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_cfuncs.py (original) +++ python/trunk/Lib/ctypes/test/test_cfuncs.py Fri Sep 7 08:32:17 2007 @@ -158,6 +158,18 @@ self.failUnlessEqual(self._dll.tf_bd(0, 42.), 14.) self.failUnlessEqual(self.S(), 42) + def test_longdouble(self): + self._dll.tf_D.restype = c_longdouble + self._dll.tf_D.argtypes = (c_longdouble,) + self.failUnlessEqual(self._dll.tf_D(42.), 14.) + self.failUnlessEqual(self.S(), 42) + + def test_longdouble_plus(self): + self._dll.tf_bD.restype = c_longdouble + self._dll.tf_bD.argtypes = (c_byte, c_longdouble) + self.failUnlessEqual(self._dll.tf_bD(0, 42.), 14.) + self.failUnlessEqual(self.S(), 42) + def test_callwithresult(self): def process_result(result): return result * 2 Modified: python/trunk/Lib/ctypes/test/test_functions.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_functions.py (original) +++ python/trunk/Lib/ctypes/test/test_functions.py Fri Sep 7 08:32:17 2007 @@ -143,6 +143,18 @@ self.failUnlessEqual(result, -21) self.failUnlessEqual(type(result), float) + def test_longdoubleresult(self): + f = dll._testfunc_D_bhilfD + f.argtypes = [c_byte, c_short, c_int, c_long, c_float, c_longdouble] + f.restype = c_longdouble + result = f(1, 2, 3, 4, 5.0, 6.0) + self.failUnlessEqual(result, 21) + self.failUnlessEqual(type(result), float) + + result = f(-1, -2, -3, -4, -5.0, -6.0) + self.failUnlessEqual(result, -21) + self.failUnlessEqual(type(result), float) + def test_longlongresult(self): try: c_longlong Modified: python/trunk/Lib/ctypes/test/test_repr.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_repr.py (original) +++ python/trunk/Lib/ctypes/test/test_repr.py Fri Sep 7 08:32:17 2007 @@ -4,7 +4,7 @@ subclasses = [] for base in [c_byte, c_short, c_int, c_long, c_longlong, c_ubyte, c_ushort, c_uint, c_ulong, c_ulonglong, - c_float, c_double, c_bool]: + c_float, c_double, c_longdouble, c_bool]: class X(base): pass subclasses.append(X) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Sep 7 08:32:17 2007 @@ -249,6 +249,8 @@ Library ------- +- A 'c_longdouble' type was added to the ctypes module. + - Bug #1709599: Run test_1565150 only if the file system is NTFS. - When encountering a password-protected robots.txt file the RobotFileParser Modified: python/trunk/Modules/_ctypes/_ctypes.c ============================================================================== --- python/trunk/Modules/_ctypes/_ctypes.c (original) +++ python/trunk/Modules/_ctypes/_ctypes.c Fri Sep 7 08:32:17 2007 @@ -1101,7 +1101,7 @@ */ -static char *SIMPLE_TYPE_CHARS = "cbBhHiIlLdfuzZqQPXOvt"; +static char *SIMPLE_TYPE_CHARS = "cbBhHiIlLdfuzZqQPXOvtD"; static PyObject * c_wchar_p_from_param(PyObject *type, PyObject *value) Modified: python/trunk/Modules/_ctypes/_ctypes_test.c ============================================================================== --- python/trunk/Modules/_ctypes/_ctypes_test.c (original) +++ python/trunk/Modules/_ctypes/_ctypes_test.c Fri Sep 7 08:32:17 2007 @@ -25,6 +25,29 @@ /* some functions handy for testing */ +EXPORT(long double)testfunc_Ddd(double a, double b) +{ + long double result = (long double)(a * b); + printf("testfunc_Ddd(%p, %p)\n", &a, &b); + printf("testfunc_Ddd(%g, %g)\n", a, b); + return result; +} + +EXPORT(long double)testfunc_DDD(long double a, long double b) +{ + long double result = a * b; + printf("testfunc_DDD(%p, %p)\n", &a, &b); + printf("testfunc_DDD(%Lg, %Lg)\n", a, b); + return result; +} + +EXPORT(int)testfunc_iii(int a, int b) +{ + int result = a * b; + printf("testfunc_iii(%p, %p)\n", &a, &b); + return result; +} + EXPORT(int)myprintf(char *fmt, ...) { int result; @@ -90,6 +113,14 @@ return (double)(b + h + i + l + f + d); } +EXPORT(long double) _testfunc_D_bhilfD(signed char b, short h, int i, long l, float f, long double d) +{ +/* printf("_testfunc_d_bhilfd got %d %d %d %ld %f %f\n", + b, h, i, l, f, d); +*/ + return (long double)(b + h + i + l + f + d); +} + EXPORT(char *) _testfunc_p_p(void *s) { return (char *)s; @@ -404,6 +435,7 @@ EXPORT(unsigned PY_LONG_LONG) tf_Q(unsigned PY_LONG_LONG c) { U; return c/3; } EXPORT(float) tf_f(float c) { S; return c/3; } EXPORT(double) tf_d(double c) { S; return c/3; } +EXPORT(long double) tf_D(long double c) { S; return c/3; } #ifdef MS_WIN32 EXPORT(signed char) __stdcall s_tf_b(signed char c) { S; return c/3; } @@ -418,6 +450,7 @@ EXPORT(unsigned PY_LONG_LONG) __stdcall s_tf_Q(unsigned PY_LONG_LONG c) { U; return c/3; } EXPORT(float) __stdcall s_tf_f(float c) { S; return c/3; } EXPORT(double) __stdcall s_tf_d(double c) { S; return c/3; } +EXPORT(long double) __stdcall s_tf_D(long double c) { S; return c/3; } #endif /*******/ @@ -433,6 +466,7 @@ EXPORT(unsigned PY_LONG_LONG) tf_bQ(signed char x, unsigned PY_LONG_LONG c) { U; return c/3; } EXPORT(float) tf_bf(signed char x, float c) { S; return c/3; } EXPORT(double) tf_bd(signed char x, double c) { S; return c/3; } +EXPORT(long double) tf_bD(signed char x, long double c) { S; return c/3; } EXPORT(void) tv_i(int c) { S; return; } #ifdef MS_WIN32 @@ -448,6 +482,7 @@ EXPORT(unsigned PY_LONG_LONG) __stdcall s_tf_bQ(signed char x, unsigned PY_LONG_LONG c) { U; return c/3; } EXPORT(float) __stdcall s_tf_bf(signed char x, float c) { S; return c/3; } EXPORT(double) __stdcall s_tf_bd(signed char x, double c) { S; return c/3; } +EXPORT(long double) __stdcall s_tf_bD(signed char x, long double c) { S; return c/3; } EXPORT(void) __stdcall s_tv_i(int c) { S; return; } #endif Modified: python/trunk/Modules/_ctypes/callproc.c ============================================================================== --- python/trunk/Modules/_ctypes/callproc.c (original) +++ python/trunk/Modules/_ctypes/callproc.c Fri Sep 7 08:32:17 2007 @@ -449,6 +449,7 @@ #ifdef HAVE_LONG_LONG PY_LONG_LONG q; #endif + long double D; double d; float f; void *p; Modified: python/trunk/Modules/_ctypes/cfield.c ============================================================================== --- python/trunk/Modules/_ctypes/cfield.c (original) +++ python/trunk/Modules/_ctypes/cfield.c Fri Sep 7 08:32:17 2007 @@ -5,6 +5,7 @@ #include "Python.h" #include +#include #ifdef MS_WIN32 #include #endif @@ -989,6 +990,29 @@ */ +static PyObject * +D_set(void *ptr, PyObject *value, Py_ssize_t size) +{ + long double x; + + x = PyFloat_AsDouble(value); + if (x == -1 && PyErr_Occurred()) { + PyErr_Format(PyExc_TypeError, + " float expected instead of %s instance", + value->ob_type->tp_name); + return NULL; + } + memcpy(ptr, &x, sizeof(long double)); + _RET(value); +} + +static PyObject * +D_get(void *ptr, Py_ssize_t size) +{ + long double val; + memcpy(&val, ptr, sizeof(long double)); + return PyFloat_FromDouble(val); +} static PyObject * d_set(void *ptr, PyObject *value, Py_ssize_t size) @@ -1584,6 +1608,7 @@ { 'B', B_set, B_get, &ffi_type_uchar}, { 'c', c_set, c_get, &ffi_type_schar}, { 'd', d_set, d_get, &ffi_type_double, d_set_sw, d_get_sw}, + { 'D', D_set, D_get, &ffi_type_longdouble}, { 'f', f_set, f_get, &ffi_type_float, f_set_sw, f_get_sw}, { 'h', h_set, h_get, &ffi_type_sshort, h_set_sw, h_get_sw}, { 'H', H_set, H_get, &ffi_type_ushort, H_set_sw, H_get_sw}, @@ -1666,6 +1691,7 @@ typedef struct { char c; long x; } s_long; typedef struct { char c; float x; } s_float; typedef struct { char c; double x; } s_double; +typedef struct { char c; long double x; } s_long_double; typedef struct { char c; char *x; } s_char_p; typedef struct { char c; void *x; } s_void_p; @@ -1677,6 +1703,8 @@ */ #define FLOAT_ALIGN (sizeof(s_float) - sizeof(float)) #define DOUBLE_ALIGN (sizeof(s_double) - sizeof(double)) +#define LONGDOUBLE_ALIGN (sizeof(s_long_double) - sizeof(long double)) + /* #define CHAR_P_ALIGN (sizeof(s_char_p) - sizeof(char*)) */ #define VOID_P_ALIGN (sizeof(s_void_p) - sizeof(void*)) @@ -1722,6 +1750,8 @@ ffi_type ffi_type_float = { sizeof(float), FLOAT_ALIGN, FFI_TYPE_FLOAT }; ffi_type ffi_type_double = { sizeof(double), DOUBLE_ALIGN, FFI_TYPE_DOUBLE }; +ffi_type ffi_type_longdouble = { sizeof(long double), LONGDOUBLE_ALIGN, + FFI_TYPE_LONGDOUBLE }; /* ffi_type ffi_type_longdouble */ Modified: python/trunk/Modules/_ctypes/ctypes.h ============================================================================== --- python/trunk/Modules/_ctypes/ctypes.h (original) +++ python/trunk/Modules/_ctypes/ctypes.h Fri Sep 7 08:32:17 2007 @@ -47,6 +47,7 @@ #ifdef HAVE_LONG_LONG PY_LONG_LONG ll; #endif + long double D; }; /* @@ -300,6 +301,7 @@ #ifdef HAVE_LONG_LONG PY_LONG_LONG q; #endif + long double D; double d; float f; void *p; From buildbot at python.org Fri Sep 7 08:37:25 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 06:37:25 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20070907063726.1851F1E400B@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/1174 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: thomas.heller BUILD FAILED: failed configure sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 09:17:05 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 07:17:05 +0000 Subject: [Python-checkins] buildbot warnings in ppc Debian unstable trunk Message-ID: <20070907071705.CB15E1E400B@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/184 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: thomas.heller Build had warnings: warnings test Excerpt from the test logfile: 2 tests failed: test_ctypes test_socket ====================================================================== FAIL: test_longdouble (ctypes.test.test_callbacks.Callbacks) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_callbacks.py", line 81, in test_longdouble self.check_type(c_longdouble, 3.14) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_callbacks.py", line 22, in check_type self.failUnlessEqual(self.got_args, (arg,)) AssertionError: (7.1837778107801924,) != (3.1400000000000001,) ====================================================================== FAIL: test_longdouble (ctypes.test.test_cfuncs.CFunctions) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_cfuncs.py", line 164, in test_longdouble self.failUnlessEqual(self._dll.tf_D(42.), 14.) AssertionError: nan != 14.0 ====================================================================== FAIL: test_longdouble_plus (ctypes.test.test_cfuncs.CFunctions) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_cfuncs.py", line 170, in test_longdouble_plus self.failUnlessEqual(self._dll.tf_bD(0, 42.), 14.) AssertionError: nan != 14.0 ====================================================================== FAIL: test_longdoubleresult (ctypes.test.test_functions.FunctionTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_functions.py", line 151, in test_longdoubleresult self.failUnlessEqual(result, 21) AssertionError: nan != 21 ====================================================================== ERROR: testGetServBy (test.test_socket.GeneralModuleTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socket.py", line 346, in testGetServBy raise socket.error error make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 11:30:41 2007 From: python-checkins at python.org (thomas.heller) Date: Fri, 7 Sep 2007 11:30:41 +0200 (CEST) Subject: [Python-checkins] r58035 - python/trunk/Modules/_ctypes/cfield.c Message-ID: <20070907093041.3B52A1E400B@bag.python.org> Author: thomas.heller Date: Fri Sep 7 11:30:40 2007 New Revision: 58035 Modified: python/trunk/Modules/_ctypes/cfield.c Log: Remove unneeded #include. Modified: python/trunk/Modules/_ctypes/cfield.c ============================================================================== --- python/trunk/Modules/_ctypes/cfield.c (original) +++ python/trunk/Modules/_ctypes/cfield.c Fri Sep 7 11:30:40 2007 @@ -5,7 +5,6 @@ #include "Python.h" #include -#include #ifdef MS_WIN32 #include #endif From python-checkins at python.org Fri Sep 7 11:33:24 2007 From: python-checkins at python.org (thomas.heller) Date: Fri, 7 Sep 2007 11:33:24 +0200 (CEST) Subject: [Python-checkins] r58036 - python/trunk/Lib/ctypes/__init__.py Message-ID: <20070907093324.C3E841E400B@bag.python.org> Author: thomas.heller Date: Fri Sep 7 11:33:24 2007 New Revision: 58036 Modified: python/trunk/Lib/ctypes/__init__.py Log: Backport from py3k branch: Add a workaround for a strange bug on win64, when _ctypes is compiled with the SDK compiler. This should fix the failing Lib\ctypes\test\test_as_parameter.py test. Modified: python/trunk/Lib/ctypes/__init__.py ============================================================================== --- python/trunk/Lib/ctypes/__init__.py (original) +++ python/trunk/Lib/ctypes/__init__.py Fri Sep 7 11:33:24 2007 @@ -545,3 +545,9 @@ elif sizeof(kind) == 4: c_uint32 = kind elif sizeof(kind) == 8: c_uint64 = kind del(kind) + +# XXX for whatever reasons, creating the first instance of a callback +# function is needed for the unittests on Win64 to succeed. This MAY +# be a compiler bug, since the problem occurs only when _ctypes is +# compiled with the MS SDK compiler. Or an uninitialized variable? +CFUNCTYPE(c_int)(lambda: None) From buildbot at python.org Fri Sep 7 12:00:27 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 10:00:27 +0000 Subject: [Python-checkins] buildbot warnings in alpha Debian trunk Message-ID: <20070907100027.A98CA1E401E@bag.python.org> The Buildbot has detected a new failure of alpha Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Debian%20trunk/builds/114 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: thomas.heller Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 16:00:32 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 14:00:32 +0000 Subject: [Python-checkins] buildbot warnings in MIPS Debian trunk Message-ID: <20070907140032.CBC871E401A@bag.python.org> The Buildbot has detected a new failure of MIPS Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%20trunk/builds/9 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: thomas.heller Build had warnings: warnings test Excerpt from the test logfile: 2 tests failed: test_ssl test_urllib2net ====================================================================== ERROR: testSSLconnect (test.test_ssl.BasicTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_ssl.py", line 91, in testSSLconnect s.close() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/contextlib.py", line 29, in __exit__ self.gen.throw(type, value, traceback) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/contextlib.py", line 113, in nested yield vars File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_ssl.py", line 77, in testSSLconnect s.connect(("pop.gmail.com", 995)) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ssl.py", line 201, in connect socket.connect(self, addr) File "", line 1, in connect error: (145, 'Connection timed out') ====================================================================== ERROR: test_ftp_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 306, in test_ftp_NoneNodefault u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=None) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 380, in open response = self._open(req, data) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 398, in _open '_open', req) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 358, in _call_chain result = func(*args) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1277, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1323, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 838, in __init__ self.init() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 844, in init self.ftp.connect(self.host, self.port, self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno ftp error] (145, 'Connection timed out') ====================================================================== ERROR: test_ftp_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 300, in test_ftp_NoneWithdefault u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=None) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 380, in open response = self._open(req, data) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 398, in _open '_open', req) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 358, in _call_chain result = func(*args) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1277, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1323, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 838, in __init__ self.init() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 844, in init self.ftp.connect(self.host, self.port, self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno ftp error] timed out ====================================================================== ERROR: test_ftp_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 310, in test_ftp_Value u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=60) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 380, in open response = self._open(req, data) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 398, in _open '_open', req) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 358, in _call_chain result = func(*args) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1277, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1323, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 838, in __init__ self.init() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 844, in init self.ftp.connect(self.host, self.port, self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno ftp error] timed out ====================================================================== ERROR: test_ftp_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 293, in test_ftp_basic u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/") File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 380, in open response = self._open(req, data) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 398, in _open '_open', req) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 358, in _call_chain result = func(*args) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1277, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1323, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 838, in __init__ self.init() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 844, in init self.ftp.connect(self.host, self.port, self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno ftp error] (145, 'Connection timed out') make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 16:14:40 2007 From: python-checkins at python.org (georg.brandl) Date: Fri, 7 Sep 2007 16:14:40 +0200 (CEST) Subject: [Python-checkins] r58037 - python/trunk/Doc/reference/simple_stmts.rst Message-ID: <20070907141440.EE60F1E400D@bag.python.org> Author: georg.brandl Date: Fri Sep 7 16:14:40 2007 New Revision: 58037 Modified: python/trunk/Doc/reference/simple_stmts.rst Log: Fix a wrong indentation for sublists. Modified: python/trunk/Doc/reference/simple_stmts.rst ============================================================================== --- python/trunk/Doc/reference/simple_stmts.rst (original) +++ python/trunk/Doc/reference/simple_stmts.rst Fri Sep 7 16:14:40 2007 @@ -173,10 +173,10 @@ .. index:: statement: global -* If the name does not occur in a :keyword:`global` statement in the current + * If the name does not occur in a :keyword:`global` statement in the current code block: the name is bound to the object in the current local namespace. -* Otherwise: the name is bound to the object in the current global namespace. + * Otherwise: the name is bound to the object in the current global namespace. .. index:: single: destructor From buildbot at python.org Fri Sep 7 17:05:48 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 15:05:48 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian 3.0 Message-ID: <20070907150548.CBA2A1E401F@bag.python.org> The Buildbot has detected a new failure of S-390 Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%203.0/builds/89 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl,jeffrey.yasskin BUILD FAILED: failed configure sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 21:15:17 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 19:15:17 +0000 Subject: [Python-checkins] buildbot warnings in MIPS Debian 3.0 Message-ID: <20070907191517.5196D1E4018@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%203.0/builds/7 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl,jeffrey.yasskin Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 22:10:50 2007 From: python-checkins at python.org (georg.brandl) Date: Fri, 7 Sep 2007 22:10:50 +0200 (CEST) Subject: [Python-checkins] r58043 - python/trunk/Makefile.pre.in Message-ID: <20070907201050.1A3FA1E401E@bag.python.org> Author: georg.brandl Date: Fri Sep 7 22:10:49 2007 New Revision: 58043 Modified: python/trunk/Makefile.pre.in Log: #1095: ln -f doesn't work portably, fix in Makefile. Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Fri Sep 7 22:10:49 2007 @@ -660,7 +660,8 @@ else true; \ fi (cd $(DESTDIR)$(BINDIR); $(LN) python$(VERSION)$(EXE) $(PYTHON)) - (cd $(DESTDIR)$(BINDIR); $(LN) -sf python$(VERSION)-config python-config) + -rm -f $(DESTDIR)$(BINDIR)/python-config + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python-config) # Install the interpreter with $(VERSION) affixed # This goes into $(exec_prefix) From python-checkins at python.org Fri Sep 7 22:12:59 2007 From: python-checkins at python.org (georg.brandl) Date: Fri, 7 Sep 2007 22:12:59 +0200 (CEST) Subject: [Python-checkins] r58044 - python/branches/release25-maint/Makefile.pre.in Message-ID: <20070907201259.B21CF1E400D@bag.python.org> Author: georg.brandl Date: Fri Sep 7 22:12:59 2007 New Revision: 58044 Modified: python/branches/release25-maint/Makefile.pre.in Log: Backport: #1095: ln -f doesn't work portably. Modified: python/branches/release25-maint/Makefile.pre.in ============================================================================== --- python/branches/release25-maint/Makefile.pre.in (original) +++ python/branches/release25-maint/Makefile.pre.in Fri Sep 7 22:12:59 2007 @@ -656,7 +656,8 @@ else true; \ fi (cd $(DESTDIR)$(BINDIR); $(LN) python$(VERSION)$(EXE) $(PYTHON)) - (cd $(DESTDIR)$(BINDIR); $(LN) -sf python$(VERSION)-config python-config) + -rm -f $(DESTDIR)$(BINDIR)/python-config + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python-config) # Install the interpreter with $(VERSION) affixed # This goes into $(exec_prefix) From buildbot at python.org Fri Sep 7 22:18:09 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 20:18:09 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian 2.5 Message-ID: <20070907201810.297F41E400D@bag.python.org> The Buildbot has detected a new failure of S-390 Debian 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%202.5/builds/353 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: georg.brandl BUILD FAILED: failed configure sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 22:29:22 2007 From: python-checkins at python.org (facundo.batista) Date: Fri, 7 Sep 2007 22:29:22 +0200 (CEST) Subject: [Python-checkins] r58045 - python/branches/decimal-branch/Lib/decimal.py Message-ID: <20070907202922.C00251E400D@bag.python.org> Author: facundo.batista Date: Fri Sep 7 22:29:22 2007 New Revision: 58045 Modified: python/branches/decimal-branch/Lib/decimal.py Log: Cleaned up and speeded up the remainder_near() function. Thanks Mark Dickinson. Modified: python/branches/decimal-branch/Lib/decimal.py ============================================================================== --- python/branches/decimal-branch/Lib/decimal.py (original) +++ python/branches/decimal-branch/Lib/decimal.py Fri Sep 7 22:29:22 2007 @@ -1368,81 +1368,78 @@ """ Remainder nearest to 0- abs(remainder-near) <= other/2 """ - other = _convert_other(other) - if other is NotImplemented: - return other - - if self._is_special or other._is_special: - ans = self._check_nans(other, context) - if ans: - return ans - if self and not other: - return context._raise_error(InvalidOperation, 'x % 0') - if context is None: context = getcontext() - # If DivisionImpossible causes an error, do not leave Rounded/Inexact - # ignored in the calling function. - context = context._shallow_copy() - flags = context._ignore_flags(Rounded, Inexact) - # Keep DivisionImpossible flags - (side, r) = self.__divmod__(other, context=context) - - if r._isnan(): - context._regard_flags(*flags) - return r - context = context._shallow_copy() - rounding = context._set_rounding_decision(NEVER_ROUND) + other = _convert_other(other) + if other is NotImplemented: + raise TypeError("Unable to convert %s to Decimal" % other) - if other._sign: - comparison = other.__div__(Dec_n2, context=context) - else: - comparison = other.__div__(Dec_p2, context=context) + ans = self._check_nans(other, context) + if ans: + return ans - context._set_rounding_decision(rounding) - context._regard_flags(*flags) + # self == +/-infinity -> InvalidOperation + if self._isinfinity(): + return context._raise_error(InvalidOperation, + 'remainder_near(infinity, x)') - s1, s2 = r._sign, comparison._sign - r._sign, comparison._sign = 0, 0 + # other == 0 -> either InvalidOperation or DivisionUndefined + if not other: + if self: + return context._raise_error(InvalidOperation, + 'remainder_near(x, 0)') + else: + return context._raise_error(DivisionUndefined, + 'remainder_near(0, 0)') - if r < comparison: - r._sign, comparison._sign = s1, s2 - # Get flags now - self.__divmod__(other, context=context) - return r._fix(context) - r._sign, comparison._sign = s1, s2 + # other = +/-infinity -> remainder = self + if other._isinfinity(): + ans = Decimal(self) + return ans._fix(context) - rounding = context._set_rounding_decision(NEVER_ROUND) + # self = 0 -> remainder = self, with ideal exponent + ideal_exponent = min(self._exp, other._exp) + if not self: + ans = Decimal((self._sign, (0,), ideal_exponent)) + return ans._fix(context) - (side, r) = self.__divmod__(other, context=context) - context._set_rounding_decision(rounding) - if r._isnan(): - return r + # catch most cases of large or small quotient + expdiff = self.adjusted() - other.adjusted() + if expdiff >= context.prec + 1: + # expdiff >= prec+1 => abs(self/other) > 10**prec + return context._raise_error(DivisionImpossible)[0] + if expdiff <= -2: + # expdiff <= -2 => abs(self/other) < 0.1 + ans = self._rescale(ideal_exponent, context.rounding) + return ans._fix(context) - decrease = not side._iseven() - rounding = context._set_rounding_decision(NEVER_ROUND) - side = side.__abs__(context=context) - context._set_rounding_decision(rounding) + # adjust both arguments to have the same exponent, then divide + op1 = _WorkRep(self) + op2 = _WorkRep(other) + if op1.exp >= op2.exp: + op1.int *= 10**(op1.exp - op2.exp) + else: + op2.int *= 10**(op2.exp - op1.exp) + q, r = divmod(op1.int, op2.int) + # remainder is r*10**ideal_exponent; other is +/-op2.int * + # 10**ideal_exponent. Apply correction to ensure that + # abs(remainder) <= abs(other)/2 + if 2*r + (q&1) > op2.int: + r -= op2.int + q += 1 - s1, s2 = r._sign, comparison._sign - r._sign, comparison._sign = 0, 0 - if r > comparison or decrease and r == comparison: - r._sign, comparison._sign = s1, s2 - context.prec += 1 - numbsquant = len(side.__add__(Dec_p1, context=context)._int) - if numbsquant >= context.prec: - context.prec -= 1 - return context._raise_error(DivisionImpossible)[1] - context.prec -= 1 - if self._sign == other._sign: - r = r.__sub__(other, context=context) - else: - r = r.__add__(other, context=context) - else: - r._sign, comparison._sign = s1, s2 + if q >= 10**context.prec: + return context._raise_error(DivisionImpossible)[0] + + # result has same sign as self unless r is negative + sign = self._sign + if r < 0: + sign = 1-sign + r = -r - return r._fix(context) + ans = Decimal((sign, map(int, str(r)), ideal_exponent)) + return ans._fix(context) def __floordiv__(self, other, context=None): """self // other""" From python-checkins at python.org Fri Sep 7 22:34:07 2007 From: python-checkins at python.org (facundo.batista) Date: Fri, 7 Sep 2007 22:34:07 +0200 (CEST) Subject: [Python-checkins] r58046 - python/branches/decimal-branch/Lib/decimal.py Message-ID: <20070907203407.668271E400E@bag.python.org> Author: facundo.batista Date: Fri Sep 7 22:34:07 2007 New Revision: 58046 Modified: python/branches/decimal-branch/Lib/decimal.py Log: The second patch makes minor changes to __pos__, __neg__, __sub__ and __rsub__ so that Decimal attributes are never changed outside __new__ (since a Decimal instance is supposed to be immutable, this should probably be avoided unless there's a good reason not to). It also fixes the docstrings for __sub__ and __rsub__, and it fixes a bug in __rsub__ which incorrectly changes the sign of a NaN. Thanks Mark Dickinson. Modified: python/branches/decimal-branch/Lib/decimal.py ============================================================================== --- python/branches/decimal-branch/Lib/decimal.py (original) +++ python/branches/decimal-branch/Lib/decimal.py Fri Sep 7 22:34:07 2007 @@ -895,17 +895,15 @@ if not self: # -Decimal('0') is Decimal('0'), not Decimal('-0') - sign = 0 - elif self._sign: - sign = 0 + ans = self.copy_sign(Dec_0) else: - sign = 1 + ans = self.copy_negate() if context is None: context = getcontext() if context._rounding_decision == ALWAYS_ROUND: - return Decimal((sign, self._int, self._exp))._fix(context) - return Decimal( (sign, self._int, self._exp)) + return ans._fix(context) + return ans def __pos__(self, context=None): """Returns a copy, unless it is a sNaN. @@ -917,19 +915,16 @@ if ans: return ans - sign = self._sign if not self: # + (-0) = 0 - sign = 0 + ans = self.copy_sign(Dec_0) + else: + ans = Decimal(self) if context is None: context = getcontext() - if context._rounding_decision == ALWAYS_ROUND: - ans = self._fix(context) - else: - ans = Decimal(self) - ans._sign = sign + return ans._fix(context) return ans def __abs__(self, round=1, context=None): @@ -1051,7 +1046,7 @@ __radd__ = __add__ def __sub__(self, other, context=None): - """Return self + (-other)""" + """Return self - other""" other = _convert_other(other) if other is NotImplemented: return other @@ -1061,23 +1056,16 @@ if ans: return ans - # -Decimal(0) = Decimal(0), which we don't want since - # (-0 - 0 = -0 + (-0) = -0, but -0 + 0 = 0.) - # so we change the sign directly to a copy - tmp = Decimal(other) - tmp._sign = 1-tmp._sign - - return self.__add__(tmp, context=context) + # self - other is computed as self + other.copy_negate() + return self.__add__(other.copy_negate(), context=context) def __rsub__(self, other, context=None): - """Return other + (-self)""" + """Return other - self""" other = _convert_other(other) if other is NotImplemented: return other - tmp = Decimal(self) - tmp._sign = 1 - tmp._sign - return other.__add__(tmp, context=context) + return other.__sub__(self, context=context) def _increment(self): """Special case of add, adding 1eExponent From buildbot at python.org Fri Sep 7 22:44:31 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 20:44:31 +0000 Subject: [Python-checkins] buildbot warnings in x86 gentoo trunk Message-ID: <20070907204431.B82811E400D@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/2450 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_ftplib make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 22:48:33 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 20:48:33 +0000 Subject: [Python-checkins] buildbot warnings in x86 XP-3 trunk Message-ID: <20070907204833.A42B51E400D@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/219 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_mailbox sincerely, -The Buildbot From buildbot at python.org Fri Sep 7 22:51:13 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 20:51:13 +0000 Subject: [Python-checkins] buildbot warnings in S-390 Debian 3.0 Message-ID: <20070907205113.C2D301E400D@bag.python.org> The Buildbot has detected a new failure of S-390 Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%203.0/builds/92 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: The web-page 'force build' button was pressed by 'doko': slave restarted Build Source Stamp: [branch trunk] HEAD Blamelist: Build had warnings: warnings test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From python-checkins at python.org Fri Sep 7 22:51:23 2007 From: python-checkins at python.org (facundo.batista) Date: Fri, 7 Sep 2007 22:51:23 +0200 (CEST) Subject: [Python-checkins] r58048 - python/branches/decimal-branch/Lib/decimal.py Message-ID: <20070907205123.2B9801E400D@bag.python.org> Author: facundo.batista Date: Fri Sep 7 22:51:22 2007 New Revision: 58048 Modified: python/branches/decimal-branch/Lib/decimal.py Log: Changed __nonzero__, _iseven and _islogical to return uniformly bools. It also changes the eng parameter of __str__ to a bool. Thanks Mark Dickinson. Modified: python/branches/decimal-branch/Lib/decimal.py ============================================================================== --- python/branches/decimal-branch/Lib/decimal.py (original) +++ python/branches/decimal-branch/Lib/decimal.py Fri Sep 7 22:51:22 2007 @@ -690,7 +690,7 @@ 1 if self != 0 """ if self._is_special: - return 1 + return True return sum(self._int) != 0 def __cmp__(self, other): @@ -791,7 +791,7 @@ # Invariant: eval(repr(d)) == d return 'Decimal("%s")' % str(self) - def __str__(self, eng = 0, context=None): + def __str__(self, eng=False, context=None): """Return string representation of the number in scientific notation. Captures all of the information in the underlying representation. @@ -881,7 +881,7 @@ Same rules for when in exponential and when as a value as in __str__. """ - return self.__str__(eng=1, context=context) + return self.__str__(eng=True, context=context) def __neg__(self, context=None): """Returns a copy with the sign switched. @@ -2533,9 +2533,9 @@ return rest == (0,)*len(rest) def _iseven(self): - """Returns 1 if self is even. Assumes self is an integer.""" + """Returns True if self is even. Assumes self is an integer.""" if not self or self._exp > 0: - return 1 + return True return self._int[-1+self._exp] & 1 == 0 def adjusted(self): @@ -3012,18 +3012,18 @@ return Decimal(self.adjusted()) def _islogical(self): - """Return 1 is self is a logical operand. + """Return True if self is a logical operand. For being logical, it must be a finite numbers with a sign of 0, an exponent of 0, and a coefficient whose digits must all be either 0 or 1. """ if self._sign != 0 or self._exp != 0: - return 0 + return False for dig in self._int: if dig not in (0, 1): - return 0 - return 1 + return False + return True def _fill_logical(self, context, opa, opb): dif = context.prec - len(opa) From buildbot at python.org Fri Sep 7 23:56:48 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 07 Sep 2007 21:56:48 +0000 Subject: [Python-checkins] buildbot warnings in hppa Ubuntu trunk Message-ID: <20070907215648.98C7C1E400D@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/131 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Sat Sep 8 02:34:17 2007 From: python-checkins at python.org (skip.montanaro) Date: Sat, 8 Sep 2007 02:34:17 +0200 (CEST) Subject: [Python-checkins] r58049 - python/trunk/Lib/distutils/dep_util.py Message-ID: <20070908003417.C204C1E400D@bag.python.org> Author: skip.montanaro Date: Sat Sep 8 02:34:17 2007 New Revision: 58049 Modified: python/trunk/Lib/distutils/dep_util.py Log: be explicit about the actual location of the missing file Modified: python/trunk/Lib/distutils/dep_util.py ============================================================================== --- python/trunk/Lib/distutils/dep_util.py (original) +++ python/trunk/Lib/distutils/dep_util.py Sat Sep 8 02:34:17 2007 @@ -19,7 +19,8 @@ Raise DistutilsFileError if 'source' does not exist. """ if not os.path.exists(source): - raise DistutilsFileError, "file '%s' does not exist" % source + raise DistutilsFileError, ("file '%s' does not exist" % + os.path.abspath(source)) if not os.path.exists(target): return 1 From buildbot at python.org Sat Sep 8 03:00:50 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 01:00:50 +0000 Subject: [Python-checkins] buildbot warnings in x86 mvlgcc trunk Message-ID: <20070908010050.EADB01E401F@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/790 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro Build had warnings: warnings test Excerpt from the test logfile: 1 test failed: test_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Sep 8 03:07:12 2007 From: python-checkins at python.org (brett.cannon) Date: Sat, 8 Sep 2007 03:07:12 +0200 (CEST) Subject: [Python-checkins] r58050 - peps/trunk/pep-0362.txt Message-ID: <20070908010712.AD61D1E400D@bag.python.org> Author: brett.cannon Date: Sat Sep 8 03:07:12 2007 New Revision: 58050 Modified: peps/trunk/pep-0362.txt Log: Update based on questions made by Jim Jewett. Modified: peps/trunk/pep-0362.txt ============================================================================== --- peps/trunk/pep-0362.txt (original) +++ peps/trunk/pep-0362.txt Sat Sep 8 03:07:12 2007 @@ -25,9 +25,8 @@ This PEP proposes an object representation for function signatures. This should help facilitate introspection on functions for various -uses (e.g., decorators). The introspection information contains all -possible information about the parameters in a signature (including -Python 3.0 features). +uses. The introspection information contains all possible information +about the parameters in a signature (including Python 3.0 features). This object, though, is not meant to replace existing ways of introspection on a function's signature. The current solutions are @@ -36,6 +35,23 @@ code have an easier time to query a function on its signature. +Purpose +======= + +An object representation of a function's call signature should provide +an easy way to introspect what a function expects as arguments. It +does not need to be a "live" representation, though; the signature can +be inferred once and stored without changes to the signature object +representation affecting the function it represents (but this is an +`Open Issue`_). + +Indirecation of signature introspection can also occur. If a +decorator took a decorated function's signature object and set it on +the decorating function then introspection could be redirected to what +is actually expected instead of the typical ``*args, **kwargs`` +signature of decorating functions. + + Signature Object ================ @@ -63,6 +79,12 @@ The keys are of the variable parameter with values of the annotation. If an annotation does not exist for a variable parameter then the key does not exist in the dict. +* has_annotation : bool + Signifies whether the function has an annotation for the return + type. +* annotation : object + If present, the attribute is set to the annotation for the return + type of the function. * parameters : list(Parameter) List of the parameters of the function as represented by Parameter objects in the order of its definition (keyword-only @@ -190,6 +212,8 @@ It has been suggested by Fred Drake that these two attributes have a value of ``None`` instead of empty strings when they do not exist. +The answer to this question will influence what the defaults are for +other attributes as well. Deprecate ``inspect.getargspec()`` and ``.formatargspec()``? @@ -206,6 +230,16 @@ would need to change in order to make this reasonable. +Have the objects be "live"? +--------------------------- + +Jim Jewett pointed out that Signature and Parameter objects could be +"live". That would mean requesting information would be done on the +fly instead of caching it on the objects. It would also allow for +mutating the function if the Signature or Parameter objects were +mutated. + + References ========== From python-checkins at python.org Sat Sep 8 03:07:58 2007 From: python-checkins at python.org (brett.cannon) Date: Sat, 8 Sep 2007 03:07:58 +0200 (CEST) Subject: [Python-checkins] r58051 - peps/trunk/pep-0362.txt Message-ID: <20070908010758.4EB731E400D@bag.python.org> Author: brett.cannon Date: Sat Sep 8 03:07:58 2007 New Revision: 58051 Modified: peps/trunk/pep-0362.txt Log: Fix typo in link target. Modified: peps/trunk/pep-0362.txt ============================================================================== --- peps/trunk/pep-0362.txt (original) +++ peps/trunk/pep-0362.txt Sat Sep 8 03:07:58 2007 @@ -43,7 +43,7 @@ does not need to be a "live" representation, though; the signature can be inferred once and stored without changes to the signature object representation affecting the function it represents (but this is an -`Open Issue`_). +`Open Issues`_). Indirecation of signature introspection can also occur. If a decorator took a decorated function's signature object and set it on From buildbot at python.org Sat Sep 8 03:19:46 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 01:19:46 +0000 Subject: [Python-checkins] buildbot warnings in S-390 Debian trunk Message-ID: <20070908011946.5D3FD1E400D@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/1177 Buildbot URL: http://www.python.org/dev/buildbot/all/ Build Reason: The web-page 'force build' button was pressed by 'doko': recreated tmp dir Build Source Stamp: [branch trunk] HEAD Blamelist: Build had warnings: warnings test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Sat Sep 8 05:32:42 2007 From: python-checkins at python.org (brett.cannon) Date: Sat, 8 Sep 2007 05:32:42 +0200 (CEST) Subject: [Python-checkins] r58052 - in sandbox/trunk/pep0: NOTES pep0/__init__.py pep0/constants.py pep0/output.py pep0/pep.py Message-ID: <20070908033242.69C5A1E4006@bag.python.org> Author: brett.cannon Date: Sat Sep 8 05:32:41 2007 New Revision: 58052 Modified: sandbox/trunk/pep0/NOTES sandbox/trunk/pep0/pep0/__init__.py sandbox/trunk/pep0/pep0/constants.py sandbox/trunk/pep0/pep0/output.py sandbox/trunk/pep0/pep0/pep.py Log: Move over to using Unicode in a proper fashion. Modified: sandbox/trunk/pep0/NOTES ============================================================================== --- sandbox/trunk/pep0/NOTES (original) +++ sandbox/trunk/pep0/NOTES Sat Sep 8 05:32:41 2007 @@ -1,11 +1,6 @@ TODO ----- -* Explicitly read PEPs as UTF-8. - -* Use unicodedata to reformat author names to NFC (or NFKC, not sure which) to - make Unicode characters count as one when taking the len of a unicode string. - * Backport email addresses from old PEP 0 to PEPs themselves. * Add support for author names formatted as "Last, First, Suffix". Modified: sandbox/trunk/pep0/pep0/__init__.py ============================================================================== --- sandbox/trunk/pep0/pep0/__init__.py (original) +++ sandbox/trunk/pep0/pep0/__init__.py Sat Sep 8 05:32:41 2007 @@ -15,6 +15,8 @@ """ from __future__ import absolute_import, with_statement +import codecs + if __name__ == '__main__': from pep0.output import write_pep0 from pep0.pep import PEP @@ -37,7 +39,7 @@ if (not file_path.startswith('pep-') or not file_path.endswith('.txt')): continue - with open(abs_file_path, 'r') as pep_file: + with codecs.open(abs_file_path, 'r', encoding='UTF-8') as pep_file: peps.append(PEP(pep_file)) else: peps.sort(key=attrgetter('number')) @@ -47,4 +49,5 @@ else: raise ValueError("argument must be a directory or file path") - write_pep0(peps) + with codecs.open('pep-0.txt', 'w', encoding='UTF-8') as pep0_file: + write_pep0(peps, pep0_file) Modified: sandbox/trunk/pep0/pep0/constants.py ============================================================================== --- sandbox/trunk/pep0/pep0/constants.py (original) +++ sandbox/trunk/pep0/pep0/constants.py Sat Sep 8 05:32:41 2007 @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- title_length = 44 -column_format = (' %(type)1s%(status)1s %(number)4s %(title)-' + - str(title_length) + 's %(authors)-s') +column_format = (u' %(type)1s%(status)1s %(number)4s %(title)-' + + unicode(title_length) + u's %(authors)-s') -header = """PEP: 0 +header = u"""PEP: 0 Title: Index of Python Enhancement Proposals (PEPs) Version: $Revision$ Last-Modified: $Date$ @@ -14,7 +14,7 @@ Created: 13-Jul-2000 """ -intro = """ +intro = u""" The PEP contains the index of all Python Enhancement Proposals, known as PEPs. PEP numbers are assigned by the PEP Editor, and once assigned are never changed. The SVN history[1] of the PEP @@ -25,12 +25,12 @@ musings on the various outstanding PEPs. """ -references = """ +references = u""" [1] View PEP history online http://svn.python.org/projects/peps/trunk/ """ -footer = """ +footer = u""" Local Variables: mode: indented-text indent-tabs-mode: nil Modified: sandbox/trunk/pep0/pep0/output.py ============================================================================== --- sandbox/trunk/pep0/pep0/output.py (original) +++ sandbox/trunk/pep0/pep0/output.py Sat Sep 8 05:32:41 2007 @@ -4,19 +4,20 @@ from operator import attrgetter from sys import stdout +from unicodedata import normalize import warnings -indent = ' ' +indent = u' ' def write_column_headers(output): """Output the column headers for the PEP indices.""" - column_headers = {'status': '', 'type': '', 'number': 'num', - 'title': 'title', 'authors': 'owner'} + column_headers = {'status': u'', 'type': u'', 'number': u'num', + 'title': u'title', 'authors': u'owner'} print>>output, constants.column_format % column_headers underline_headers = {} for key, value in column_headers.items(): - underline_headers[key] = len(value) * '-' + underline_headers[key] = unicode(len(value) * '-') print>>output, constants.column_format % underline_headers @@ -101,84 +102,84 @@ def write_pep0(peps, output=stdout): print>>output, constants.header print>>output - print>>output, "Introduction" + print>>output, u"Introduction" print>>output, constants.intro print>>output - print>>output, "Index by Category" + print>>output, u"Index by Category" print>>output write_column_headers(output) meta, info, accepted, open_, finished, dead = sort_peps(peps) print>>output - print>>output, " Meta-PEPs (PEPs about PEPs or Processs)" + print>>output, u" Meta-PEPs (PEPs about PEPs or Processs)" print>>output for pep in meta: - print>>output, pep + print>>output, unicode(pep) print>>output - print>>output, " Other Informational PEPs" + print>>output, u" Other Informational PEPs" print>>output for pep in info: - print>>output, pep + print>>output, unicode(pep) print>>output - print>>output, " Accepted PEPs (accepted; may not be implemented yet)" + print>>output, u" Accepted PEPs (accepted; may not be implemented yet)" print>>output for pep in accepted: - print>>output, pep + print>>output, unicode(pep) print>>output - print>>output, " Open PEPs (under consideration)" + print>>output, u" Open PEPs (under consideration)" print>>output for pep in open_: - print>>output, pep + print>>output, unicode(pep) print>>output - print>>output, " Finished PEPs (done, implemented in code repository)" + print>>output, u" Finished PEPs (done, implemented in code repository)" print>>output for pep in finished: - print>>output, pep + print>>output, unicode(pep) print>>output - print>>output, " Deferred, Abandoned, Withdrawn, and Rejected PEPs" + print>>output, u" Deferred, Abandoned, Withdrawn, and Rejected PEPs" print>>output for pep in dead: - print>>output, pep + print>>output, unicode(pep) print>>output print>>output - print>>output, " Numerical Index" + print>>output, u" Numerical Index" print>>output write_column_headers(output) prev_pep = 0 for pep in peps: if pep.number - prev_pep > 1: print>>output - print>>output, pep + print>>output, unicode(pep) prev_pep = pep.number print>>output print>>output - print>>output, "Key" + print>>output, u"Key" print>>output for type_ in PEP.type_values: - print>>output, " %s - %s PEP" % (type_[0], type_) + print>>output, u" %s - %s PEP" % (type_[0], type_) print>>output for status in PEP.status_values: - print>>output, " %s - %s proposal" % (status[0], status) + print>>output, u" %s - %s proposal" % (status[0], status) print>>output print>>output - print>>output, "Owners" + print>>output, u"Owners" print>>output authors_dict = verify_email_addresses(peps) max_name = max(authors_dict.keys(), - key=lambda x: len(x.last_first)) + key=lambda x: len(normalize('NFC', x.last_first))) max_name_len = len(max_name.last_first) - print>>output, " %s %s" % ('name'.ljust(max_name_len), 'email address') - print>>output, " %s %s" % ((len('name')*'-').ljust(max_name_len), + print>>output, u" %s %s" % ('name'.ljust(max_name_len), 'email address') + print>>output, u" %s %s" % ((len('name')*'-').ljust(max_name_len), len('email address')*'-') sorted_authors = sort_authors(authors_dict) for author in sorted_authors: # Use the email from authors_dict instead of the one from 'author' as # the author instance may have an empty email. - print>>output, (" %s %s" % + print>>output, (u" %s %s" % (author.last_first.ljust(max_name_len), authors_dict[author])) print>>output print>>output - print>>output, "References" + print>>output, u"References" print>>output print>>output, constants.references print>>output, constants.footer Modified: sandbox/trunk/pep0/pep0/pep.py ============================================================================== --- sandbox/trunk/pep0/pep0/pep.py (original) +++ sandbox/trunk/pep0/pep0/pep.py Sat Sep 8 05:32:41 2007 @@ -48,9 +48,9 @@ if not self.first: self.last_first = self.last else: - self.last_first = ', '.join([self.last, self.first]) + self.last_first = u', '.join([self.last, self.first]) if self.suffix: - self.last_first += ', ' + self.suffix + self.last_first += u', ' + self.suffix def __hash__(self): return hash(self.first_last) @@ -60,7 +60,7 @@ @property def sort_by(self): - if ' ' not in self.last: + if u' ' not in self.last: return self.last name_parts = self.last.split() for index, part in enumerate(name_parts): @@ -68,7 +68,7 @@ break else: raise ValueError("last name missing a capital letter") - return ' '.join(name_parts[index:]) + return u' '.join(name_parts[index:]) def _last_name(self, full_name): """Find the last name (or nickname) of a full name. @@ -79,7 +79,7 @@ comma, then drop the suffix. """ - name_partition = full_name.partition(',') + name_partition = full_name.partition(u',') no_suffix = name_partition[0].strip() suffix = name_partition[2].strip() name_parts = no_suffix.split() @@ -89,7 +89,7 @@ else: assert part_count > 2 if name_parts[-2].islower(): - return ' '.join(name_parts[-2:]), suffix + return u' '.join(name_parts[-2:]), suffix else: return name_parts[-1], suffix @@ -128,11 +128,11 @@ ('Post-History', True), ('Replaces', False), ('Replaced-By', False)) # Valid values for the Type header. - type_values = ("Standards Track", "Informational", "Process") + type_values = (u"Standards Track", u"Informational", u"Process") # Valid values for the Status header. # Active PEPs can only be for Informational or Process PEPs. - status_values = ("Accepted", "Rejected", "Withdrawn", "Deferred", "Final", - "Active", "Draft", "Replaced") + status_values = (u"Accepted", u"Rejected", u"Withdrawn", u"Deferred", u"Final", + u"Active", u"Draft", u"Replaced") def __init__(self, pep_file): """Init object from an open PEP file object.""" @@ -141,7 +141,7 @@ metadata = pep_parser.parse(pep_file) header_names = metadata.keys() header_order = iter(self.headers) - current_header = '' + current_header = u'' required = False try: for header_name in header_names: @@ -183,7 +183,7 @@ raise ValueError("%r is not a valid Status value (PEP %s)" % (status, self.number)) # Special case for Active PEPs. - if (status == "Active" and + if (status == u"Active" and self.type_ not in ("Process", "Informational")): raise ValueError("Only Process and Informational PEPs may have an " "Active status (PEP %s)" % self.number) @@ -198,13 +198,13 @@ """Return a list of author names and emails.""" # XXX Consider using email.utils.parseaddr (doesn't work with names # lacking an email address. - angled = r'(?P.+?) <(?P.+?)>' - paren = r'(?P.+?) \((?P.+?)\)' - simple = r'(?P[^,]+)' + angled = ur'(?P.+?) <(?P.+?)>' + paren = ur'(?P.+?) \((?P.+?)\)' + simple = ur'(?P[^,]+)' author_list = [] for regex in (angled, paren, simple): # Watch out for commas separating multiple names. - regex += '(,\s*)?' + regex += u'(,\s*)?' for match in re.finditer(regex, data): # Watch out for suffixes like 'Jr.' when they are comma-separated # from the name and thus cause issues when *all* names are only @@ -214,7 +214,7 @@ if not author.partition(' ')[1] and author.endswith('.'): prev_author = author_list.pop() author = ', '.join([prev_author, author]) - if 'email' not in match_dict: + if u'email' not in match_dict: email = '' else: email = match_dict['email'] @@ -235,14 +235,14 @@ def status_abbr(self): """Return how the status should be represented in the index.""" if self.status in ('Draft', 'Active'): - return ' ' + return u' ' else: return self.status[0].upper() @property def author_abbr(self): """Return the author list as a comma-separated with only last names.""" - return ', '.join(x.last for x in self.authors) + return u', '.join(x.last for x in self.authors) @property def title_abbr(self): @@ -250,9 +250,9 @@ if len(self.title) <= constants.title_length: return self.title wrapped_title = textwrap.wrap(self.title, constants.title_length - 4) - return wrapped_title[0] + ' ...' + return wrapped_title[0] + u' ...' - def __str__(self): + def __unicode__(self): """Return the line entry for the PEP.""" pep_info = {'type': self.type_abbr, 'number': str(self.number), 'title': self.title_abbr, 'status': self.status_abbr, From buildbot at python.org Sat Sep 8 14:59:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 12:59:56 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20070908125957.1CBF31E4006@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/791 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 15:11:34 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 13:11:34 +0000 Subject: [Python-checkins] buildbot failure in amd64 XP trunk Message-ID: <20070908131135.174131E4006@bag.python.org> The Buildbot has detected a new failure of amd64 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%20trunk/builds/185 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_winsound ====================================================================== ERROR: test_extremes (test.test_winsound.BeepTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\trunk.heller-windows-amd64\build\lib\test\test_winsound.py", line 18, in test_extremes winsound.Beep(37, 75) RuntimeError: Failed to beep ====================================================================== ERROR: test_increasingfrequency (test.test_winsound.BeepTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\trunk.heller-windows-amd64\build\lib\test\test_winsound.py", line 23, in test_increasingfrequency winsound.Beep(i, 75) RuntimeError: Failed to beep ====================================================================== ERROR: test_alias_asterisk (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\trunk.heller-windows-amd64\build\lib\test\test_winsound.py", line 64, in test_alias_asterisk winsound.PlaySound('SystemAsterisk', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_exclamation (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\trunk.heller-windows-amd64\build\lib\test\test_winsound.py", line 74, in test_alias_exclamation winsound.PlaySound('SystemExclamation', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_exit (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\trunk.heller-windows-amd64\build\lib\test\test_winsound.py", line 84, in test_alias_exit winsound.PlaySound('SystemExit', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_hand (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\trunk.heller-windows-amd64\build\lib\test\test_winsound.py", line 94, in test_alias_hand winsound.PlaySound('SystemHand', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_question (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\trunk.heller-windows-amd64\build\lib\test\test_winsound.py", line 104, in test_alias_question winsound.PlaySound('SystemQuestion', winsound.SND_ALIAS) RuntimeError: Failed to play sound sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 15:12:52 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 13:12:52 +0000 Subject: [Python-checkins] buildbot failure in alpha Debian trunk Message-ID: <20070908131253.1E6CD1E4006@bag.python.org> The Buildbot has detected a new failure of alpha Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Debian%20trunk/builds/116 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-alpha Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 15:13:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 13:13:56 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20070908131356.9428C1E4006@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/1857 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 15:15:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 13:15:56 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20070908131556.E91721E4006@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/188 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_ctypes test_socket ====================================================================== FAIL: test_longdouble (ctypes.test.test_callbacks.Callbacks) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_callbacks.py", line 81, in test_longdouble self.check_type(c_longdouble, 3.14) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_callbacks.py", line 22, in check_type self.failUnlessEqual(self.got_args, (arg,)) AssertionError: (8.5238056221341765,) != (3.1400000000000001,) ====================================================================== FAIL: test_longdouble (ctypes.test.test_cfuncs.CFunctions) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_cfuncs.py", line 164, in test_longdouble self.failUnlessEqual(self._dll.tf_D(42.), 14.) AssertionError: -5.7828548043645673e+307 != 14.0 ====================================================================== FAIL: test_longdouble_plus (ctypes.test.test_cfuncs.CFunctions) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_cfuncs.py", line 170, in test_longdouble_plus self.failUnlessEqual(self._dll.tf_bD(0, 42.), 14.) AssertionError: -5.7828548043645673e+307 != 14.0 ====================================================================== FAIL: test_longdoubleresult (ctypes.test.test_functions.FunctionTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/ctypes/test/test_functions.py", line 151, in test_longdoubleresult self.failUnlessEqual(result, 21) AssertionError: -5.7828548043645673e+307 != 21 ====================================================================== ERROR: testGetServBy (test.test_socket.GeneralModuleTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socket.py", line 346, in testGetServBy raise socket.error error make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 15:21:08 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 13:21:08 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20070908132108.301CB1E4006@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2265 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_pipes ====================================================================== FAIL: testSimplePipe1 (test.test_pipes.SimplePipeTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_pipes.py", line 23, in testSimplePipe1 self.assertEqual(open(TESTFN).read(), 'HELLO WORLD #1') AssertionError: 'hello world #1' != 'HELLO WORLD #1' ====================================================================== FAIL: testSimplePipe2 (test.test_pipes.SimplePipeTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_pipes.py", line 30, in testSimplePipe2 self.assertEqual(open(TESTFN2).read(), 'HELLO WORLD #2') AssertionError: 'hello world #2' != 'HELLO WORLD #2' ====================================================================== FAIL: testSimplePipe3 (test.test_pipes.SimplePipeTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_pipes.py", line 36, in testSimplePipe3 self.assertEqual(t.open(TESTFN, 'r').read(), 'HELLO WORLD #2') AssertionError: 'hello world #2' != 'HELLO WORLD #2' sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 15:53:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 13:53:56 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20070908135356.DBEF81E4006@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/1179 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 15:57:28 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 13:57:28 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20070908135729.080701E4006@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/52 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Bus error sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 16:04:18 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 14:04:18 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20070908140419.220AD1E4006@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/885 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 16:13:53 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 14:13:53 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20070908141353.5A2001E4006@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/133 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Sat Sep 8 18:48:28 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 08 Sep 2007 16:48:28 +0000 Subject: [Python-checkins] buildbot failure in MIPS Debian trunk Message-ID: <20070908164828.78F7C1E4006@bag.python.org> The Buildbot has detected a new failure of MIPS Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%20trunk/builds/12 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-mips Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_ssl test_urllib2net ====================================================================== ERROR: testSSLconnect (test.test_ssl.BasicTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_ssl.py", line 91, in testSSLconnect s.close() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/contextlib.py", line 29, in __exit__ self.gen.throw(type, value, traceback) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/contextlib.py", line 113, in nested yield vars File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_ssl.py", line 77, in testSSLconnect s.connect(("pop.gmail.com", 995)) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ssl.py", line 201, in connect socket.connect(self, addr) File "", line 1, in connect error: (145, 'Connection timed out') ====================================================================== ERROR: test_ftp_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 306, in test_ftp_NoneNodefault u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=None) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 380, in open response = self._open(req, data) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 398, in _open '_open', req) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 358, in _call_chain result = func(*args) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1277, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1323, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 838, in __init__ self.init() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 844, in init self.ftp.connect(self.host, self.port, self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno ftp error] (145, 'Connection timed out') ====================================================================== ERROR: test_ftp_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 300, in test_ftp_NoneWithdefault u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=None) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 380, in open response = self._open(req, data) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 398, in _open '_open', req) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 358, in _call_chain result = func(*args) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1277, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1323, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 838, in __init__ self.init() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 844, in init self.ftp.connect(self.host, self.port, self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno ftp error] timed out ====================================================================== ERROR: test_ftp_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 310, in test_ftp_Value u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=60) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 380, in open response = self._open(req, data) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 398, in _open '_open', req) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 358, in _call_chain result = func(*args) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1277, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1323, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 838, in __init__ self.init() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 844, in init self.ftp.connect(self.host, self.port, self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno ftp error] timed out ====================================================================== ERROR: test_ftp_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 293, in test_ftp_basic u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/") File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 380, in open response = self._open(req, data) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 398, in _open '_open', req) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 358, in _call_chain result = func(*args) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1277, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib2.py", line 1323, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 838, in __init__ self.init() File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/urllib.py", line 844, in init self.ftp.connect(self.host, self.port, self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/ftplib.py", line 129, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/home/pybot/buildarea/trunk.klose-debian-mips/build/Lib/socket.py", line 462, in create_connection raise error, msg IOError: [Errno ftp error] (145, 'Connection timed out') make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Sep 8 23:02:43 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 8 Sep 2007 23:02:43 +0200 (CEST) Subject: [Python-checkins] r58055 - in sandbox/trunk/2to3: fixes/fix_tuple_params.py tests/test_fixers.py Message-ID: <20070908210243.A01971E4007@bag.python.org> Author: collin.winter Date: Sat Sep 8 23:02:43 2007 New Revision: 58055 Modified: sandbox/trunk/2to3/fixes/fix_tuple_params.py sandbox/trunk/2to3/tests/test_fixers.py Log: Make fix_tuple_params handle unnecessary parens around lambda parameters; this fixes issue #1107. Modified: sandbox/trunk/2to3/fixes/fix_tuple_params.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_tuple_params.py (original) +++ sandbox/trunk/2to3/fixes/fix_tuple_params.py Sat Sep 8 23:02:43 2007 @@ -12,6 +12,9 @@ It will also support lambdas: lambda (x, y): x + y -> lambda t: t[0] + t[1] + + # The parens are a syntax error in Python 3 + lambda (x): x + y -> lambda x: x + y """ # Author: Collin Winter @@ -30,7 +33,11 @@ funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | - lambda=lambdef< 'lambda' args=vfpdef< '(' vfplist< any+ > ')' > ':' body=any >""" + lambda= + lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > + ':' body=any + > + """ def transform(self, node, results): if "lambda" in results: @@ -97,6 +104,14 @@ def transform_lambda(self, node, results): args = results["args"] body = results["body"] + inner = simplify_args(results["inner"]) + + # Replace lambda ((((x)))): x with lambda x: x + if inner.type == token.NAME: + inner = inner.clone() + inner.set_prefix(args.get_prefix()) + args.replace(inner) + return params = find_params(args) to_index = map_to_index(params) @@ -116,6 +131,17 @@ ### Helper functions for transform_lambda() +def simplify_args(node): + if node.type in (syms.vfplist, token.NAME): + return node + elif node.type == syms.vfpdef: + # These look like vfpdef< '(' x ')' > where x is NAME + # or another vfpdef instance (leading to recursion). + while node.type == syms.vfpdef: + node = node.children[1] + return node + raise RuntimeError("Received unexpected node %s" % node) + def find_params(node): if node.type == syms.vfpdef: return find_params(node.children[1]) Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sat Sep 8 23:02:43 2007 @@ -1531,20 +1531,33 @@ s = """lambda x: x + 5""" self.unchanged(s) - # Note the parens around x - s = """lambda (x): x + 5""" - self.unchanged(s) + def test_lambda_parens_single_arg(self): + b = """lambda (x): x + 5""" + a = """lambda x: x + 5""" + self.check(b, a) + + b = """lambda ((((x)))): x + 5""" + a = """lambda x: x + 5""" + self.check(b, a) def test_lambda_simple(self): b = """lambda (x, y): x + f(y)""" a = """lambda x_y: x_y[0] + f(x_y[1])""" self.check(b, a) + b = """lambda (((x, y))): x + f(y)""" + a = """lambda x_y: x_y[0] + f(x_y[1])""" + self.check(b, a) + def test_lambda_one_tuple(self): b = """lambda (x,): x + f(x)""" a = """lambda x1: x1[0] + f(x1[0])""" self.check(b, a) + b = """lambda (((x,))): x + f(x)""" + a = """lambda x1: x1[0] + f(x1[0])""" + self.check(b, a) + def test_lambda_simple_multi_use(self): b = """lambda (x, y): x + x + f(x) + x""" a = """lambda x_y: x_y[0] + x_y[0] + f(x_y[0]) + x_y[0]""" @@ -1560,6 +1573,10 @@ a = """lambda x_y_z: x_y_z[0] + x_y_z[1][0] + x_y_z[1][1]""" self.check(b, a) + b = """lambda (((x, (y, z)))): x + y + z""" + a = """lambda x_y_z: x_y_z[0] + x_y_z[1][0] + x_y_z[1][1]""" + self.check(b, a) + def test_lambda_nested_multi_use(self): b = """lambda (x, (y, z)): x + y + f(y)""" a = """lambda x_y_z: x_y_z[0] + x_y_z[1][0] + f(x_y_z[1][0])""" From python-checkins at python.org Sat Sep 8 23:12:46 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 8 Sep 2007 23:12:46 +0200 (CEST) Subject: [Python-checkins] r58056 - in sandbox/trunk/2to3: fixes/fix_tuple_params.py tests/test_fixers.py Message-ID: <20070908211246.3A5711E4007@bag.python.org> Author: collin.winter Date: Sat Sep 8 23:12:45 2007 New Revision: 58056 Modified: sandbox/trunk/2to3/fixes/fix_tuple_params.py sandbox/trunk/2to3/tests/test_fixers.py Log: Fix a prefix-related bug in fix_tuple_params lambda-handling code. Modified: sandbox/trunk/2to3/fixes/fix_tuple_params.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_tuple_params.py (original) +++ sandbox/trunk/2to3/fixes/fix_tuple_params.py Sat Sep 8 23:12:45 2007 @@ -109,7 +109,7 @@ # Replace lambda ((((x)))): x with lambda x: x if inner.type == token.NAME: inner = inner.clone() - inner.set_prefix(args.get_prefix()) + inner.set_prefix(" ") args.replace(inner) return @@ -117,8 +117,7 @@ to_index = map_to_index(params) tup_name = self.new_name(tuple_name(params)) - new_param = Name(tup_name) - new_param.set_prefix(args.get_prefix()) + new_param = Name(tup_name, prefix=" ") args.replace(new_param.clone()) for n in body.post_order(): if n.type == token.NAME and n.value in to_index: Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Sat Sep 8 23:12:45 2007 @@ -1536,19 +1536,35 @@ a = """lambda x: x + 5""" self.check(b, a) + b = """lambda(x): x + 5""" + a = """lambda x: x + 5""" + self.check(b, a) + b = """lambda ((((x)))): x + 5""" a = """lambda x: x + 5""" self.check(b, a) + b = """lambda((((x)))): x + 5""" + a = """lambda x: x + 5""" + self.check(b, a) + def test_lambda_simple(self): b = """lambda (x, y): x + f(y)""" a = """lambda x_y: x_y[0] + f(x_y[1])""" self.check(b, a) + b = """lambda(x, y): x + f(y)""" + a = """lambda x_y: x_y[0] + f(x_y[1])""" + self.check(b, a) + b = """lambda (((x, y))): x + f(y)""" a = """lambda x_y: x_y[0] + f(x_y[1])""" self.check(b, a) + b = """lambda(((x, y))): x + f(y)""" + a = """lambda x_y: x_y[0] + f(x_y[1])""" + self.check(b, a) + def test_lambda_one_tuple(self): b = """lambda (x,): x + f(x)""" a = """lambda x1: x1[0] + f(x1[0])""" From python-checkins at python.org Sat Sep 8 23:25:03 2007 From: python-checkins at python.org (collin.winter) Date: Sat, 8 Sep 2007 23:25:03 +0200 (CEST) Subject: [Python-checkins] r58057 - peps/trunk/pep-3107.txt Message-ID: <20070908212503.77EA01E4007@bag.python.org> Author: collin.winter Date: Sat Sep 8 23:25:03 2007 New Revision: 58057 Modified: peps/trunk/pep-3107.txt Log: Remove PEP 3107's requirement on PEP 362, bring 3107's status field into sync with PEP 0. Modified: peps/trunk/pep-3107.txt ============================================================================== --- peps/trunk/pep-3107.txt (original) +++ peps/trunk/pep-3107.txt Sat Sep 8 23:25:03 2007 @@ -4,10 +4,9 @@ Last-Modified: $Date$ Author: Collin Winter , Tony Lownds -Status: Accepted +Status: Final Type: Standards Track Content-Type: text/x-rst -Requires: 362 Created: 2-Dec-2006 Python-Version: 3.0 Post-History: From python-checkins at python.org Sun Sep 9 10:03:50 2007 From: python-checkins at python.org (georg.brandl) Date: Sun, 9 Sep 2007 10:03:50 +0200 (CEST) Subject: [Python-checkins] r58060 - doctools/trunk/TODO Message-ID: <20070909080350.3F47A1E400F@bag.python.org> Author: georg.brandl Date: Sun Sep 9 10:03:49 2007 New Revision: 58060 Modified: doctools/trunk/TODO Log: Another TODO item. Modified: doctools/trunk/TODO ============================================================================== --- doctools/trunk/TODO (original) +++ doctools/trunk/TODO Sun Sep 9 10:03:49 2007 @@ -1,6 +1,7 @@ Global TODO =========== +- add OpenSearch - "seealso" links to external examples, see http://svn.python.org/projects/sandbox/trunk/seealso/ and http://effbot.org/zone/idea-seealso.htm - "often used" combo box in sidebar - discuss and debug comments system From python-checkins at python.org Sun Sep 9 13:13:43 2007 From: python-checkins at python.org (ronald.oussoren) Date: Sun, 9 Sep 2007 13:13:43 +0200 (CEST) Subject: [Python-checkins] r58061 - python/trunk/Makefile.pre.in Message-ID: <20070909111343.064091E4009@bag.python.org> Author: ronald.oussoren Date: Sun Sep 9 13:13:42 2007 New Revision: 58061 Modified: python/trunk/Makefile.pre.in Log: Newer autoconf versions (from 2.60) want a 'datarootdir' definition in (Make-)files that use mandir (and other data directory macros). This patch solves a warning during configure, specifically: ... config.status: creating Makefile.pre config.status: WARNING: ../Makefile.pre.in seems to ignore the --datarootdir setting ... See also: Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Sun Sep 9 13:13:42 2007 @@ -82,6 +82,9 @@ # Install prefix for architecture-dependent files exec_prefix= @exec_prefix@ +# Install prefix for data files +datarootdir= @datarootdir@ + # Expanded directories BINDIR= $(exec_prefix)/bin LIBDIR= $(exec_prefix)/lib From buildbot at python.org Sun Sep 9 19:43:03 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 09 Sep 2007 17:43:03 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20070909174303.CBF941E4013@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/128 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: The web-page 'force build' button was pressed by 'Gregory P. Smith': test non-openssl hashlib modules Build Source Stamp: [branch py3k] 58059 Blamelist: BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sun Sep 9 22:21:53 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 09 Sep 2007 20:21:53 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc 3.0 Message-ID: <20070909202153.BB6BF1E400F@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%203.0/builds/128 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: The web-page 'force build' button was pressed by 'gregory.p.smith': Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_email test_pwd ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) ====================================================================== ERROR: test_errors (test.test_pwd.PwdTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/test/test_pwd.py", line 54, in test_errors for (n, p, u, g, gecos, d, s) in pwd.getpwall(): UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1-6: unsupported Unicode code range ====================================================================== ERROR: test_values (test.test_pwd.PwdTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/3.0.loewis-linux/build/Lib/test/test_pwd.py", line 9, in test_values entries = pwd.getpwall() UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1-6: unsupported Unicode code range make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sun Sep 9 22:25:00 2007 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 9 Sep 2007 22:25:00 +0200 (CEST) Subject: [Python-checkins] r58064 - in python/trunk: Lib/bsddb/dbtables.py Lib/bsddb/dbutils.py Lib/bsddb/test/test_dbtables.py Lib/hashlib.py Lib/md5.py Lib/sha.py Lib/test/test_hashlib.py Modules/_bsddb.c Modules/_hashopenssl.c Modules/sha256module.c Modules/sha512module.c Modules/shamodule.c Message-ID: <20070909202500.D5F141E400F@bag.python.org> Author: gregory.p.smith Date: Sun Sep 9 22:25:00 2007 New Revision: 58064 Modified: python/trunk/Lib/bsddb/dbtables.py python/trunk/Lib/bsddb/dbutils.py python/trunk/Lib/bsddb/test/test_dbtables.py python/trunk/Lib/hashlib.py python/trunk/Lib/md5.py python/trunk/Lib/sha.py python/trunk/Lib/test/test_hashlib.py python/trunk/Modules/_bsddb.c python/trunk/Modules/_hashopenssl.c python/trunk/Modules/sha256module.c python/trunk/Modules/sha512module.c python/trunk/Modules/shamodule.c Log: email address update Modified: python/trunk/Lib/bsddb/dbtables.py ============================================================================== --- python/trunk/Lib/bsddb/dbtables.py (original) +++ python/trunk/Lib/bsddb/dbtables.py Sun Sep 9 22:25:00 2007 @@ -10,7 +10,7 @@ # software has been tested, but no warranty is expressed or # implied. # -# -- Gregory P. Smith +# -- Gregory P. Smith # This provides a simple database table interface built on top of # the Python BerkeleyDB 3 interface. Modified: python/trunk/Lib/bsddb/dbutils.py ============================================================================== --- python/trunk/Lib/bsddb/dbutils.py (original) +++ python/trunk/Lib/bsddb/dbutils.py Sun Sep 9 22:25:00 2007 @@ -9,7 +9,7 @@ # software has been tested, but no warranty is expressed or # implied. # -# Author: Gregory P. Smith +# Author: Gregory P. Smith # # Note: I don't know how useful this is in reality since when a # DBLockDeadlockError happens the current transaction is supposed to be Modified: python/trunk/Lib/bsddb/test/test_dbtables.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_dbtables.py (original) +++ python/trunk/Lib/bsddb/test/test_dbtables.py Sun Sep 9 22:25:00 2007 @@ -16,7 +16,7 @@ # software has been tested, but no warranty is expressed or # implied. # -# -- Gregory P. Smith +# -- Gregory P. Smith # # $Id$ Modified: python/trunk/Lib/hashlib.py ============================================================================== --- python/trunk/Lib/hashlib.py (original) +++ python/trunk/Lib/hashlib.py Sun Sep 9 22:25:00 2007 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (C) 2005 Gregory P. Smith (greg at electricrain.com) +# Copyright (C) 2005 Gregory P. Smith (greg at krypto.org) # Licensed to PSF under a Contributor Agreement. # Modified: python/trunk/Lib/md5.py ============================================================================== --- python/trunk/Lib/md5.py (original) +++ python/trunk/Lib/md5.py Sun Sep 9 22:25:00 2007 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (C) 2005 Gregory P. Smith (greg at electricrain.com) +# Copyright (C) 2005 Gregory P. Smith (greg at krypto.org) # Licensed to PSF under a Contributor Agreement. import warnings Modified: python/trunk/Lib/sha.py ============================================================================== --- python/trunk/Lib/sha.py (original) +++ python/trunk/Lib/sha.py Sun Sep 9 22:25:00 2007 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (C) 2005 Gregory P. Smith (greg at electricrain.com) +# Copyright (C) 2005 Gregory P. Smith (greg at krypto.org) # Licensed to PSF under a Contributor Agreement. import warnings Modified: python/trunk/Lib/test/test_hashlib.py ============================================================================== --- python/trunk/Lib/test/test_hashlib.py (original) +++ python/trunk/Lib/test/test_hashlib.py Sun Sep 9 22:25:00 2007 @@ -2,7 +2,7 @@ # # $Id$ # -# Copyright (C) 2005 Gregory P. Smith (greg at electricrain.com) +# Copyright (C) 2005 Gregory P. Smith (greg at krypto.org) # Licensed to PSF under a Contributor Agreement. # Modified: python/trunk/Modules/_bsddb.c ============================================================================== --- python/trunk/Modules/_bsddb.c (original) +++ python/trunk/Modules/_bsddb.c Sun Sep 9 22:25:00 2007 @@ -39,16 +39,16 @@ * to compile with BerkeleyDB versions 3.2 through 4.2. * * This module was started by Andrew Kuchling to remove the dependency - * on SWIG in a package by Gregory P. Smith who - * based his work on a similar package by Robin Dunn - * which wrapped Berkeley DB 2.7.x. + * on SWIG in a package by Gregory P. Smith who based his work on a + * similar package by Robin Dunn which wrapped + * Berkeley DB 2.7.x. * * Development of this module then returned full circle back to Robin Dunn * who worked on behalf of Digital Creations to complete the wrapping of * the DB 3.x API and to build a solid unit test suite. Robin has * since gone onto other projects (wxPython). * - * Gregory P. Smith is once again the maintainer. + * Gregory P. Smith is once again the maintainer. * * Use the pybsddb-users at lists.sf.net mailing list for all questions. * Things can change faster than the header of this file is updated. This Modified: python/trunk/Modules/_hashopenssl.c ============================================================================== --- python/trunk/Modules/_hashopenssl.c (original) +++ python/trunk/Modules/_hashopenssl.c Sun Sep 9 22:25:00 2007 @@ -1,7 +1,7 @@ /* Module that wraps all OpenSSL hash algorithms */ /* - * Copyright (C) 2005 Gregory P. Smith (greg at electricrain.com) + * Copyright (C) 2005 Gregory P. Smith (greg at krypto.org) * Licensed to PSF under a Contributor Agreement. * * Derived from a skeleton of shamodule.c containing work performed by: Modified: python/trunk/Modules/sha256module.c ============================================================================== --- python/trunk/Modules/sha256module.c (original) +++ python/trunk/Modules/sha256module.c Sun Sep 9 22:25:00 2007 @@ -9,7 +9,7 @@ Greg Stein (gstein at lyra.org) Trevor Perrin (trevp at trevp.net) - Copyright (C) 2005 Gregory P. Smith (greg at electricrain.com) + Copyright (C) 2005 Gregory P. Smith (greg at krypto.org) Licensed to PSF under a Contributor Agreement. */ Modified: python/trunk/Modules/sha512module.c ============================================================================== --- python/trunk/Modules/sha512module.c (original) +++ python/trunk/Modules/sha512module.c Sun Sep 9 22:25:00 2007 @@ -9,7 +9,7 @@ Greg Stein (gstein at lyra.org) Trevor Perrin (trevp at trevp.net) - Copyright (C) 2005 Gregory P. Smith (greg at electricrain.com) + Copyright (C) 2005 Gregory P. Smith (greg at krypto.org) Licensed to PSF under a Contributor Agreement. */ Modified: python/trunk/Modules/shamodule.c ============================================================================== --- python/trunk/Modules/shamodule.c (original) +++ python/trunk/Modules/shamodule.c Sun Sep 9 22:25:00 2007 @@ -8,7 +8,7 @@ Andrew Kuchling (amk at amk.ca) Greg Stein (gstein at lyra.org) - Copyright (C) 2005 Gregory P. Smith (greg at electricrain.com) + Copyright (C) 2005 Gregory P. Smith (greg at krypto.org) Licensed to PSF under a Contributor Agreement. */ From python-checkins at python.org Mon Sep 10 01:30:52 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 10 Sep 2007 01:30:52 +0200 (CEST) Subject: [Python-checkins] r58065 - in sandbox/trunk/2to3: fixes/fix_print.py tests/test_fixers.py Message-ID: <20070909233052.24D861E400F@bag.python.org> Author: collin.winter Date: Mon Sep 10 01:30:51 2007 New Revision: 58065 Modified: sandbox/trunk/2to3/fixes/fix_print.py sandbox/trunk/2to3/tests/test_fixers.py Log: Fix a bug in fix_print where 'print T' where T is a tuple would be mis-translated. Modified: sandbox/trunk/2to3/fixes/fix_print.py ============================================================================== --- sandbox/trunk/2to3/fixes/fix_print.py (original) +++ sandbox/trunk/2to3/fixes/fix_print.py Mon Sep 10 01:30:51 2007 @@ -18,7 +18,9 @@ from fixes.util import Name, Call, Comma, String, is_tuple -paren_call = patcomp.compile_pattern("""atom< '(' any ')' >""") +parend_expr = patcomp.compile_pattern( + """atom< '(' [atom|STRING|NAME] ')' >""" + ) class FixPrint(basefix.BaseFix): @@ -38,11 +40,12 @@ return assert node.children[0] == Name("print") args = node.children[1:] - sep = end = file = None - if len(args) == 1 and (is_tuple(args[0]) or paren_call.match(args[0])): + if len(args) == 1 and parend_expr.match(args[0]): # We don't want to keep sticking parens around an # already-parenthesised expression. return + + sep = end = file = None if args and args[-1] == Comma(): args = args[:-1] end = " " Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Mon Sep 10 01:30:51 2007 @@ -348,9 +348,6 @@ self.check(b, a) def test_idempotency(self): - s = """print(1, 1+1, 1+1+1)""" - self.unchanged(s) - s = """print()""" self.unchanged(s) @@ -386,6 +383,11 @@ a = """print()""" self.check(b, a) + def test_tuple(self): + b = """print (a, b, c)""" + a = """print((a, b, c))""" + self.check(b, a) + # trailing commas def test_trailing_comma_1(self): From python-checkins at python.org Mon Sep 10 01:35:30 2007 From: python-checkins at python.org (collin.winter) Date: Mon, 10 Sep 2007 01:35:30 +0200 (CEST) Subject: [Python-checkins] r58066 - in sandbox/trunk/2to3: fixes/basefix.py refactor.py tests/test_fixers.py Message-ID: <20070909233530.9B16E1E4011@bag.python.org> Author: collin.winter Date: Mon Sep 10 01:35:30 2007 New Revision: 58066 Modified: sandbox/trunk/2to3/fixes/basefix.py sandbox/trunk/2to3/refactor.py sandbox/trunk/2to3/tests/test_fixers.py Log: Display fixer warnings at the end of a refactoring run, rather than inline during the run. This will make the messages much, much easier to find/read. Modified: sandbox/trunk/2to3/fixes/basefix.py ============================================================================== --- sandbox/trunk/2to3/fixes/basefix.py (original) +++ sandbox/trunk/2to3/fixes/basefix.py Mon Sep 10 01:35:30 2007 @@ -40,13 +40,16 @@ # Shortcut for access to Python grammar symbols syms = pygram.python_symbols - def __init__(self, options): + def __init__(self, options, log): """Initializer. Subclass may override. - The argument is an optparse.Values instance which can be used - to inspect the command line options. + Args: + options: an optparse.Values instance which can be used + to inspect the command line options. + log: a list to append warnings and other messages to. """ self.options = options + self.log = log self.compile_pattern() def compile_pattern(self): @@ -109,6 +112,12 @@ self.used_names.add(name) return name + def log_message(self, message): + if self.first_log: + self.first_log = False + self.log.append("### In file %s ###" % self.filename) + self.log.append(message) + def cannot_convert(self, node, reason=None): """Warn the user that a given chunk of code is not valid Python 3, but that it cannot be converted automatically. @@ -119,10 +128,10 @@ lineno = node.get_lineno() for_output = node.clone() for_output.set_prefix("") - msg = "At line %d: could not convert: %s" - self.logger.warning(msg % (lineno, for_output)) + msg = "Line %d: could not convert: %s" + self.log_message(msg % (lineno, for_output)) if reason: - self.logger.warning(reason) + self.log_message(reason) def warning(self, node, reason): """Used for warning the user about possible uncertainty in the @@ -132,7 +141,7 @@ Optional second argument is why it can't be converted. """ lineno = node.get_lineno() - self.logger.warning("At line %d: %s" % (lineno, reason)) + self.log_message("Line %d: %s" % (lineno, reason)) def start_tree(self, tree, filename): """Some fixers need to maintain tree-wide state. @@ -144,6 +153,7 @@ self.used_names = tree.used_names self.set_filename(filename) self.numbers = itertools.count(1) + self.first_log = True def finish_tree(self, tree, filename): """Some fixers need to maintain tree-wide state. Modified: sandbox/trunk/2to3/refactor.py ============================================================================== --- sandbox/trunk/2to3/refactor.py (original) +++ sandbox/trunk/2to3/refactor.py Mon Sep 10 01:35:30 2007 @@ -106,6 +106,7 @@ self.options = options self.errors = [] self.logger = logging.getLogger("RefactoringTool") + self.fixer_log = [] if self.options.print_function: del pygram.python_grammar.keywords["print"] self.driver = driver.Driver(pygram.python_grammar, @@ -142,7 +143,7 @@ fix_name, class_name) continue try: - fixer = fix_class(self.options) + fixer = fix_class(self.options, self.fixer_log) except Exception, err: self.log_error("Can't instantiate fixes.fix_%s.%s()", fix_name, class_name, exc_info=True) @@ -456,6 +457,10 @@ self.log_message("Files that %s modified:", were) for file in self.files: self.log_message(file) + if self.fixer_log: + self.log_message("Warnings/messages while refactoring:") + for message in self.fixer_log: + self.log_message(message) if self.errors: if len(self.errors) == 1: self.log_message("There was 1 error:") Modified: sandbox/trunk/2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/tests/test_fixers.py Mon Sep 10 01:35:30 2007 @@ -9,8 +9,6 @@ import support # Python imports -from StringIO import StringIO -import logging import unittest # Local imports @@ -18,22 +16,6 @@ import pytree import refactor -# We wrap the RefactoringTool's fixer objects so we can intercept -# the call to start_tree() and so modify the fixers' logging objects. -# This allows us to make sure that certain code chunks produce certain -# warnings. -class Fixer(object): - def __init__(self, fixer, handler): - self.fixer = fixer - self.handler = handler - - def __getattr__(self, attr): - return getattr(self.fixer, attr) - - def start_tree(self, tree, filename): - self.fixer.start_tree(tree, filename) - self.fixer.logger.handlers[:] = [self.handler] - class Options: def __init__(self, **kwargs): for k, v in kwargs.items(): @@ -45,17 +27,11 @@ def setUp(self): options = Options(fix=[self.fixer], print_function=False) self.refactor = refactor.RefactoringTool(options) + self.fixer_log = [] - self.logging_stream = StringIO() - sh = logging.StreamHandler(self.logging_stream) - sh.setFormatter(logging.Formatter("%(message)s")) - self.refactor.pre_order = [Fixer(f, sh) for f - in self.refactor.pre_order] - self.refactor.post_order = [Fixer(f, sh) for f - in self.refactor.post_order] - - def tearDown(self): - self.logging_stream = None + for order in (self.refactor.pre_order, self.refactor.post_order): + for fixer in order: + fixer.log = self.fixer_log def _check(self, before, after): before = support.reformat(before) @@ -68,11 +44,11 @@ tree = self._check(before, after) self.failUnless(tree.was_changed) if not ignore_warnings: - self.failUnlessEqual(self.logging_stream.getvalue(), "") + self.failUnlessEqual(self.fixer_log, []) def warns(self, before, after, message, unchanged=False): tree = self._check(before, after) - self.failUnless(message in self.logging_stream.getvalue()) + self.failUnless(message in "".join(self.fixer_log)) if not unchanged: self.failUnless(tree.was_changed) @@ -82,7 +58,7 @@ def unchanged(self, before, ignore_warnings=False): self._check(before, before) if not ignore_warnings: - self.failUnlessEqual(self.logging_stream.getvalue(), "") + self.failUnlessEqual(self.fixer_log, []) class Test_ne(FixerTestCase): From python-checkins at python.org Mon Sep 10 01:36:46 2007 From: python-checkins at python.org (gregory.p.smith) Date: Mon, 10 Sep 2007 01:36:46 +0200 (CEST) Subject: [Python-checkins] r58067 - in python/trunk: Doc/library/exceptions.rst Doc/library/socket.rst Doc/whatsnew/2.6.rst Lib/test/test_urllib2net.py Lib/urllib2.py Modules/socketmodule.c Message-ID: <20070909233646.A5F0A1E400F@bag.python.org> Author: gregory.p.smith Date: Mon Sep 10 01:36:46 2007 New Revision: 58067 Modified: python/trunk/Doc/library/exceptions.rst python/trunk/Doc/library/socket.rst python/trunk/Doc/whatsnew/2.6.rst python/trunk/Lib/test/test_urllib2net.py python/trunk/Lib/urllib2.py python/trunk/Modules/socketmodule.c Log: Change socket.error to inherit from IOError rather than being a stand alone class. This addresses the primary concern in http://bugs.python.org/issue1706815 python-dev discussion here: http://mail.python.org/pipermail/python-dev/2007-July/073749.html I chose IOError rather than EnvironmentError as the base class since socket objects are often used as transparent duck typed file objects in code already prepared to deal with IOError exceptions. also a minor fix: urllib2 - fix a couple places where IOError was raised rather than URLError. for better or worse, URLError already inherits from IOError so this won't break any existing code. test_urllib2net - replace bad ftp urls. Modified: python/trunk/Doc/library/exceptions.rst ============================================================================== --- python/trunk/Doc/library/exceptions.rst (original) +++ python/trunk/Doc/library/exceptions.rst Mon Sep 10 01:36:46 2007 @@ -170,6 +170,9 @@ This class is derived from :exc:`EnvironmentError`. See the discussion above for more information on exception instance attributes. + .. versionchanged:: 2.6 + Changed :exc:`socket.error` to use this as a base class. + .. exception:: ImportError Modified: python/trunk/Doc/library/socket.rst ============================================================================== --- python/trunk/Doc/library/socket.rst (original) +++ python/trunk/Doc/library/socket.rst Mon Sep 10 01:36:46 2007 @@ -86,6 +86,9 @@ accompanying :exc:`os.error`. See the module :mod:`errno`, which contains names for the error codes defined by the underlying operating system. + .. versionchanged:: 2.6 + :exc:`socket.error` is now a child class of :exc:`IOError`. + .. exception:: herror Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Mon Sep 10 01:36:46 2007 @@ -282,7 +282,8 @@ This section lists previously described changes that may require changes to your code: -* Everything is all in the details! +* The :mod:`socket` module exception :exc:`socket.error` now inherits from + :exc:`IOError`. .. % ====================================================================== Modified: python/trunk/Lib/test/test_urllib2net.py ============================================================================== --- python/trunk/Lib/test/test_urllib2net.py (original) +++ python/trunk/Lib/test/test_urllib2net.py Mon Sep 10 01:36:46 2007 @@ -166,8 +166,9 @@ def test_ftp(self): urls = [ - 'ftp://www.python.org/pub/python/misc/sousa.au', - 'ftp://www.python.org/pub/tmp/blat', + 'ftp://ftp.kernel.org/pub/linux/kernel/README', + 'ftp://ftp.kernel.org/pub/linux/kernel/non-existant-file', + #'ftp://ftp.kernel.org/pub/leenox/kernel/test', 'ftp://gatekeeper.research.compaq.com/pub/DEC/SRC' '/research-reports/00README-Legal-Rules-Regs', ] @@ -181,10 +182,7 @@ f.close() urls = [ 'file:'+sanepathname2url(os.path.abspath(TESTFN)), - - # XXX bug, should raise URLError - #('file://nonsensename/etc/passwd', None, urllib2.URLError) - ('file://nonsensename/etc/passwd', None, (EnvironmentError, socket.error)) + ('file:///nonsensename/etc/passwd', None, urllib2.URLError), ] self._test_urls(urls, self._extra_handlers()) finally: @@ -244,11 +242,11 @@ debug(url) try: f = urllib2.urlopen(url, req) - except (IOError, socket.error, OSError), err: + except EnvironmentError, err: debug(err) if expected_err: - msg = ("Didn't get expected error(s) %s for %s %s, got %s" % - (expected_err, url, req, err)) + msg = ("Didn't get expected error(s) %s for %s %s, got %s: %s" % + (expected_err, url, req, type(err), err)) self.assert_(isinstance(err, expected_err), msg) else: with test_support.transient_internet(): Modified: python/trunk/Lib/urllib2.py ============================================================================== --- python/trunk/Lib/urllib2.py (original) +++ python/trunk/Lib/urllib2.py Mon Sep 10 01:36:46 2007 @@ -1246,7 +1246,7 @@ import mimetypes host = req.get_host() if not host: - raise IOError, ('ftp error', 'no host given') + raise URLError, ('ftp error', 'no host given') host, port = splitport(host) if port is None: port = ftplib.FTP_PORT @@ -1292,7 +1292,7 @@ headers = mimetools.Message(sf) return addinfourl(fp, headers, req.get_full_url()) except ftplib.all_errors, msg: - raise IOError, ('ftp error', msg), sys.exc_info()[2] + raise URLError, ('ftp error', msg), sys.exc_info()[2] def connect_ftp(self, user, passwd, host, port, dirs, timeout): fw = ftpwrapper(user, passwd, host, port, dirs, timeout) Modified: python/trunk/Modules/socketmodule.c ============================================================================== --- python/trunk/Modules/socketmodule.c (original) +++ python/trunk/Modules/socketmodule.c Mon Sep 10 01:36:46 2007 @@ -4280,7 +4280,8 @@ if (m == NULL) return; - socket_error = PyErr_NewException("socket.error", NULL, NULL); + socket_error = PyErr_NewException("socket.error", + PyExc_IOError, NULL); if (socket_error == NULL) return; PySocketModuleAPI.error = socket_error; From buildbot at python.org Mon Sep 10 03:05:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 01:05:56 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo 3.0 Message-ID: <20070910010556.5EA1A1E4004@bag.python.org> The Buildbot has detected a new failure of x86 gentoo 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%203.0/builds/141 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: The web-page 'force build' button was pressed by '': Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Unknown signal 32 sincerely, -The Buildbot From buildbot at python.org Mon Sep 10 03:33:14 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 01:33:14 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 3.0 Message-ID: <20070910013314.8B9061E4004@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/29 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The web-page 'force build' button was pressed by '': Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_urllib2net ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_urllib2net.py", line 173, in test_ftp self._test_urls(urls, self._extra_handlers()) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_urllib2net.py", line 242, in _test_urls f = urllib2.urlopen(url, req) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\urllib2.py", line 378, in open response = self._open(req, data) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\urllib2.py", line 396, in _open '_open', req) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\urllib2.py", line 356, in _call_chain result = func(*args) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\urllib2.py", line 1271, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\urllib2.py", line 1316, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\urllib.py", line 783, in __init__ self.init() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\urllib.py", line 790, in init self.ftp.login(self.user, self.passwd) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\ftplib.py", line 372, in login if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\ftplib.py", line 242, in sendcmd return self.getresp() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\ftplib.py", line 208, in getresp resp = self.getmultiline() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\ftplib.py", line 198, in getmultiline nextline = self.getline() File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\ftplib.py", line 181, in getline line = self.file.readline() File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1319, in readline readahead, pending = self._read_chunk() File "c:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\io.py", line 1123, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "C:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\encodings\ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 47: ordinal not in range(128) sincerely, -The Buildbot From buildbot at python.org Mon Sep 10 03:39:34 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 01:39:34 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian 3.0 Message-ID: <20070910013934.D0AA01E4004@bag.python.org> The Buildbot has detected a new failure of S-390 Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%203.0/builds/94 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: The web-page 'force build' button was pressed by '': Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Mon Sep 10 03:51:33 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 01:51:33 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 3.0 Message-ID: <20070910015133.E0E071E401E@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%203.0/builds/83 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: The web-page 'force build' button was pressed by '': Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_ctypes test_email test_socket test_urllib2net test_xmlrpc_net ====================================================================== FAIL: test_longdouble (ctypes.test.test_callbacks.Callbacks) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ctypes/test/test_callbacks.py", line 81, in test_longdouble self.check_type(c_longdouble, 3.14) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ctypes/test/test_callbacks.py", line 22, in check_type self.failUnlessEqual(self.got_args, (arg,)) AssertionError: (2.0023623079281719e-230,) != (3.1400000000000001,) ====================================================================== FAIL: test_longdouble (ctypes.test.test_cfuncs.CFunctions) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ctypes/test/test_cfuncs.py", line 164, in test_longdouble self.failUnlessEqual(self._dll.tf_D(42.), 14.) AssertionError: -6.9387128373347339e+307 != 14.0 ====================================================================== FAIL: test_longdouble_plus (ctypes.test.test_cfuncs.CFunctions) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ctypes/test/test_cfuncs.py", line 170, in test_longdouble_plus self.failUnlessEqual(self._dll.tf_bD(0, 42.), 14.) AssertionError: 1.4022771553292213e-315 != 14.0 ====================================================================== FAIL: test_longdoubleresult (ctypes.test.test_functions.FunctionTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ctypes/test/test_functions.py", line 151, in test_longdoubleresult self.failUnlessEqual(result, 21) AssertionError: -6.937889918764659e+307 != 21 ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) ====================================================================== ERROR: testGetServBy (test.test_socket.GeneralModuleTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_socket.py", line 354, in testGetServBy raise socket.error socket.error ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 173, in test_ftp self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 242, in _test_urls f = urllib2.urlopen(url, req) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 378, in open response = self._open(req, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 396, in _open '_open', req) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 356, in _call_chain result = func(*args) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 1271, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 1316, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 783, in __init__ self.init() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 790, in init self.ftp.login(self.user, self.passwd) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ftplib.py", line 372, in login if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ftplib.py", line 242, in sendcmd return self.getresp() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ftplib.py", line 208, in getresp resp = self.getmultiline() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ftplib.py", line 198, in getmultiline nextline = self.getline() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/ftplib.py", line 181, in getline line = self.file.readline() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/io.py", line 1319, in readline readahead, pending = self._read_chunk() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/io.py", line 1123, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 47: ordinal not in range(128) ====================================================================== ERROR: test_current_time (test.test_xmlrpc_net.CurrentTimeTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_xmlrpc_net.py", line 14, in test_current_time t0 = server.currentTime.getCurrentTime() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/xmlrpclib.py", line 1091, in __call__ return self.__send(self.__name, args) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/xmlrpclib.py", line 1349, in __request verbose=self.__verbose File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/xmlrpclib.py", line 1121, in request resp = http_conn.getresponse() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 955, in getresponse response.begin() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 396, in begin version, status, reason = self._read_status() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 352, in _read_status line = str(self.fp.readline(), "iso-8859-1") File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: [Errno 104] Connection reset by peer make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Sep 10 04:03:26 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 02:03:26 +0000 Subject: [Python-checkins] buildbot failure in alpha Debian 3.0 Message-ID: <20070910020326.EE1C51E4004@bag.python.org> The Buildbot has detected a new failure of alpha Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Debian%203.0/builds/10 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-alpha Build Reason: The web-page 'force build' button was pressed by '': Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From python-checkins at python.org Mon Sep 10 04:42:37 2007 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 10 Sep 2007 04:42:37 +0200 (CEST) Subject: [Python-checkins] r58080 - python/branches/alex-py3k/Modules/_picklemodule.c Message-ID: <20070910024237.27CE11E4004@bag.python.org> Author: alexandre.vassalotti Date: Mon Sep 10 04:42:36 2007 New Revision: 58080 Modified: python/branches/alex-py3k/Modules/_picklemodule.c Log: Convert PyString calls to PyUnicode. This fixes almost all the unit tests. Modified: python/branches/alex-py3k/Modules/_picklemodule.c ============================================================================== --- python/branches/alex-py3k/Modules/_picklemodule.c (original) +++ python/branches/alex-py3k/Modules/_picklemodule.c Mon Sep 10 04:42:36 2007 @@ -114,7 +114,7 @@ static PyObject *two_tuple; #define INIT_STR(S) \ - if (!(S = PyString_InternFromString(#S))) \ + if (!(S = PyUnicode_InternFromString(#S))) \ return -1; /* Static reference to commonly used self's methods. */ @@ -416,7 +416,7 @@ static int write_other(PicklerObject *self, const char *s, Py_ssize_t _n) { - PyObject *py_str, *result = NULL; + PyObject *bytes, *result = NULL; int n; if (_n > INT_MAX) @@ -425,8 +425,8 @@ if (s == NULL) { if (!(self->buf_size)) return 0; - py_str = PyString_FromStringAndSize(self->write_buf, self->buf_size); - if (!py_str) + bytes = PyBytes_FromStringAndSize(self->write_buf, self->buf_size); + if (!bytes) return -1; } else { @@ -436,7 +436,7 @@ } if (n > WRITE_BUF_SIZE) { - if (!(py_str = PyString_FromStringAndSize(s, n))) + if (!(bytes = PyBytes_FromStringAndSize(s, n))) return -1; } else { @@ -447,7 +447,7 @@ } /* object with write method */ - ARG_TUP(self, py_str); + ARG_TUP(self, bytes); if (self->arg) { result = PyObject_Call(self->write, self->arg, NULL); FREE_ARG_TUP(self); @@ -479,7 +479,7 @@ Py_XDECREF(self->last_string); self->last_string = str; - if (!(*s = PyString_AsString(str))) + if (!(*s = PyBytes_AsString(str))) return -1; return n; } @@ -494,13 +494,13 @@ return -1; } - if ((str_size = PyString_Size(str)) < 0) + if ((str_size = PyBytes_Size(str)) < 0) return -1; Py_XDECREF(self->last_string); self->last_string = str; - if (!(*s = PyString_AsString(str))) + if (!(*s = PyBytes_AsString(str))) return -1; return str_size; @@ -513,9 +513,9 @@ static char * pystrndup(const char *s, int n) { - char *r = (char *) malloc(n + 1); + char *r = (char *)malloc(n + 1); if (r == NULL) - return (char *) PyErr_NoMemory(); + return (char *)PyErr_NoMemory(); memcpy(r, s, n); r[n] = 0; return r; @@ -661,6 +661,8 @@ else return NULL; + /* XXX: This seems only necessary for older Python versions without + the __module__ attribute. */ if (!(modules_dict = PySys_GetObject("modules"))) return NULL; @@ -864,8 +866,7 @@ goto finally; } nbits = _PyLong_NumBits(args); - /* XXX Shouldn't it be sizeof(size_t), instead? */ - if (nbits == (size_t) - 1 && PyErr_Occurred()) + if (nbits == (size_t)-1 && PyErr_Occurred()) goto finally; /* How many bytes do we need? There are nbits >> 3 full * bytes of data, and nbits & 7 leftover bits. If there @@ -883,14 +884,14 @@ */ nbytes = (nbits >> 3) + 1; if (nbytes > INT_MAX) { - PyErr_SetString(PyExc_OverflowError, "long too large " - "to pickle"); + PyErr_SetString(PyExc_OverflowError, + "long too large to pickle"); goto finally; } - repr = PyString_FromStringAndSize(NULL, (int)nbytes); + repr = PyUnicode_FromStringAndSize(NULL, (int)nbytes); if (repr == NULL) goto finally; - pdata = (unsigned char *)PyString_AS_STRING(repr); + pdata = (unsigned char *)PyUnicode_AsString(repr); i = _PyLong_AsByteArray((PyLongObject *)args, pdata, nbytes, 1 /* little endian */ , 1 /* signed */ ); @@ -934,14 +935,14 @@ if (!(repr = PyObject_Repr(args))) goto finally; - if ((size = PyString_Size(repr)) < 0) + if ((size = PyUnicode_GetSize(repr)) < 0) goto finally; if (self->write_func(self, &l, 1) < 0) goto finally; if (self->write_func(self, - PyString_AS_STRING((PyStringObject *)repr), + PyUnicode_AsString(repr), size) < 0) goto finally; @@ -1067,13 +1068,13 @@ static const char *hexdigit = "0123456789ABCDEF"; - repr = PyString_FromStringAndSize(NULL, 6 * size); + repr = PyBytes_FromStringAndSize(NULL, 6 * size); if (repr == NULL) return NULL; if (size == 0) return repr; - p = q = PyString_AS_STRING(repr); + p = q = PyBytes_AsString(repr); while (size-- > 0) { Py_UNICODE ch = *s++; /* Map 16-bit characters to '\uxxxx' */ @@ -1090,7 +1091,7 @@ *p++ = (char)ch; } *p = '\0'; - _PyString_Resize(&repr, p - q); + PyBytes_Resize(repr, p - q); return repr; } @@ -1107,15 +1108,14 @@ char *repr_str; static char string = UNICODE; - repr = - modified_EncodeRawUnicodeEscape(PyUnicode_AS_UNICODE(args), - PyUnicode_GET_SIZE(args)); + repr = modified_EncodeRawUnicodeEscape(PyUnicode_AS_UNICODE(args), + PyUnicode_GET_SIZE(args)); if (!repr) return -1; - if ((len = PyString_Size(repr)) < 0) + if ((len = PyBytes_Size(repr)) < 0) goto error; - repr_str = PyString_AS_STRING((PyStringObject *)repr); + repr_str = PyBytes_AsString(repr); if (self->write_func(self, &string, 1) < 0) goto error; @@ -1135,7 +1135,7 @@ if (!(repr = PyUnicode_AsUTF8String(args))) return -1; - if ((size = PyString_Size(repr)) < 0) + if ((size = PyBytes_Size(repr)) < 0) goto error; if (size > INT_MAX) return -1; /* string too large */ @@ -1148,7 +1148,7 @@ if (self->write_func(self, c_str, len) < 0) goto error; - if (self->write_func(self, PyString_AS_STRING(repr), size) < 0) + if (self->write_func(self, PyBytes_AsString(repr), size) < 0) goto error; Py_DECREF(repr); @@ -1597,7 +1597,7 @@ static int save_global(PicklerObject *self, PyObject *args, PyObject *name) { - PyObject *global_name = 0, *module = 0, *mod = 0, *klass = 0; + PyObject *global_name = NULL, *module = NULL, *mod = NULL, *klass = NULL; char *name_str, *module_str; int module_size, name_size, res = -1; @@ -1615,12 +1615,12 @@ if (!(module = whichmodule(args, global_name))) goto finally; - if ((module_size = PyString_Size(module)) < 0 || - (name_size = PyString_Size(global_name)) < 0) + if ((module_size = PyUnicode_GetSize(module)) < 0 || + (name_size = PyUnicode_GetSize(global_name)) < 0) goto finally; - module_str = PyString_AS_STRING((PyStringObject *) module); - name_str = PyString_AS_STRING((PyStringObject *) global_name); + module_str = PyUnicode_AsString(module); + name_str = PyUnicode_AsString(global_name); /* XXX This can be doing a relative import. Clearly it shouldn't, * but I don't know how to stop it. :-( */ @@ -1735,7 +1735,7 @@ static int save_pers(PicklerObject *self, PyObject *args, PyObject *f) { - PyObject *pid = 0; + PyObject *pid = NULL; int size, res = -1; static char persid = PERSID, binpersid = BINPERSID; @@ -1751,7 +1751,7 @@ if (pid != Py_None) { if (!self->bin) { - if (!PyString_Check(pid)) { + if (!PyUnicode_Check(pid)) { PyErr_SetString(PicklingError, "persistent id must be string"); goto finally; } @@ -1759,12 +1759,10 @@ if (self->write_func(self, &persid, 1) < 0) goto finally; - if ((size = PyString_Size(pid)) < 0) + if ((size = PyUnicode_GetSize(pid)) < 0) goto finally; - if (self->write_func(self, - PyString_AS_STRING((PyStringObject *) pid), - size) < 0) + if (self->write_func(self, PyUnicode_AsString(pid), size) < 0) goto finally; if (self->write_func(self, "\n", 1) < 0) @@ -1839,8 +1837,8 @@ use_newobj = 0; } else { - use_newobj = PyString_Check(temp) && - strcmp(PyString_AS_STRING(temp), "__newobj__") == 0; + use_newobj = PyUnicode_Check(temp) && + strcmp(PyUnicode_AsString(temp), "__newobj__") == 0; Py_DECREF(temp); } } @@ -1852,7 +1850,7 @@ /* Sanity checks. */ n = PyTuple_Size(argtup); if (n < 1) { - PyErr_SetString(PicklingError, "__newobj__ arglist " "is empty"); + PyErr_SetString(PicklingError, "__newobj__ arglist is empty"); return -1; } @@ -1942,7 +1940,7 @@ save(PicklerObject *self, PyObject *obj, int pers_save) { PyTypeObject *type; - PyObject *py_ob_id = 0, *__reduce__ = 0, *t = 0; + PyObject *py_ob_id = NULL, *__reduce__ = NULL, *t = NULL; PyObject *arg_tup; PyObject *pers_func = NULL; int res = -1; @@ -2056,7 +2054,7 @@ * copy_reg.dispatch_table, the object's __reduce_ex__ method, * or the object's __reduce__ method. */ - __reduce__ = PyDict_GetItem(dispatch_table, (PyObject *) type); + __reduce__ = PyDict_GetItem(dispatch_table, (PyObject *)type); if (__reduce__ != NULL) { Py_INCREF(__reduce__); Py_INCREF(obj); @@ -3055,14 +3053,14 @@ return -1; if (len < 2) return bad_readline(); - module_name = PyString_FromStringAndSize(s, len - 1); + module_name = PyUnicode_FromStringAndSize(s, len - 1); if (!module_name) return -1; if ((len = self->readline_func(self, &s)) >= 0) { if (len < 2) return bad_readline(); - if ((class_name = PyString_FromStringAndSize(s, len - 1))) { + if ((class_name = PyUnicode_FromStringAndSize(s, len - 1))) { class = find_class(module_name, class_name, self->find_class); Py_DECREF(class_name); } @@ -3146,7 +3144,7 @@ return -1; if (len < 2) return bad_readline(); - module_name = PyString_FromStringAndSize(s, len - 1); + module_name = PyUnicode_FromStringAndSize(s, len - 1); if (!module_name) return -1; @@ -3155,7 +3153,7 @@ Py_DECREF(module_name); return bad_readline(); } - if ((class_name = PyString_FromStringAndSize(s, len - 1))) { + if ((class_name = PyUnicode_FromStringAndSize(s, len - 1))) { class = find_class(module_name, class_name, self->find_class); Py_DECREF(class_name); } @@ -3438,8 +3436,8 @@ * confirm that pair is really a 2-tuple of strings. */ if (!PyTuple_Check(pair) || PyTuple_Size(pair) != 2 || - !PyString_Check(module_name = PyTuple_GET_ITEM(pair, 0)) || - !PyString_Check(class_name = PyTuple_GET_ITEM(pair, 1))) { + !PyUnicode_Check(module_name = PyTuple_GET_ITEM(pair, 0)) || + !PyUnicode_Check(class_name = PyTuple_GET_ITEM(pair, 1))) { Py_DECREF(py_code); PyErr_Format(PyExc_ValueError, "_inverted_registry[%ld] " "isn't a 2-tuple of strings", code); @@ -3540,7 +3538,7 @@ static int do_append(UnpicklerObject *self, int x) { - PyObject *value = 0, *list = 0, *append_method = 0; + PyObject *value = NULL, *list = NULL, *append_method = NULL; static PyObject *append = NULL; int len, i; @@ -3899,7 +3897,6 @@ break; continue; -#ifdef Py_USING_UNICODE case UNICODE: if (load_unicode(self) < 0) break; @@ -3909,7 +3906,6 @@ if (load_binunicode(self) < 0) break; continue; -#endif case EMPTY_TUPLE: if (load_counted_tuple(self, 0) < 0) @@ -4106,7 +4102,7 @@ default: pickle_ErrFormat(UnpicklingError, - "invalid load key, '%s'.", "c", s[0]); + "invalid load key, '%s'.", "c", s[0]); return NULL; } From python-checkins at python.org Mon Sep 10 05:40:55 2007 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 10 Sep 2007 05:40:55 +0200 (CEST) Subject: [Python-checkins] r58081 - python/branches/alex-py3k/Modules/_picklemodule.c Message-ID: <20070910034055.DC40F1E4004@bag.python.org> Author: alexandre.vassalotti Date: Mon Sep 10 05:40:54 2007 New Revision: 58081 Modified: python/branches/alex-py3k/Modules/_picklemodule.c Log: Convert pickle_ErrFormat() to use PyUnicode. Fix the two remaining failing tests, due to PyBytes_AsString() failing when given a zero-length bytes string. Modified: python/branches/alex-py3k/Modules/_picklemodule.c ============================================================================== --- python/branches/alex-py3k/Modules/_picklemodule.c (original) +++ python/branches/alex-py3k/Modules/_picklemodule.c Mon Sep 10 05:40:54 2007 @@ -388,13 +388,13 @@ va_end(va); if (format && !args) return NULL; - if (stringformat && !(retval = PyString_FromString(stringformat))) + if (stringformat && !(retval = PyUnicode_FromString(stringformat))) return NULL; if (retval) { if (args) { PyObject *v; - v = PyString_Format(retval, args); + v = PyUnicode_Format(retval, args); Py_DECREF(retval); Py_DECREF(args); if (!v) @@ -463,12 +463,13 @@ static Py_ssize_t read_other(UnpicklerObject *self, char **s, Py_ssize_t n) { - PyObject *bytes, *str = 0; - - if (!(bytes = PyInt_FromSsize_t(n))) + PyObject *len, *str = NULL; + + len = PyInt_FromSsize_t(n); + if (len == NULL) return -1; - ARG_TUP(self, bytes); + ARG_TUP(self, len); if (self->arg) { str = PyObject_Call(self->read, self->arg, NULL); FREE_ARG_TUP(self); @@ -479,8 +480,11 @@ Py_XDECREF(self->last_string); self->last_string = str; - if (!(*s = PyBytes_AsString(str))) + *s = PyBytes_AsString(str); + /* PyBytes_AsString returns NULL if given a zero-length bytes string. */ + if (*s == NULL && PyBytes_Size(str) != 0) return -1; + return n; } From python-checkins at python.org Mon Sep 10 05:51:28 2007 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 10 Sep 2007 05:51:28 +0200 (CEST) Subject: [Python-checkins] r58082 - python/branches/alex-py3k/Modules/_picklemodule.c Message-ID: <20070910035128.7B9181E4004@bag.python.org> Author: alexandre.vassalotti Date: Mon Sep 10 05:51:28 2007 New Revision: 58082 Modified: python/branches/alex-py3k/Modules/_picklemodule.c Log: Remove unnecessary symbolic constants. Modified: python/branches/alex-py3k/Modules/_picklemodule.c ============================================================================== --- python/branches/alex-py3k/Modules/_picklemodule.c (original) +++ python/branches/alex-py3k/Modules/_picklemodule.c Mon Sep 10 05:51:28 2007 @@ -4492,11 +4492,7 @@ PyMODINIT_FUNC init_pickle(void) { - PyObject *m, *d, *v; - Py_ssize_t i; - char *rev = "$Revision: 57481 $"; - PyObject *format_version; - PyObject *compatible_formats; + PyObject *m, *d; if (PyType_Ready(&Unpickler_Type) < 0) return; @@ -4513,31 +4509,6 @@ PyModule_AddObject(m, "Pickler", (PyObject *)&Pickler_Type); PyModule_AddObject(m, "Unpickler", (PyObject *)&Unpickler_Type); - /* Add some symbolic constants to the module */ d = PyModule_GetDict(m); - v = PyString_FromString(rev); - PyDict_SetItemString(d, "__version__", v); - Py_XDECREF(v); - - if (init_stuff(d) < 0) - return; - - i = PyModule_AddIntConstant(m, "HIGHEST_PROTOCOL", HIGHEST_PROTOCOL); - if (i < 0) - return; - - /* These are purely informational; no code uses them. */ - /* File format version we write. */ - format_version = PyString_FromString("2.0"); - /* Format versions we can read. */ - compatible_formats = Py_BuildValue("[sssss]", - "1.0", /* Original protocol 0 */ - "1.1", /* Protocol 0 + INST */ - "1.2", /* Original protocol 1 */ - "1.3", /* Protocol 1 + BINFLOAT */ - "2.0"); /* Original protocol 2 */ - PyDict_SetItemString(d, "format_version", format_version); - PyDict_SetItemString(d, "compatible_formats", compatible_formats); - Py_XDECREF(format_version); - Py_XDECREF(compatible_formats); + init_stuff(d); } From python-checkins at python.org Mon Sep 10 05:52:31 2007 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 10 Sep 2007 05:52:31 +0200 (CEST) Subject: [Python-checkins] r58083 - python/branches/alex-py3k/Lib/pickle.py Message-ID: <20070910035231.28CF81E4004@bag.python.org> Author: alexandre.vassalotti Date: Mon Sep 10 05:52:30 2007 New Revision: 58083 Modified: python/branches/alex-py3k/Lib/pickle.py Log: Use the accelerator module if available, in pickle.py. Modified: python/branches/alex-py3k/Lib/pickle.py ============================================================================== --- python/branches/alex-py3k/Lib/pickle.py (original) +++ python/branches/alex-py3k/Lib/pickle.py Mon Sep 10 05:52:30 2007 @@ -1299,12 +1299,19 @@ n -= 1 << (nbytes * 8) return n +# Use the accelerator module if available. +# XXX: Don't overload bindly, for testing the reference Python implementation +try: + from _pickle import * +except ImportError: + pass + # Shorthands -def dump(obj, file, protocol=None): +def dump(obj, file, protocol=2): Pickler(file, protocol).dump(obj) -def dumps(obj, protocol=None): +def dumps(obj, protocol=2): f = io.BytesIO() Pickler(f, protocol).dump(obj) res = f.getvalue() From buildbot at python.org Mon Sep 10 08:02:23 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 06:02:23 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20070910060223.9CEC51E4016@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/1862 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: The web-page 'force build' button was pressed by '': Build Source Stamp: [branch trunk] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Mon Sep 10 08:18:32 2007 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 10 Sep 2007 08:18:32 +0200 (CEST) Subject: [Python-checkins] r58084 - python/trunk/Lib/test/test_pipes.py Message-ID: <20070910061832.F3BA21E4002@bag.python.org> Author: martin.v.loewis Date: Mon Sep 10 08:18:32 2007 New Revision: 58084 Modified: python/trunk/Lib/test/test_pipes.py Log: tr a-z A-Z does not work on Solaris (would require /usr/xpg4/bin/tr); make the character ranges explicit. Modified: python/trunk/Lib/test/test_pipes.py ============================================================================== --- python/trunk/Lib/test/test_pipes.py (original) +++ python/trunk/Lib/test/test_pipes.py Mon Sep 10 08:18:32 2007 @@ -9,6 +9,9 @@ TESTFN2 = TESTFN + "2" +# tr a-z A-Z is not portable, so make the ranges explicit +s_command = 'tr %s %s' % (string.ascii_lowercase, string.ascii_uppercase) + class SimplePipeTests(unittest.TestCase): def tearDown(self): for f in (TESTFN, TESTFN2): @@ -16,7 +19,7 @@ def testSimplePipe1(self): t = pipes.Template() - t.append('tr a-z A-Z', pipes.STDIN_STDOUT) + t.append(s_command, pipes.STDIN_STDOUT) f = t.open(TESTFN, 'w') f.write('hello world #1') f.close() @@ -25,14 +28,14 @@ def testSimplePipe2(self): file(TESTFN, 'w').write('hello world #2') t = pipes.Template() - t.append('tr a-z A-Z < $IN > $OUT', pipes.FILEIN_FILEOUT) + t.append(s_command + ' < $IN > $OUT', pipes.FILEIN_FILEOUT) t.copy(TESTFN, TESTFN2) self.assertEqual(open(TESTFN2).read(), 'HELLO WORLD #2') def testSimplePipe3(self): file(TESTFN, 'w').write('hello world #2') t = pipes.Template() - t.append('tr a-z A-Z < $IN', pipes.FILEIN_STDOUT) + t.append(s_command + ' < $IN', pipes.FILEIN_STDOUT) self.assertEqual(t.open(TESTFN, 'r').read(), 'HELLO WORLD #2') def testEmptyPipeline1(self): From buildbot at python.org Mon Sep 10 08:45:38 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 06:45:38 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20070910064538.841381E4002@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/795 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_xmlrpc make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Sep 10 09:05:59 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 07:05:59 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20070910070559.E8E7B1E4002@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/193 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_bsddb3 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Mon Sep 10 12:21:22 2007 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 10 Sep 2007 12:21:22 +0200 (CEST) Subject: [Python-checkins] r58086 - python/trunk/Tools/msi/msi.py Message-ID: <20070910102122.712781E4002@bag.python.org> Author: martin.v.loewis Date: Mon Sep 10 12:21:22 2007 New Revision: 58086 Modified: python/trunk/Tools/msi/msi.py Log: Take chm file from build/htmlhelp/pydoc.chm. Modified: python/trunk/Tools/msi/msi.py ============================================================================== --- python/trunk/Tools/msi/msi.py (original) +++ python/trunk/Tools/msi/msi.py Mon Sep 10 12:21:22 2007 @@ -1048,7 +1048,7 @@ htmlfiles.set_current() lib = PyDirectory(db, cab, root, "Doc", "Doc", "DOC|Doc") lib.start_component("documentation", keyfile="Python%s%s.chm" % (major,minor)) - lib.add_file("Python%s%s.chm" % (major, minor)) + lib.add_file("Python%s%s.chm" % (major, minor), src="build/htmlhelp/pydoc.chm") cab.commit(db) From python-checkins at python.org Mon Sep 10 12:22:05 2007 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 10 Sep 2007 12:22:05 +0200 (CEST) Subject: [Python-checkins] r58087 - python/trunk/Tools/buildbot/buildmsi.bat Message-ID: <20070910102205.AE54B1E4002@bag.python.org> Author: martin.v.loewis Date: Mon Sep 10 12:22:05 2007 New Revision: 58087 Added: python/trunk/Tools/buildbot/buildmsi.bat (contents, props changed) Log: Beginnings of a "build MSI" step. Added: python/trunk/Tools/buildbot/buildmsi.bat ============================================================================== --- (empty file) +++ python/trunk/Tools/buildbot/buildmsi.bat Mon Sep 10 12:22:05 2007 @@ -0,0 +1,10 @@ + at rem Used by the buildbot "buildmsi" step. +cmd /c Tools\buildbot\external.bat +call "%VS71COMNTOOLS%vsvars32.bat" +cmd /q/c Tools\buildbot\kill_python.bat +devenv.com /useenv /build Release PCbuild\pcbuild.sln +c:\cygwin\bin\bash.exe -c 'cd Doc;make PYTHON=python2.5 htmlhelp' +"%ProgramFiles%\HTML Help Workshop\hhc.exe Doc\build\htmlhelp\pydoc.hhp +cd Tools\msi +del *.msi +%HOST_PYTHON% msi.py From python-checkins at python.org Mon Sep 10 15:19:10 2007 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 10 Sep 2007 15:19:10 +0200 (CEST) Subject: [Python-checkins] r58088 - python/trunk/Doc/Makefile Message-ID: <20070910131910.9A5FD1E4002@bag.python.org> Author: martin.v.loewis Date: Mon Sep 10 15:19:10 2007 New Revision: 58088 Modified: python/trunk/Doc/Makefile Log: Allow making update with no prior checkout. Modified: python/trunk/Doc/Makefile ============================================================================== --- python/trunk/Doc/Makefile (original) +++ python/trunk/Doc/Makefile Mon Sep 10 15:19:10 2007 @@ -32,7 +32,7 @@ svn checkout $(SVNROOT)/external/Pygments-0.8.1/pygments tools/pygments; \ fi -update: +update: checkout svn update tools/sphinx svn update tools/docutils svn update tools/pygments From python-checkins at python.org Mon Sep 10 15:20:03 2007 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 10 Sep 2007 15:20:03 +0200 (CEST) Subject: [Python-checkins] r58089 - python/trunk/Tools/buildbot/buildmsi.bat Message-ID: <20070910132003.7E0241E4002@bag.python.org> Author: martin.v.loewis Date: Mon Sep 10 15:20:03 2007 New Revision: 58089 Modified: python/trunk/Tools/buildbot/buildmsi.bat Log: Update before making htmlhelp. Modified: python/trunk/Tools/buildbot/buildmsi.bat ============================================================================== --- python/trunk/Tools/buildbot/buildmsi.bat (original) +++ python/trunk/Tools/buildbot/buildmsi.bat Mon Sep 10 15:20:03 2007 @@ -3,7 +3,7 @@ call "%VS71COMNTOOLS%vsvars32.bat" cmd /q/c Tools\buildbot\kill_python.bat devenv.com /useenv /build Release PCbuild\pcbuild.sln -c:\cygwin\bin\bash.exe -c 'cd Doc;make PYTHON=python2.5 htmlhelp' +c:\cygwin\bin\bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp' "%ProgramFiles%\HTML Help Workshop\hhc.exe Doc\build\htmlhelp\pydoc.hhp cd Tools\msi del *.msi From python-checkins at python.org Mon Sep 10 15:30:38 2007 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 10 Sep 2007 15:30:38 +0200 (CEST) Subject: [Python-checkins] r58090 - python/trunk/Tools/buildbot/buildmsi.bat Message-ID: <20070910133038.CC4E91E4002@bag.python.org> Author: martin.v.loewis Date: Mon Sep 10 15:30:38 2007 New Revision: 58090 Modified: python/trunk/Tools/buildbot/buildmsi.bat Log: Require that bash.exe is on the path, along with the rest of Cygwin. Modified: python/trunk/Tools/buildbot/buildmsi.bat ============================================================================== --- python/trunk/Tools/buildbot/buildmsi.bat (original) +++ python/trunk/Tools/buildbot/buildmsi.bat Mon Sep 10 15:30:38 2007 @@ -3,7 +3,7 @@ call "%VS71COMNTOOLS%vsvars32.bat" cmd /q/c Tools\buildbot\kill_python.bat devenv.com /useenv /build Release PCbuild\pcbuild.sln -c:\cygwin\bin\bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp' +bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp' "%ProgramFiles%\HTML Help Workshop\hhc.exe Doc\build\htmlhelp\pydoc.hhp cd Tools\msi del *.msi From buildbot at python.org Mon Sep 10 16:01:50 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 14:01:50 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20070910140151.1CC751E4002@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/195 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_xmlrpc ====================================================================== ERROR: test_fail_no_info (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_xmlrpc.py", line 497, in test_fail_no_info p.pow(6,8) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1157, in __call__ return self.__send(self.__name, args) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1447, in __request verbose=self.__verbose File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1195, in request errcode, errmsg, headers = h.getreply() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 1005, in getreply response = self._conn.getresponse() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 931, in getresponse response.begin() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 415, in begin self.msg = HTTPMessage(self.fp, 0) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/mimetools.py", line 16, in __init__ rfc822.Message.__init__(self, fp, seekable) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/rfc822.py", line 104, in __init__ self.readheaders() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 271, in readheaders line = self.fp.readline() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/socket.py", line 351, in readline data = recv(1) error: [Errno 104] Connection reset by peer ====================================================================== ERROR: test_fail_with_info (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_xmlrpc.py", line 517, in test_fail_with_info p.pow(6,8) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1157, in __call__ return self.__send(self.__name, args) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1447, in __request verbose=self.__verbose File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/xmlrpclib.py", line 1195, in request errcode, errmsg, headers = h.getreply() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 1005, in getreply response = self._conn.getresponse() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 931, in getresponse response.begin() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 415, in begin self.msg = HTTPMessage(self.fp, 0) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/mimetools.py", line 16, in __init__ rfc822.Message.__init__(self, fp, seekable) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/rfc822.py", line 104, in __init__ self.readheaders() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/httplib.py", line 271, in readheaders line = self.fp.readline() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/socket.py", line 351, in readline data = recv(1) error: [Errno 104] Connection reset by peer make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Sep 10 16:04:43 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 14:04:43 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20070910140443.627571E4010@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2271 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_urllib2 test_urllib2net ====================================================================== ERROR: test_trivial (test.test_urllib2.TrivialTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2.py", line 19, in test_trivial self.assertRaises(ValueError, urllib2.urlopen, 'bogus url') File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/unittest.py", line 329, in failUnlessRaises callableObj(*args, **kwargs) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_file (test.test_urllib2.HandlerTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2.py", line 619, in test_file r = h.file_open(Request(url)) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 1204, in file_open return self.open_local_file(req) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 1223, in open_local_file localfile = url2pathname(file) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 55, in url2pathname return unquote(pathname) TypeError: 'NoneType' object is not callable ====================================================================== ERROR: test_http (test.test_urllib2.HandlerTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2.py", line 725, in test_http r.read; r.readline # wrapped MockFile methods AttributeError: addinfourl instance has no attribute 'read' ====================================================================== ERROR: test_build_opener (test.test_urllib2.MiscTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2.py", line 1031, in test_build_opener o = build_opener(FooHandler, BarHandler) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: testURLread (test.test_urllib2net.URLTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 24, in testURLread f = urllib2.urlopen("http://www.python.org/") File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_bad_address (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 147, in test_bad_address urllib2.urlopen, "http://www.python.invalid./") File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/unittest.py", line 329, in failUnlessRaises callableObj(*args, **kwargs) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_basic (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 105, in test_basic open_url = urllib2.urlopen("http://www.python.org/") File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_geturl (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 129, in test_geturl open_url = urllib2.urlopen(URL) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_info (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 116, in test_info open_url = urllib2.urlopen("http://www.python.org/") File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_file (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 187, in test_file self._test_urls(urls, self._extra_handlers()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 235, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 175, in test_ftp self._test_urls(urls, self._extra_handlers()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 235, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 199, in test_http self._test_urls(urls, self._extra_handlers()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 235, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_range (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 160, in test_range result = urllib2.urlopen(req) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_close (test.test_urllib2net.CloseSocketTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 76, in test_close response = urllib2.urlopen("http://www.python.org/") File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 304, in test_ftp_NoneNodefault u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=None) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 298, in test_ftp_NoneWithdefault u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=None) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 308, in test_ftp_Value u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=60) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 291, in test_ftp_basic u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/") File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 287, in test_http_NoneNodefault u = urllib2.urlopen("http://www.python.org", timeout=None) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 277, in test_http_NoneWithdefault u = urllib2.urlopen("http://www.python.org", timeout=None) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 283, in test_http_Value u = urllib2.urlopen("http://www.python.org", timeout=120) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_urllib2net.py", line 270, in test_http_basic u = urllib2.urlopen("http://www.python.org") File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib2.py", line 670, in __init__ proxies = getproxies() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/urllib.py", line 1276, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' sincerely, -The Buildbot From buildbot at python.org Mon Sep 10 17:00:44 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 15:00:44 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070910150044.65E761E4014@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/32 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_xmlrpc sincerely, -The Buildbot From python-checkins at python.org Mon Sep 10 18:36:32 2007 From: python-checkins at python.org (gregory.p.smith) Date: Mon, 10 Sep 2007 18:36:32 +0200 (CEST) Subject: [Python-checkins] r58091 - python/trunk/setup.py Message-ID: <20070910163632.61BF31E4002@bag.python.org> Author: gregory.p.smith Date: Mon Sep 10 18:36:32 2007 New Revision: 58091 Modified: python/trunk/setup.py Log: Don't allow BerkeleyDB 4.6.x as the current 4.6.19 release is prone to lockups. We'll reenable it once a good 4.6.x release exists. Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Mon Sep 10 18:36:32 2007 @@ -663,7 +663,9 @@ # a release. Most open source OSes come with one or more # versions of BerkeleyDB already installed. - max_db_ver = (4, 6) + # XXX(gps) - Do not allow BerkeleyDB 4.6.x until Oracle fixes + # the DB_HASH lockup bug that is present in 4.6.19. + max_db_ver = (4, 5) min_db_ver = (3, 3) db_setup_debug = False # verbose debug prints from this script? @@ -681,7 +683,7 @@ '/sw/include/db3', ] # 4.x minor number specific paths - for x in (0,1,2,3,4,5,6): + for x in range(max_db_ver[1]+1): db_inc_paths.append('/usr/include/db4%d' % x) db_inc_paths.append('/usr/include/db4.%d' % x) db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x) From python-checkins at python.org Mon Sep 10 23:38:27 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 10 Sep 2007 23:38:27 +0200 (CEST) Subject: [Python-checkins] r58096 - in python/trunk: Lib/test/list_tests.py Misc/NEWS Objects/listobject.c Message-ID: <20070910213827.975821E400F@bag.python.org> Author: brett.cannon Date: Mon Sep 10 23:38:27 2007 New Revision: 58096 Modified: python/trunk/Lib/test/list_tests.py python/trunk/Misc/NEWS python/trunk/Objects/listobject.c Log: Fix a possible segfault from recursing too deep to get the repr of a list. Closes issue #1096. Modified: python/trunk/Lib/test/list_tests.py ============================================================================== --- python/trunk/Lib/test/list_tests.py (original) +++ python/trunk/Lib/test/list_tests.py Mon Sep 10 23:38:27 2007 @@ -46,6 +46,11 @@ self.assertEqual(str(a2), "[0, 1, 2, [...], 3]") self.assertEqual(repr(a2), "[0, 1, 2, [...], 3]") + l0 = [] + for i in xrange(sys.getrecursionlimit() + 100): + l0 = [l0] + self.assertRaises(RuntimeError, repr, l0) + def test_print(self): d = self.type2test(xrange(200)) d.append(d) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Sep 10 23:38:27 2007 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Issue #1096: Prevent a segfault from getting the repr of a very deeply nested + list by using the recursion counter. + - Issue #1202533: Fix infinite recursion calls triggered by calls to PyObject_Call() never calling back out to Python code to trigger recursion depth updates/checks. Required the creation of a static RuntimeError Modified: python/trunk/Objects/listobject.c ============================================================================== --- python/trunk/Objects/listobject.c (original) +++ python/trunk/Objects/listobject.c Mon Sep 10 23:38:27 2007 @@ -324,7 +324,10 @@ so must refetch the list size on each iteration. */ for (i = 0; i < Py_Size(v); ++i) { int status; + if (Py_EnterRecursiveCall(" while getting the repr of a list")) + goto Done; s = PyObject_Repr(v->ob_item[i]); + Py_LeaveRecursiveCall(); if (s == NULL) goto Done; status = PyList_Append(pieces, s); From python-checkins at python.org Mon Sep 10 23:51:03 2007 From: python-checkins at python.org (bill.janssen) Date: Mon, 10 Sep 2007 23:51:03 +0200 (CEST) Subject: [Python-checkins] r58097 - in python/trunk: Doc/library/hashlib.rst Doc/library/ssl.rst Lib/httplib.py Lib/imaplib.py Lib/poplib.py Lib/smtplib.py Lib/socket.py Lib/ssl.py Lib/test/badcert.pem Lib/test/badkey.pem Lib/test/nullcert.pem Lib/test/regrtest.py Lib/test/test_socket_ssl.py Lib/test/test_ssl.py Modules/_ssl.c Message-ID: <20070910215103.E30C01E4002@bag.python.org> Author: bill.janssen Date: Mon Sep 10 23:51:02 2007 New Revision: 58097 Added: python/trunk/Lib/test/badcert.pem (contents, props changed) python/trunk/Lib/test/badkey.pem (contents, props changed) python/trunk/Lib/test/nullcert.pem (contents, props changed) Modified: python/trunk/Doc/library/hashlib.rst python/trunk/Doc/library/ssl.rst python/trunk/Lib/httplib.py python/trunk/Lib/imaplib.py python/trunk/Lib/poplib.py python/trunk/Lib/smtplib.py python/trunk/Lib/socket.py python/trunk/Lib/ssl.py python/trunk/Lib/test/regrtest.py python/trunk/Lib/test/test_socket_ssl.py python/trunk/Lib/test/test_ssl.py python/trunk/Modules/_ssl.c Log: More work on SSL support. * Much expanded test suite: All protocols tested against all other protocols. All protocols tested with all certificate options. Tests for bad key and bad cert. Test of STARTTLS functionality. Test of RAND_* functions. * Fixes for threading/malloc bug. * Issue 1065 fixed: sslsocket class renamed to SSLSocket. sslerror class renamed to SSLError. Function "wrap_socket" now used to wrap an existing socket. * Issue 1583946 finally fixed: Support for subjectAltName added. Subject name now returned as proper DN list of RDNs. * SSLError exported from socket as "sslerror". * RAND_* functions properly exported from ssl.py. * Documentation improved: Example of how to create a self-signed certificate. Better indexing. Modified: python/trunk/Doc/library/hashlib.rst ============================================================================== --- python/trunk/Doc/library/hashlib.rst (original) +++ python/trunk/Doc/library/hashlib.rst Mon Sep 10 23:51:02 2007 @@ -32,7 +32,7 @@ :dfn:`digest` of the concatenation of the strings fed to it so far using the :meth:`digest` or :meth:`hexdigest` methods. -.. index:: single: OpenSSL +.. index:: single: OpenSSL; (use in module hashlib) Constructors for hash algorithms that are always present in this module are :func:`md5`, :func:`sha1`, :func:`sha224`, :func:`sha256`, :func:`sha384`, and Modified: python/trunk/Doc/library/ssl.rst ============================================================================== --- python/trunk/Doc/library/ssl.rst (original) +++ python/trunk/Doc/library/ssl.rst Mon Sep 10 23:51:02 2007 @@ -12,6 +12,10 @@ .. sectionauthor:: Bill Janssen +.. index:: single: OpenSSL; (use in module ssl) + +.. index:: TLS, SSL, Transport Layer Security, Secure Sockets Layer + This module provides access to Transport Layer Security (often known as "Secure Sockets Layer") encryption and peer authentication facilities for network sockets, both client-side and server-side. @@ -22,19 +26,113 @@ .. note:: Some behavior may be platform dependent, since calls are made to the operating - system socket APIs. + system socket APIs. The installed version of OpenSSL may also cause + variations in behavior. This section documents the objects and functions in the ``ssl`` module; for more general information about TLS, SSL, and certificates, the -reader is referred to the documents in the :ref:`ssl-references` section. +reader is referred to the documents in the "See Also" section at +the bottom. -This module defines a class, :class:`ssl.sslsocket`, which is +This module defines a class, :class:`ssl.SSLSocket`, which is derived from the :class:`socket.socket` type, and supports additional :meth:`read` and :meth:`write` methods, along with a method, :meth:`getpeercert`, to retrieve the certificate of the other side of the connection. This module defines the following functions, exceptions, and constants: +.. function:: wrap_socket (sock [, keyfile=None, certfile=None, server_side=False, + cert_reqs=CERT_NONE, ssl_version={see docs}, ca_certs=None]) + + Takes an instance ``sock`` of :class:`socket.socket`, and returns an instance of :class:`ssl.SSLSocket`, a subtype + of :class:`socket.socket`, which wraps the underlying socket in an SSL context. + For client-side sockets, the context construction is lazy; if the underlying socket isn't + connected yet, the context construction will be performed after :meth:`connect` is called + on the socket. For server-side sockets, if the socket has no remote peer, it is assumed + to be a listening socket, and the server-side SSL wrapping is automatically performed + on client connections accepted via the :meth:`accept` method. + + The ``keyfile`` and ``certfile`` parameters specify optional files which contain a certificate + to be used to identify the local side of the connection. See the discussion of :ref:`ssl-certificates` + for more information on how the certificate is stored in the ``certfile``. + + Often the private key is stored + in the same file as the certificate; in this case, only the ``certfile`` parameter need be + passed. If the private key is stored in a separate file, both parameters must be used. + If the private key is stored in the ``certfile``, it should come before the first certificate + in the certificate chain:: + + -----BEGIN RSA PRIVATE KEY----- + ... (private key in base64 encoding) ... + -----END RSA PRIVATE KEY----- + -----BEGIN CERTIFICATE----- + ... (certificate in base64 PEM encoding) ... + -----END CERTIFICATE----- + + The parameter ``server_side`` is a boolean which identifies whether server-side or client-side + behavior is desired from this socket. + + The parameter ``cert_reqs`` specifies whether a certificate is + required from the other side of the connection, and whether it will + be validated if provided. It must be one of the three values + :const:`CERT_NONE` (certificates ignored), :const:`CERT_OPTIONAL` (not required, + but validated if provided), or :const:`CERT_REQUIRED` (required and + validated). If the value of this parameter is not :const:`CERT_NONE`, then + the ``ca_certs`` parameter must point to a file of CA certificates. + + The ``ca_certs`` file contains a set of concatenated "certification authority" certificates, + which are used to validate certificates passed from the other end of the connection. + See the discussion of :ref:`ssl-certificates` for more information about how to arrange + the certificates in this file. + + The parameter ``ssl_version`` specifies which version of the SSL protocol to use. + Typically, the server chooses a particular protocol version, and the client + must adapt to the server's choice. Most of the versions are not interoperable + with the other versions. If not specified, for client-side operation, the + default SSL version is SSLv3; for server-side operation, SSLv23. These + version selections provide the most compatibility with other versions. + + Here's a table showing which versions in a client (down the side) + can connect to which versions in a server (along the top): + + .. table:: + + ======================== ========= ========= ========== ========= + *client* / **server** **SSLv2** **SSLv3** **SSLv23** **TLSv1** + *SSLv2* yes no yes* no + *SSLv3* yes yes yes no + *SSLv23* yes no yes no + *TLSv1* no no yes yes + ======================== ========= ========= ========== ========= + + `*` In some older versions of OpenSSL (for instance, 0.9.7l on OS X 10.4), + an SSLv2 client could not connect to an SSLv23 server. + +.. function:: RAND_status() + + Returns True if the SSL pseudo-random number generator has been + seeded with 'enough' randomness, and False otherwise. You can use + :func:`ssl.RAND_egd` and :func:`ssl.RAND_add` to increase the randomness + of the pseudo-random number generator. + +.. function:: RAND_egd(path) + + If you are running an entropy-gathering daemon (EGD) somewhere, and ``path`` + is the pathname of a socket connection open to it, this will read + 256 bytes of randomness from the socket, and add it to the SSL pseudo-random number generator + to increase the security of generated secret keys. This is typically only + necessary on systems without better sources of randomness. + + See http://egd.sourceforge.net/ or http://prngd.sourceforge.net/ for + sources of EGDs. + +.. function:: RAND_add(bytes, entropy) + + Mixes the given ``bytes`` into the SSL pseudo-random number generator. + The parameter ``entropy`` (a float) is a lower bound on the entropy + contained in string (so you can always use :const:`0.0`). + See :rfc:`1750` for more information on sources of entropy. + .. function:: cert_time_to_seconds(timestring) Returns a floating-point value containing a normal seconds-after-the-epoch time @@ -51,7 +149,7 @@ 'Wed May 9 00:00:00 2007' >>> -.. exception:: sslerror +.. exception:: SSLError Raised to signal an error from the underlying SSL implementation. This signifies some problem in the higher-level @@ -104,6 +202,60 @@ .. _ssl-certificates: +SSLSocket Objects +----------------- + +.. method:: SSLSocket.read([nbytes=1024]) + + Reads up to ``nbytes`` bytes from the SSL-encrypted channel and returns them. + +.. method:: SSLSocket.write(data) + + Writes the ``data`` to the other side of the connection, using the SSL channel to encrypt. Returns the number + of bytes written. + +.. method:: SSLSocket.getpeercert() + + If there is no certificate for the peer on the other end of the connection, returns ``None``. + If a certificate was received from the peer, but not validated, returns an empty ``dict`` instance. + If a certificate was received and validated, returns a ``dict`` instance with the fields + ``subject`` (the principal for which the certificate was issued), + and ``notAfter`` (the time after which the certificate should not be trusted) filled in. + The certificate was already validated, so the ``notBefore`` and ``issuer`` fields are not + returned. If a certificate contains an instance of the *subjectAltName* extension, + there will also be a ``subjectAltName`` field in the dictionary. + + The "subject" field is a tuple containing the sequence + of relative distinguished names (RDNs) given in the certificate's data structure + for the principal, and each RDN is a sequence of name-value pairs:: + + {'notAfter': 'Feb 16 16:54:50 2013 GMT', + 'subject': ((('countryName', u'US'),), + (('stateOrProvinceName', u'Delaware'),), + (('localityName', u'Wilmington'),), + (('organizationName', u'Python Software Foundation'),), + (('organizationalUnitName', u'SSL'),), + (('commonName', u'somemachine.python.org'),))} + + +.. method:: SSLSocket.cipher() + + Returns a three-value tuple containing the name of the cipher being + used, the version of the SSL protocol that defines its use, and the + number of secret bits being used. If no connection has been + established, returns ``None``. + +.. method:: SSLSocket.ssl_shutdown() + + Closes the SSL context (if any) over the socket, but leaves the socket connection + open for further use, if both sides are willing. This is different from :meth:`socket.socket.shutdown`, + which will close the connection, but leave the local socket available for further use. + + +.. index:: single: certificates + +.. index:: single: X509 certificate + Certificates ------------ @@ -130,8 +282,12 @@ side of a network connection can also be required to produce a certificate, and that certificate can be validated to the satisfaction of the client or server that requires such validation. -The connection can be set to fail automatically if such -validation is not achieved. +The connection attempt can be set to raise an exception if +the validation fails. Validation is done +automatically, by the underlying OpenSSL framework; the +application need not concern itself with its mechanics. +But the application does usually need to provide +sets of certificates to allow this process to take place. Python uses files to contain certificates. They should be formatted as "PEM" (see :rfc:`1422`), which is a base-64 encoded form wrapped @@ -170,108 +326,54 @@ chains for each issuer you are willing to trust. Again, this file just contains these chains concatenated together. For validation, Python will use the first chain it finds in the file which matches. -Some "standard" root certificates are available at -http://www.thawte.com/roots/ (for Thawte roots) and -http://www.verisign.com/support/roots.html (for Verisign roots). -See also :rfc:`4158` for more discussion of the way in which +Some "standard" root certificates are available from various certification +authorities: +`CACert.org `_, +`Thawte `_, +`Verisign `_, +`Equifax and GeoTrust `_. + +In general, if you are using +SSL3 or TLS1, you don't need to put the full chain in your "CA certs" file; +you only need the root certificates, and the remote peer is supposed to +furnish the other certificates necessary to chain from its certificate to +a root certificate. +See :rfc:`4158` for more discussion of the way in which certification chains can be built. - -sslsocket Objects ------------------ - -.. class:: sslsocket(sock [, keyfile=None, certfile=None, server_side=False, cert_reqs=CERT_NONE, ssl_version=PROTOCOL_SSLv23, ca_certs=None]) - - Takes an instance ``sock`` of :class:`socket.socket`, and returns an instance of a subtype - of :class:`socket.socket` which wraps the underlying socket in an SSL context. - For client-side sockets, the context construction is lazy; if the underlying socket isn't - connected yet, the context construction will be performed after :meth:`connect` is called - on the socket. - - The ``keyfile`` and ``certfile`` parameters specify optional files which contain a certificate - to be used to identify the local side of the connection. See the above discussion of :ref:`ssl-certificates` - for more information on how the certificate is stored in the ``certfile``. - - Often the private key is stored - in the same file as the certificate; in this case, only the ``certfile`` parameter need be - passed. If the private key is stored in a separate file, both parameters must be used. - If the private key is stored in the ``certfile``, it should come before the first certificate - in the certificate chain:: - - -----BEGIN RSA PRIVATE KEY----- - ... (private key in base64 encoding) ... - -----END RSA PRIVATE KEY----- - -----BEGIN CERTIFICATE----- - ... (certificate in base64 PEM encoding) ... - -----END CERTIFICATE----- - - The parameter ``server_side`` is a boolean which identifies whether server-side or client-side - behavior is desired from this socket. - - The parameter ``cert_reqs`` specifies whether a certificate is - required from the other side of the connection, and whether it will - be validated if provided. It must be one of the three values - :const:`CERT_NONE` (certificates ignored), :const:`CERT_OPTIONAL` (not required, - but validated if provided), or :const:`CERT_REQUIRED` (required and - validated). If the value of this parameter is not :const:`CERT_NONE`, then - the ``ca_certs`` parameter must point to a file of CA certificates. - - The parameter ``ssl_version`` specifies which version of the SSL protocol to use. Typically, - the server specifies this, and a client connecting to it must use the same protocol. An - SSL server using :const:`PROTOCOL_SSLv23` can understand a client connecting via SSL2, SSL3, or TLS1, - but a client using :const:`PROTOCOL_SSLv23` can only connect to an SSL2 server. - - The ``ca_certs`` file contains a set of concatenated "certification authority" certificates, - which are used to validate certificates passed from the other end of the connection. - See the above discussion of :ref:`ssl-certificates` for more information about how to arrange - the certificates in this file. - -.. method:: sslsocket.read([nbytes]) - - Reads up to ``nbytes`` bytes from the SSL-encrypted channel and returns them. - -.. method:: sslsocket.write(data) - - Writes the ``data`` to the other side of the connection, using the SSL channel to encrypt. Returns the number - of bytes written. - -.. method:: sslsocket.getpeercert() - - If there is no certificate for the peer on the other end of the connection, returns ``None``. - If a certificate was received from the peer, but not validated, returns an empty ``dict`` instance. - If a certificate was received and validated, returns a ``dict`` instance with the fields - ``subject`` (the principal for which the certificate was issued), ``issuer`` (the signer of - the certificate), ``notBefore`` (the time before which the certificate should not be trusted), - and ``notAfter`` (the time after which the certificate should not be trusted) filled in. - - The "subject" and "issuer" fields are tuples containing the name-value fields - given in the certificate's data structure for each principal:: - - {'issuer': (('countryName', u'US'), - ('stateOrProvinceName', u'Delaware'), - ('localityName', u'Wilmington'), - ('organizationName', u'Python Software Foundation'), - ('organizationalUnitName', u'SSL'), - ('commonName', u'somemachine.python.org')), - 'notAfter': 'Feb 16 16:54:50 2013 GMT', - 'notBefore': 'Aug 27 16:54:50 2007 GMT', - 'subject': (('countryName', u'US'), - ('stateOrProvinceName', u'Delaware'), - ('localityName', u'Wilmington'), - ('organizationName', u'Python Software Foundation'), - ('organizationalUnitName', u'SSL'), - ('commonName', u'somemachine.python.org')), - 'version': 2} - - This certificate is said to be *self-signed*, because the subject - and issuer are the same entity. The *version* field refers to the X509 version - that's used for the certificate. - -.. method:: sslsocket.ssl_shutdown() - - Closes the SSL context (if any) over the socket, but leaves the socket connection - open for further use, if both sides are willing. This is different from :meth:`socket.socket.shutdown`, - which will close the connection, but leave the local socket available for further use. +If you are going to create a server that provides SSL-encrypted +connection services, you will need to acquire a certificate for that +service. There are many ways of acquiring appropriate certificates, +such as buying one from a certification authority. Another common +practice is to generate a self-signed certificate. The simplest +way to do this is with the OpenSSL package, using something like +the following:: + + % openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem + Generating a 1024 bit RSA private key + .......++++++ + .............................++++++ + writing new private key to 'cert.pem' + ----- + You are about to be asked to enter information that will be incorporated + into your certificate request. + What you are about to enter is what is called a Distinguished Name or a DN. + There are quite a few fields but you can leave some blank + For some fields there will be a default value, + If you enter '.', the field will be left blank. + ----- + Country Name (2 letter code) [AU]:US + State or Province Name (full name) [Some-State]:MyState + Locality Name (eg, city) []:Some City + Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Organization, Inc. + Organizational Unit Name (eg, section) []:My Group + Common Name (eg, YOUR name) []:myserver.mygroup.myorganization.com + Email Address []:ops at myserver.mygroup.myorganization.com + % + +The disadvantage of a self-signed certificate is that it is its +own root certificate, and no one else will have it in their cache +of known (and trusted) root certificates. Examples @@ -298,11 +400,16 @@ import socket, ssl, pprint s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - ssl_sock = ssl.sslsocket(s, ca_certs="/etc/ca_certs_file", cert_reqs=ssl.CERT_REQUIRED) + + # require a certificate from the server + ssl_sock = ssl.wrap_socket(s, + ca_certs="/etc/ca_certs_file", + cert_reqs=ssl.CERT_REQUIRED) ssl_sock.connect(('www.verisign.com', 443)) print repr(ssl_sock.getpeername()) + print ssl_sock.cipher() print pprint.pformat(ssl_sock.getpeercert()) # Set a simple HTTP request -- use httplib in actual code. @@ -313,35 +420,29 @@ # read all the data returned by the server. data = ssl_sock.read() - # note that closing the sslsocket will also close the underlying socket + # note that closing the SSLSocket will also close the underlying socket ssl_sock.close() -As of September 4, 2007, the certificate printed by this program +As of September 6, 2007, the certificate printed by this program looked like this:: - {'issuer': (('countryName', u'US'), - ('organizationName', u'VeriSign, Inc.'), - ('organizationalUnitName', u'VeriSign Trust Network'), - ('organizationalUnitName', - u'Terms of use at https://www.verisign.com/rpa (c)06'), - ('commonName', - u'VeriSign Class 3 Extended Validation SSL SGC CA')), - 'notAfter': 'May 8 23:59:59 2009 GMT', - 'notBefore': 'May 9 00:00:00 2007 GMT', - 'subject': (('serialNumber', u'2497886'), - ('1.3.6.1.4.1.311.60.2.1.3', u'US'), - ('1.3.6.1.4.1.311.60.2.1.2', u'Delaware'), - ('countryName', u'US'), - ('postalCode', u'94043'), - ('stateOrProvinceName', u'California'), - ('localityName', u'Mountain View'), - ('streetAddress', u'487 East Middlefield Road'), - ('organizationName', u'VeriSign, Inc.'), - ('organizationalUnitName', u'Production Security Services'), - ('organizationalUnitName', - u'Terms of use at www.verisign.com/rpa (c)06'), - ('commonName', u'www.verisign.com')), - 'version': 2} + {'notAfter': 'May 8 23:59:59 2009 GMT', + 'subject': ((('serialNumber', u'2497886'),), + (('1.3.6.1.4.1.311.60.2.1.3', u'US'),), + (('1.3.6.1.4.1.311.60.2.1.2', u'Delaware'),), + (('countryName', u'US'),), + (('postalCode', u'94043'),), + (('stateOrProvinceName', u'California'),), + (('localityName', u'Mountain View'),), + (('streetAddress', u'487 East Middlefield Road'),), + (('organizationName', u'VeriSign, Inc.'),), + (('organizationalUnitName', + u'Production Security Services'),), + (('organizationalUnitName', + u'Terms of use at www.verisign.com/rpa (c)06'),), + (('commonName', u'www.verisign.com'),))} + +which is a fairly poorly-formed ``subject`` field. Server-side operation ^^^^^^^^^^^^^^^^^^^^^ @@ -357,12 +458,15 @@ bindsocket.listen(5) When one did, you'd call :meth:`accept` on the socket to get the new socket from the other -end, and use :func:`sslsocket` to create a server-side SSL context for it:: +end, and use :func:`wrap_socket` to create a server-side SSL context for it:: while True: newsocket, fromaddr = bindsocket.accept() - connstream = ssl.sslsocket(newsocket, server_side=True, certfile="mycertfile", - keyfile="mykeyfile", ssl_protocol=ssl.PROTOCOL_TLSv1) + connstream = ssl.wrap_socket(newsocket, + server_side=True, + certfile="mycertfile", + keyfile="mykeyfile", + ssl_protocol=ssl.PROTOCOL_TLSv1) deal_with_client(connstream) Then you'd read data from the ``connstream`` and do something with it till you are finished with the client (or the client is finished with you):: @@ -373,7 +477,8 @@ # null data means the client is finished with us while data: if not do_something(connstream, data): - # we'll assume do_something returns False when we're finished with client + # we'll assume do_something returns False + # when we're finished with client break data = connstream.read() # finished with client @@ -382,16 +487,19 @@ And go back to listening for new client connections. -.. _ssl-references: +.. seealso:: -References ----------- + Class :class:`socket.socket` + Documentation of underlying :mod:`socket` class -Class :class:`socket.socket` - Documentation of underlying :mod:`socket` class + `Introducing SSL and Certificates using OpenSSL `_ + Frederick J. Hirsch -`Introducing SSL and Certificates using OpenSSL `_, by Frederick J. Hirsch + `RFC 1422: Privacy Enhancement for Internet Electronic Mail: Part II: Certificate-Based Key Management `_ + Steve Kent -`Privacy Enhancement for Internet Electronic Mail: Part II: Certificate-Based Key Management`, :rfc:`1422`, by Steve Kent + `RFC 1750: Randomness Recommendations for Security `_ + D. Eastlake et. al. -`Internet X.509 Public Key Infrastructure Certificate and CRL Profile`, :rfc:`3280`, Housley et. al. + `RFC 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile `_ + Housley et. al. Modified: python/trunk/Lib/httplib.py ============================================================================== --- python/trunk/Lib/httplib.py (original) +++ python/trunk/Lib/httplib.py Mon Sep 10 23:51:02 2007 @@ -1051,7 +1051,7 @@ "Connect to a host on a given (SSL) port." sock = socket.create_connection((self.host, self.port), self.timeout) - self.sock = ssl.sslsocket(sock, self.key_file, self.cert_file) + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file) __all__.append("HTTPSConnection") @@ -1083,7 +1083,7 @@ def FakeSocket (sock, sslobj): warnings.warn("FakeSocket is deprecated, and won't be in 3.x. " + - "Use the result of ssl.sslsocket directly instead.", + "Use the result of ssl.wrap_socket() directly instead.", DeprecationWarning, stacklevel=2) return sslobj Modified: python/trunk/Lib/imaplib.py ============================================================================== --- python/trunk/Lib/imaplib.py (original) +++ python/trunk/Lib/imaplib.py Mon Sep 10 23:51:02 2007 @@ -1147,7 +1147,7 @@ self.port = port self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.connect((host, port)) - self.sslobj = ssl.sslsocket(self.sock, self.keyfile, self.certfile) + self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile) def read(self, size): @@ -1199,7 +1199,7 @@ def ssl(self): """Return SSLObject instance used to communicate with the IMAP4 server. - ssl = ssl.sslsocket(.socket) + ssl = ssl.wrap_socket(.socket) """ return self.sslobj Modified: python/trunk/Lib/poplib.py ============================================================================== --- python/trunk/Lib/poplib.py (original) +++ python/trunk/Lib/poplib.py Mon Sep 10 23:51:02 2007 @@ -348,7 +348,7 @@ if not self.sock: raise socket.error, msg self.file = self.sock.makefile('rb') - self.sslobj = ssl.sslsocket(self.sock, self.keyfile, self.certfile) + self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile) self._debugging = 0 self.welcome = self._getresp() Modified: python/trunk/Lib/smtplib.py ============================================================================== --- python/trunk/Lib/smtplib.py (original) +++ python/trunk/Lib/smtplib.py Mon Sep 10 23:51:02 2007 @@ -587,7 +587,7 @@ if resp == 220: if not _have_ssl: raise RuntimeError("No SSL support included in this Python") - self.sock = ssl.sslsocket(self.sock, keyfile, certfile) + self.sock = ssl.wrap_socket(self.sock, keyfile, certfile) self.file = SSLFakeFile(self.sock) return (resp, reply) @@ -720,7 +720,7 @@ def _get_socket(self, host, port, timeout): if self.debuglevel > 0: print>>stderr, 'connect:', (host, port) self.sock = socket.create_connection((host, port), timeout) - self.sock = ssl.sslsocket(self.sock, self.keyfile, self.certfile) + self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile) self.file = SSLFakeFile(self.sock) __all__.append("SMTP_SSL") Modified: python/trunk/Lib/socket.py ============================================================================== --- python/trunk/Lib/socket.py (original) +++ python/trunk/Lib/socket.py Mon Sep 10 23:51:02 2007 @@ -56,13 +56,13 @@ # we do an internal import here because the ssl # module imports the socket module import ssl as _realssl - warnings.warn("socket.ssl() is deprecated. Use ssl.sslsocket() instead.", + warnings.warn("socket.ssl() is deprecated. Use ssl.wrap_socket() instead.", DeprecationWarning, stacklevel=2) return _realssl.sslwrap_simple(sock, keyfile, certfile) # we need to import the same constants we used to... + from _ssl import SSLError as sslerror from _ssl import \ - sslerror, \ RAND_add, \ RAND_egd, \ RAND_status, \ Modified: python/trunk/Lib/ssl.py ============================================================================== --- python/trunk/Lib/ssl.py (original) +++ python/trunk/Lib/ssl.py Mon Sep 10 23:51:02 2007 @@ -6,11 +6,11 @@ Object types: - sslsocket -- subtype of socket.socket which does SSL over the socket + SSLSocket -- subtype of socket.socket which does SSL over the socket Exceptions: - sslerror -- exception raised for I/O errors + SSLError -- exception raised for I/O errors Functions: @@ -58,9 +58,11 @@ import os, sys import _ssl # if we can't import it, let the error propagate -from _ssl import sslerror + +from _ssl import SSLError from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED from _ssl import PROTOCOL_SSLv2, PROTOCOL_SSLv3, PROTOCOL_SSLv23, PROTOCOL_TLSv1 +from _ssl import RAND_status, RAND_egd, RAND_add from _ssl import \ SSL_ERROR_ZERO_RETURN, \ SSL_ERROR_WANT_READ, \ @@ -75,8 +77,20 @@ from socket import socket from socket import getnameinfo as _getnameinfo +def get_protocol_name (protocol_code): + if protocol_code == PROTOCOL_TLSv1: + return "TLSv1" + elif protocol_code == PROTOCOL_SSLv23: + return "SSLv23" + elif protocol_code == PROTOCOL_SSLv2: + return "SSLv2" + elif protocol_code == PROTOCOL_SSLv3: + return "SSLv3" + else: + return "" + -class sslsocket (socket): +class SSLSocket (socket): """This class implements a subtype of socket.socket that wraps the underlying OS socket in an SSL context when necessary, and @@ -119,14 +133,21 @@ return self._sslobj.write(data) - def getpeercert(self): + def getpeercert(self, binary_form=False): """Returns a formatted version of the data in the certificate provided by the other end of the SSL channel. Return None if no certificate was provided, {} if a certificate was provided, but not validated.""" - return self._sslobj.peer_certificate() + return self._sslobj.peer_certificate(binary_form) + + def cipher (self): + + if not self._sslobj: + return None + else: + return self._sslobj.cipher() def send (self, data, flags=0): if self._sslobj: @@ -197,7 +218,7 @@ # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._sslobj: - raise ValueError("attempt to connect already-connected sslsocket!") + raise ValueError("attempt to connect already-connected SSLSocket!") socket.connect(self, addr) self._sslobj = _ssl.sslwrap(self._sock, False, self.keyfile, self.certfile, self.cert_reqs, self.ssl_version, @@ -210,10 +231,18 @@ SSL channel, and the address of the remote client.""" newsock, addr = socket.accept(self) - return (sslsocket(newsock, True, self.keyfile, self.certfile, - self.cert_reqs, self.ssl_version, - self.ca_certs), addr) + return (SSLSocket(newsock, True, self.keyfile, self.certfile, + self.cert_reqs, self.ssl_version, + self.ca_certs), addr) + +def wrap_socket(sock, keyfile=None, certfile=None, + server_side=False, cert_reqs=CERT_NONE, + ssl_version=PROTOCOL_SSLv23, ca_certs=None): + + return SSLSocket(sock, keyfile=keyfile, certfile=certfile, + server_side=server_side, cert_reqs=cert_reqs, + ssl_version=ssl_version, ca_certs=ca_certs) # some utility functions Added: python/trunk/Lib/test/badcert.pem ============================================================================== --- (empty file) +++ python/trunk/Lib/test/badcert.pem Mon Sep 10 23:51:02 2007 @@ -0,0 +1,36 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXwIBAAKBgQC8ddrhm+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9L +opdJhTvbGfEj0DQs1IE8M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVH +fhi/VwovESJlaBOp+WMnfhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQAB +AoGBAK0FZpaKj6WnJZN0RqhhK+ggtBWwBnc0U/ozgKz2j1s3fsShYeiGtW6CK5nU +D1dZ5wzhbGThI7LiOXDvRucc9n7vUgi0alqPQ/PFodPxAN/eEYkmXQ7W2k7zwsDA +IUK0KUhktQbLu8qF/m8qM86ba9y9/9YkXuQbZ3COl5ahTZrhAkEA301P08RKv3KM +oXnGU2UHTuJ1MAD2hOrPxjD4/wxA/39EWG9bZczbJyggB4RHu0I3NOSFjAm3HQm0 +ANOu5QK9owJBANgOeLfNNcF4pp+UikRFqxk5hULqRAWzVxVrWe85FlPm0VVmHbb/ +loif7mqjU8o1jTd/LM7RD9f2usZyE2psaw8CQQCNLhkpX3KO5kKJmS9N7JMZSc4j +oog58yeYO8BBqKKzpug0LXuQultYv2K4veaIO04iL9VLe5z9S/Q1jaCHBBuXAkEA +z8gjGoi1AOp6PBBLZNsncCvcV/0aC+1se4HxTNo2+duKSDnbq+ljqOM+E7odU+Nq +ewvIWOG//e8fssd0mq3HywJBAJ8l/c8GVmrpFTx8r/nZ2Pyyjt3dH1widooDXYSV +q6Gbf41Llo5sYAtmxdndTLASuHKecacTgZVhy0FryZpLKrU= +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +Just bad cert data +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIICXwIBAAKBgQC8ddrhm+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9L +opdJhTvbGfEj0DQs1IE8M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVH +fhi/VwovESJlaBOp+WMnfhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQAB +AoGBAK0FZpaKj6WnJZN0RqhhK+ggtBWwBnc0U/ozgKz2j1s3fsShYeiGtW6CK5nU +D1dZ5wzhbGThI7LiOXDvRucc9n7vUgi0alqPQ/PFodPxAN/eEYkmXQ7W2k7zwsDA +IUK0KUhktQbLu8qF/m8qM86ba9y9/9YkXuQbZ3COl5ahTZrhAkEA301P08RKv3KM +oXnGU2UHTuJ1MAD2hOrPxjD4/wxA/39EWG9bZczbJyggB4RHu0I3NOSFjAm3HQm0 +ANOu5QK9owJBANgOeLfNNcF4pp+UikRFqxk5hULqRAWzVxVrWe85FlPm0VVmHbb/ +loif7mqjU8o1jTd/LM7RD9f2usZyE2psaw8CQQCNLhkpX3KO5kKJmS9N7JMZSc4j +oog58yeYO8BBqKKzpug0LXuQultYv2K4veaIO04iL9VLe5z9S/Q1jaCHBBuXAkEA +z8gjGoi1AOp6PBBLZNsncCvcV/0aC+1se4HxTNo2+duKSDnbq+ljqOM+E7odU+Nq +ewvIWOG//e8fssd0mq3HywJBAJ8l/c8GVmrpFTx8r/nZ2Pyyjt3dH1widooDXYSV +q6Gbf41Llo5sYAtmxdndTLASuHKecacTgZVhy0FryZpLKrU= +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +Just bad cert data +-----END CERTIFICATE----- Added: python/trunk/Lib/test/badkey.pem ============================================================================== --- (empty file) +++ python/trunk/Lib/test/badkey.pem Mon Sep 10 23:51:02 2007 @@ -0,0 +1,40 @@ +-----BEGIN RSA PRIVATE KEY----- +Bad Key, though the cert should be OK +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIICpzCCAhCgAwIBAgIJAP+qStv1cIGNMA0GCSqGSIb3DQEBBQUAMIGJMQswCQYD +VQQGEwJVUzERMA8GA1UECBMIRGVsYXdhcmUxEzARBgNVBAcTCldpbG1pbmd0b24x +IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMQwwCgYDVQQLEwNT +U0wxHzAdBgNVBAMTFnNvbWVtYWNoaW5lLnB5dGhvbi5vcmcwHhcNMDcwODI3MTY1 +NDUwWhcNMTMwMjE2MTY1NDUwWjCBiTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCERl +bGF3YXJlMRMwEQYDVQQHEwpXaWxtaW5ndG9uMSMwIQYDVQQKExpQeXRob24gU29m +dHdhcmUgRm91bmRhdGlvbjEMMAoGA1UECxMDU1NMMR8wHQYDVQQDExZzb21lbWFj +aGluZS5weXRob24ub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ddrh +m+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9LopdJhTvbGfEj0DQs1IE8 +M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVHfhi/VwovESJlaBOp+WMn +fhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQABoxUwEzARBglghkgBhvhC +AQEEBAMCBkAwDQYJKoZIhvcNAQEFBQADgYEAF4Q5BVqmCOLv1n8je/Jw9K669VXb +08hyGzQhkemEBYQd6fzQ9A/1ZzHkJKb1P6yreOLSEh4KcxYPyrLRC1ll8nr5OlCx +CMhKkTnR6qBsdNV0XtdU2+N25hqW+Ma4ZeqsN/iiJVCGNOZGnvQuvCAGWF8+J/f/ +iHkC6gGdBJhogs4= +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +Bad Key, though the cert should be OK +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIICpzCCAhCgAwIBAgIJAP+qStv1cIGNMA0GCSqGSIb3DQEBBQUAMIGJMQswCQYD +VQQGEwJVUzERMA8GA1UECBMIRGVsYXdhcmUxEzARBgNVBAcTCldpbG1pbmd0b24x +IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMQwwCgYDVQQLEwNT +U0wxHzAdBgNVBAMTFnNvbWVtYWNoaW5lLnB5dGhvbi5vcmcwHhcNMDcwODI3MTY1 +NDUwWhcNMTMwMjE2MTY1NDUwWjCBiTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCERl +bGF3YXJlMRMwEQYDVQQHEwpXaWxtaW5ndG9uMSMwIQYDVQQKExpQeXRob24gU29m +dHdhcmUgRm91bmRhdGlvbjEMMAoGA1UECxMDU1NMMR8wHQYDVQQDExZzb21lbWFj +aGluZS5weXRob24ub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ddrh +m+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9LopdJhTvbGfEj0DQs1IE8 +M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVHfhi/VwovESJlaBOp+WMn +fhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQABoxUwEzARBglghkgBhvhC +AQEEBAMCBkAwDQYJKoZIhvcNAQEFBQADgYEAF4Q5BVqmCOLv1n8je/Jw9K669VXb +08hyGzQhkemEBYQd6fzQ9A/1ZzHkJKb1P6yreOLSEh4KcxYPyrLRC1ll8nr5OlCx +CMhKkTnR6qBsdNV0XtdU2+N25hqW+Ma4ZeqsN/iiJVCGNOZGnvQuvCAGWF8+J/f/ +iHkC6gGdBJhogs4= +-----END CERTIFICATE----- Added: python/trunk/Lib/test/nullcert.pem ============================================================================== Modified: python/trunk/Lib/test/regrtest.py ============================================================================== --- python/trunk/Lib/test/regrtest.py (original) +++ python/trunk/Lib/test/regrtest.py Mon Sep 10 23:51:02 2007 @@ -1108,7 +1108,6 @@ class _ExpectedSkips: def __init__(self): import os.path - from test import test_socket_ssl from test import test_timeout self.valid = False @@ -1122,8 +1121,13 @@ if not os.path.supports_unicode_filenames: self.expected.add('test_pep277') - if test_socket_ssl.skip_expected: - self.expected.add('test_socket_ssl') + try: + from test import test_socket_ssl + except ImportError: + pass + else: + if test_socket_ssl.skip_expected: + self.expected.add('test_socket_ssl') if test_timeout.skip_expected: self.expected.add('test_timeout') Modified: python/trunk/Lib/test/test_socket_ssl.py ============================================================================== --- python/trunk/Lib/test/test_socket_ssl.py (original) +++ python/trunk/Lib/test/test_socket_ssl.py Mon Sep 10 23:51:02 2007 @@ -115,7 +115,7 @@ s = socket.socket(socket.AF_INET) s.connect(("www.sf.net", 443)) fd = s._sock.fileno() - sock = ssl.sslsocket(s) + sock = ssl.wrap_socket(s) s = None sock.close() try: Modified: python/trunk/Lib/test/test_ssl.py ============================================================================== --- python/trunk/Lib/test/test_ssl.py (original) +++ python/trunk/Lib/test/test_ssl.py Mon Sep 10 23:51:02 2007 @@ -5,7 +5,6 @@ from test import test_support import socket import errno -import threading import subprocess import time import os @@ -23,57 +22,21 @@ CERTFILE = None +TESTPORT = 10025 def handle_error(prefix): exc_format = ' '.join(traceback.format_exception(*sys.exc_info())) - sys.stdout.write(prefix + exc_format) + if test_support.verbose: + sys.stdout.write(prefix + exc_format) class BasicTests(unittest.TestCase): - def testRudeShutdown(self): - # Some random port to connect to. - PORT = [9934] - - listener_ready = threading.Event() - listener_gone = threading.Event() - - # `listener` runs in a thread. It opens a socket listening on - # PORT, and sits in an accept() until the main thread connects. - # Then it rudely closes the socket, and sets Event `listener_gone` - # to let the main thread know the socket is gone. - def listener(): - s = socket.socket() - PORT[0] = test_support.bind_port(s, '', PORT[0]) - s.listen(5) - listener_ready.set() - s.accept() - s = None # reclaim the socket object, which also closes it - listener_gone.set() - - def connector(): - listener_ready.wait() - s = socket.socket() - s.connect(('localhost', PORT[0])) - listener_gone.wait() - try: - ssl_sock = socket.ssl(s) - except socket.sslerror: - pass - else: - raise test_support.TestFailed( - 'connecting to closed SSL socket should have failed') - - t = threading.Thread(target=listener) - t.start() - connector() - t.join() - def testSSLconnect(self): import os with test_support.transient_internet(): - s = ssl.sslsocket(socket.socket(socket.AF_INET), - cert_reqs=ssl.CERT_NONE) + s = ssl.wrap_socket(socket.socket(socket.AF_INET), + cert_reqs=ssl.CERT_NONE) s.connect(("pop.gmail.com", 995)) c = s.getpeercert() if c: @@ -81,177 +44,551 @@ s.close() # this should fail because we have no verification certs - s = ssl.sslsocket(socket.socket(socket.AF_INET), - cert_reqs=ssl.CERT_REQUIRED) + s = ssl.wrap_socket(socket.socket(socket.AF_INET), + cert_reqs=ssl.CERT_REQUIRED) try: s.connect(("pop.gmail.com", 995)) - except ssl.sslerror: + except ssl.SSLError: pass finally: s.close() -class ConnectedTests(unittest.TestCase): + def testCrucialConstants(self): + ssl.PROTOCOL_SSLv2 + ssl.PROTOCOL_SSLv23 + ssl.PROTOCOL_SSLv3 + ssl.PROTOCOL_TLSv1 + ssl.CERT_NONE + ssl.CERT_OPTIONAL + ssl.CERT_REQUIRED - def testTLSecho (self): - - s1 = socket.socket() + def testRAND(self): + v = ssl.RAND_status() + if test_support.verbose: + sys.stdout.write("\n RAND_status is %d (%s)\n" + % (v, (v and "sufficient randomness") or + "insufficient randomness")) try: - s1.connect(('127.0.0.1', 10024)) - except: - handle_error("connection failure:\n") - raise test_support.TestFailed("Can't connect to test server") + ssl.RAND_egd(1) + except TypeError: + pass else: - try: - c1 = ssl.sslsocket(s1, ssl_version=ssl.PROTOCOL_TLSv1) - except: - handle_error("SSL handshake failure:\n") - raise test_support.TestFailed("Can't SSL-handshake with test server") - else: - if not c1: - raise test_support.TestFailed("Can't SSL-handshake with test server") - indata = "FOO\n" - c1.write(indata) - outdata = c1.read() - if outdata != indata.lower(): - raise test_support.TestFailed("bad data <<%s>> received; expected <<%s>>\n" % (data, indata.lower())) - c1.close() + print "didn't raise TypeError" + ssl.RAND_add("this is a random string", 75.0) - def testReadCert(self): + def testParseCert(self): + # note that this uses an 'unofficial' function in _ssl.c, + # provided solely for this test, to exercise the certificate + # parsing code + p = ssl._ssl._test_decode_cert(CERTFILE, False) + if test_support.verbose: + sys.stdout.write("\n" + pprint.pformat(p) + "\n") - s2 = socket.socket() - try: - s2.connect(('127.0.0.1', 10024)) - except: - handle_error("connection failure:\n") - raise test_support.TestFailed("Can't connect to test server") - else: - try: - c2 = ssl.sslsocket(s2, ssl_version=ssl.PROTOCOL_TLSv1, - cert_reqs=ssl.CERT_REQUIRED, ca_certs=CERTFILE) - except: - handle_error("SSL handshake failure:\n") - raise test_support.TestFailed("Can't SSL-handshake with test server") - else: - if not c2: - raise test_support.TestFailed("Can't SSL-handshake with test server") - cert = c2.getpeercert() - if not cert: - raise test_support.TestFailed("Can't get peer certificate.") - if test_support.verbose: - sys.stdout.write(pprint.pformat(cert) + '\n') - if not cert.has_key('subject'): - raise test_support.TestFailed( - "No subject field in certificate: %s." % - pprint.pformat(cert)) - if not ('organizationName', 'Python Software Foundation') in cert['subject']: - raise test_support.TestFailed( - "Missing or invalid 'organizationName' field in certificate subject; " - "should be 'Python Software Foundation'."); - c2.close() +try: + import threading +except ImportError: + _have_threads = False +else: + _have_threads = True -class ThreadedEchoServer(threading.Thread): + class ThreadedEchoServer(threading.Thread): - class ConnectionHandler(threading.Thread): + class ConnectionHandler(threading.Thread): - def __init__(self, server, connsock): - self.server = server - self.running = False - self.sock = connsock - threading.Thread.__init__(self) - self.setDaemon(True) + """A mildly complicated class, because we want it to work both + with and without the SSL wrapper around the socket connection, so + that we can test the STARTTLS functionality.""" - def run (self): - self.running = True - try: - sslconn = ssl.sslsocket(self.sock, server_side=True, - certfile=self.server.certificate, - ssl_version=self.server.protocol, - cert_reqs=self.server.certreqs) - except: - # here, we want to stop the server, because this shouldn't - # happen in the context of our test case - handle_error("Test server failure:\n") + def __init__(self, server, connsock): + self.server = server self.running = False - # normally, we'd just stop here, but for the test - # harness, we want to stop the server - self.server.stop() - return + self.sock = connsock + self.sock.setblocking(1) + self.sslconn = None + threading.Thread.__init__(self) + self.setDaemon(True) - while self.running: + def wrap_conn (self): try: - msg = sslconn.read() - if not msg: - # eof, so quit this handler + self.sslconn = ssl.wrap_socket(self.sock, server_side=True, + certfile=self.server.certificate, + ssl_version=self.server.protocol, + ca_certs=self.server.cacerts, + cert_reqs=self.server.certreqs) + except: + if self.server.chatty: + handle_error("\n server: bad connection attempt from " + + str(self.sock.getpeername()) + ":\n") + if not self.server.expect_bad_connects: + # here, we want to stop the server, because this shouldn't + # happen in the context of our test case self.running = False - sslconn.close() - elif msg.strip() == 'over': - sslconn.close() + # normally, we'd just stop here, but for the test + # harness, we want to stop the server self.server.stop() + return False + + else: + if self.server.certreqs == ssl.CERT_REQUIRED: + cert = self.sslconn.getpeercert() + if test_support.verbose and self.server.chatty: + sys.stdout.write(" client cert is " + pprint.pformat(cert) + "\n") + cert_binary = self.sslconn.getpeercert(True) + if test_support.verbose and self.server.chatty: + sys.stdout.write(" cert binary is " + str(len(cert_binary)) + " bytes\n") + cipher = self.sslconn.cipher() + if test_support.verbose and self.server.chatty: + sys.stdout.write(" server: connection cipher is now " + str(cipher) + "\n") + return True + + def read(self): + if self.sslconn: + return self.sslconn.read() + else: + return self.sock.recv(1024) + + def write(self, bytes): + if self.sslconn: + return self.sslconn.write(bytes) + else: + return self.sock.send(bytes) + + def close(self): + if self.sslconn: + self.sslconn.close() + else: + self.sock.close() + + def run (self): + self.running = True + if not self.server.starttls_server: + if not self.wrap_conn(): + return + while self.running: + try: + msg = self.read() + if not msg: + # eof, so quit this handler + self.running = False + self.close() + elif msg.strip() == 'over': + if test_support.verbose and self.server.connectionchatty: + sys.stdout.write(" server: client closed connection\n") + self.close() + return + elif self.server.starttls_server and msg.strip() == 'STARTTLS': + if test_support.verbose and self.server.connectionchatty: + sys.stdout.write(" server: read STARTTLS from client, sending OK...\n") + self.write("OK\n") + if not self.wrap_conn(): + return + else: + if (test_support.verbose and + self.server.connectionchatty): + ctype = (self.sslconn and "encrypted") or "unencrypted" + sys.stdout.write(" server: read %s (%s), sending back %s (%s)...\n" + % (repr(msg), ctype, repr(msg.lower()), ctype)) + self.write(msg.lower()) + except ssl.SSLError: + if self.server.chatty: + handle_error("Test server failure:\n") + self.close() self.running = False - else: - if test_support.verbose: - sys.stdout.write("\nserver: %s\n" % msg.strip().lower()) - sslconn.write(msg.lower()) - except ssl.sslerror: - handle_error("Test server failure:\n") - sslconn.close() - self.running = False - # normally, we'd just stop here, but for the test - # harness, we want to stop the server - self.server.stop() + # normally, we'd just stop here, but for the test + # harness, we want to stop the server + self.server.stop() + except: + handle_error('') + + def __init__(self, port, certificate, ssl_version=None, + certreqs=None, cacerts=None, expect_bad_connects=False, + chatty=True, connectionchatty=False, starttls_server=False): + if ssl_version is None: + ssl_version = ssl.PROTOCOL_TLSv1 + if certreqs is None: + certreqs = ssl.CERT_NONE + self.certificate = certificate + self.protocol = ssl_version + self.certreqs = certreqs + self.cacerts = cacerts + self.expect_bad_connects = expect_bad_connects + self.chatty = chatty + self.connectionchatty = connectionchatty + self.starttls_server = starttls_server + self.sock = socket.socket() + self.flag = None + if hasattr(socket, 'SO_REUSEADDR'): + self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + if hasattr(socket, 'SO_REUSEPORT'): + self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) + self.sock.bind(('127.0.0.1', port)) + self.active = False + threading.Thread.__init__(self) + self.setDaemon(False) + + def start (self, flag=None): + self.flag = flag + threading.Thread.start(self) + + def run (self): + self.sock.settimeout(0.5) + self.sock.listen(5) + self.active = True + if self.flag: + # signal an event + self.flag.set() + while self.active: + try: + newconn, connaddr = self.sock.accept() + if test_support.verbose and self.chatty: + sys.stdout.write(' server: new connection from ' + + str(connaddr) + '\n') + handler = self.ConnectionHandler(self, newconn) + handler.start() + except socket.timeout: + pass + except KeyboardInterrupt: + self.stop() except: - handle_error('') + if self.chatty: + handle_error("Test server failure:\n") - def __init__(self, port, certificate, ssl_version=None, - certreqs=None, cacerts=None): - if ssl_version is None: - ssl_version = ssl.PROTOCOL_TLSv1 - if certreqs is None: - certreqs = ssl.CERT_NONE - self.certificate = certificate - self.protocol = ssl_version - self.certreqs = certreqs - self.cacerts = cacerts - self.sock = socket.socket() - self.flag = None - if hasattr(socket, 'SO_REUSEADDR'): - self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - if hasattr(socket, 'SO_REUSEPORT'): - self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) - self.sock.bind(('127.0.0.1', port)) - self.active = False - threading.Thread.__init__(self) - self.setDaemon(False) - - def start (self, flag=None): - self.flag = flag - threading.Thread.start(self) - - def run (self): - self.sock.settimeout(0.5) - self.sock.listen(5) - self.active = True - if self.flag: - # signal an event - self.flag.set() - while self.active: + def stop (self): + self.active = False + self.sock.close() + + def badCertTest (certfile): + server = ThreadedEchoServer(TESTPORT, CERTFILE, + certreqs=ssl.CERT_REQUIRED, + cacerts=CERTFILE, chatty=False) + flag = threading.Event() + server.start(flag) + # wait for it to start + flag.wait() + # try to connect + try: try: - newconn, connaddr = self.sock.accept() + s = ssl.wrap_socket(socket.socket(), + certfile=certfile, + ssl_version=ssl.PROTOCOL_TLSv1) + s.connect(('127.0.0.1', TESTPORT)) + except ssl.SSLError, x: if test_support.verbose: - sys.stdout.write('\nserver: new connection from ' + str(connaddr) + '\n') - handler = self.ConnectionHandler(self, newconn) - handler.start() - except socket.timeout: - pass - except KeyboardInterrupt: - self.stop() - except: - handle_error("Test server failure:\n") - - def stop (self): - self.active = False - self.sock.close() + sys.stdout.write("\nSSLError is %s\n" % x[1]) + else: + raise test_support.TestFailed( + "Use of invalid cert should have failed!") + finally: + server.stop() + server.join() + + def serverParamsTest (certfile, protocol, certreqs, cacertsfile, + client_certfile, client_protocol=None, indata="FOO\n", + chatty=True, connectionchatty=False): + + server = ThreadedEchoServer(TESTPORT, certfile, + certreqs=certreqs, + ssl_version=protocol, + cacerts=cacertsfile, + chatty=chatty, + connectionchatty=connectionchatty) + flag = threading.Event() + server.start(flag) + # wait for it to start + flag.wait() + # try to connect + if client_protocol is None: + client_protocol = protocol + try: + try: + s = ssl.wrap_socket(socket.socket(), + certfile=client_certfile, + ca_certs=cacertsfile, + cert_reqs=certreqs, + ssl_version=client_protocol) + s.connect(('127.0.0.1', TESTPORT)) + except ssl.SSLError, x: + raise test_support.TestFailed("Unexpected SSL error: " + str(x)) + except Exception, x: + raise test_support.TestFailed("Unexpected exception: " + str(x)) + else: + if connectionchatty: + if test_support.verbose: + sys.stdout.write( + " client: sending %s...\n" % (repr(indata))) + s.write(indata) + outdata = s.read() + if connectionchatty: + if test_support.verbose: + sys.stdout.write(" client: read %s\n" % repr(outdata)) + if outdata != indata.lower(): + raise test_support.TestFailed( + "bad data <<%s>> (%d) received; expected <<%s>> (%d)\n" + % (outdata[:min(len(outdata),20)], len(outdata), + indata[:min(len(indata),20)].lower(), len(indata))) + s.write("over\n") + if connectionchatty: + if test_support.verbose: + sys.stdout.write(" client: closing connection.\n") + s.ssl_shutdown() + s.close() + finally: + server.stop() + server.join() + + def tryProtocolCombo (server_protocol, + client_protocol, + expectedToWork, + certsreqs=ssl.CERT_NONE): + + if certsreqs == ssl.CERT_NONE: + certtype = "CERT_NONE" + elif certsreqs == ssl.CERT_OPTIONAL: + certtype = "CERT_OPTIONAL" + elif certsreqs == ssl.CERT_REQUIRED: + certtype = "CERT_REQUIRED" + if test_support.verbose: + formatstr = (expectedToWork and " %s->%s %s\n") or " {%s->%s} %s\n" + sys.stdout.write(formatstr % + (ssl.get_protocol_name(client_protocol), + ssl.get_protocol_name(server_protocol), + certtype)) + try: + serverParamsTest(CERTFILE, server_protocol, certsreqs, + CERTFILE, CERTFILE, client_protocol, chatty=False) + except test_support.TestFailed: + if expectedToWork: + raise + else: + if not expectedToWork: + raise test_support.TestFailed( + "Client protocol %s succeeded with server protocol %s!" + % (ssl.get_protocol_name(client_protocol), + ssl.get_protocol_name(server_protocol))) + + + class ConnectedTests(unittest.TestCase): + + def testRudeShutdown(self): + + listener_ready = threading.Event() + listener_gone = threading.Event() + + # `listener` runs in a thread. It opens a socket listening on + # PORT, and sits in an accept() until the main thread connects. + # Then it rudely closes the socket, and sets Event `listener_gone` + # to let the main thread know the socket is gone. + def listener(): + s = socket.socket() + if hasattr(socket, 'SO_REUSEPORT'): + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) + port = test_support.bind_port(s, 'localhost', TESTPORT) + s.listen(5) + listener_ready.set() + s.accept() + s = None # reclaim the socket object, which also closes it + listener_gone.set() + + def connector(): + listener_ready.wait() + s = socket.socket() + s.connect(('localhost', TESTPORT)) + listener_gone.wait() + try: + ssl_sock = ssl.wrap_socket(s) + except socket.sslerror: + pass + else: + raise test_support.TestFailed( + 'connecting to closed SSL socket should have failed') + + t = threading.Thread(target=listener) + t.start() + connector() + t.join() + + def testEcho (self): + + if test_support.verbose: + sys.stdout.write("\n") + serverParamsTest(CERTFILE, ssl.PROTOCOL_TLSv1, ssl.CERT_NONE, + CERTFILE, CERTFILE, ssl.PROTOCOL_TLSv1, + chatty=True, connectionchatty=True) + + def testReadCert(self): + + if test_support.verbose: + sys.stdout.write("\n") + s2 = socket.socket() + server = ThreadedEchoServer(TESTPORT, CERTFILE, + certreqs=ssl.CERT_NONE, + ssl_version=ssl.PROTOCOL_SSLv23, + cacerts=CERTFILE, + chatty=False) + flag = threading.Event() + server.start(flag) + # wait for it to start + flag.wait() + # try to connect + try: + try: + s = ssl.wrap_socket(socket.socket(), + certfile=CERTFILE, + ca_certs=CERTFILE, + cert_reqs=ssl.CERT_REQUIRED, + ssl_version=ssl.PROTOCOL_SSLv23) + s.connect(('127.0.0.1', TESTPORT)) + except ssl.SSLError, x: + raise test_support.TestFailed( + "Unexpected SSL error: " + str(x)) + except Exception, x: + raise test_support.TestFailed( + "Unexpected exception: " + str(x)) + else: + if not s: + raise test_support.TestFailed( + "Can't SSL-handshake with test server") + cert = s.getpeercert() + if not cert: + raise test_support.TestFailed( + "Can't get peer certificate.") + cipher = s.cipher() + if test_support.verbose: + sys.stdout.write(pprint.pformat(cert) + '\n') + sys.stdout.write("Connection cipher is " + str(cipher) + '.\n') + if not cert.has_key('subject'): + raise test_support.TestFailed( + "No subject field in certificate: %s." % + pprint.pformat(cert)) + if ((('organizationName', 'Python Software Foundation'),) + not in cert['subject']): + raise test_support.TestFailed( + "Missing or invalid 'organizationName' field in certificate subject; " + "should be 'Python Software Foundation'."); + s.close() + finally: + server.stop() + server.join() + + def testNULLcert(self): + badCertTest(os.path.join(os.path.dirname(__file__) or os.curdir, + "nullcert.pem")) + def testMalformedCert(self): + badCertTest(os.path.join(os.path.dirname(__file__) or os.curdir, + "badcert.pem")) + def testMalformedKey(self): + badCertTest(os.path.join(os.path.dirname(__file__) or os.curdir, + "badkey.pem")) + + def testProtocolSSL2(self): + if test_support.verbose: + sys.stdout.write("\n") + tryProtocolCombo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True) + tryProtocolCombo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_OPTIONAL) + tryProtocolCombo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_REQUIRED) + tryProtocolCombo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv23, True) + tryProtocolCombo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv3, False) + tryProtocolCombo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_TLSv1, False) + + def testProtocolSSL23(self): + if test_support.verbose: + sys.stdout.write("\n") + try: + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv2, True) + except test_support.TestFailed, x: + # this fails on some older versions of OpenSSL (0.9.7l, for instance) + if test_support.verbose: + sys.stdout.write( + " SSL2 client to SSL23 server test unexpectedly failed:\n %s\n" + % str(x)) + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True) + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True) + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True) + + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL) + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_OPTIONAL) + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL) + + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED) + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_REQUIRED) + tryProtocolCombo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED) + + def testProtocolSSL3(self): + if test_support.verbose: + sys.stdout.write("\n") + tryProtocolCombo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True) + tryProtocolCombo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL) + tryProtocolCombo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED) + tryProtocolCombo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv2, False) + tryProtocolCombo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv23, False) + tryProtocolCombo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_TLSv1, False) + + def testProtocolTLS1(self): + if test_support.verbose: + sys.stdout.write("\n") + tryProtocolCombo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True) + tryProtocolCombo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL) + tryProtocolCombo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED) + tryProtocolCombo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv2, False) + tryProtocolCombo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv3, False) + tryProtocolCombo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv23, False) + + def testSTARTTLS (self): + + msgs = ("msg 1", "MSG 2", "STARTTLS", "MSG 3", "msg 4") + + server = ThreadedEchoServer(TESTPORT, CERTFILE, + ssl_version=ssl.PROTOCOL_TLSv1, + starttls_server=True, + chatty=True, + connectionchatty=True) + flag = threading.Event() + server.start(flag) + # wait for it to start + flag.wait() + # try to connect + wrapped = False + try: + try: + s = socket.socket() + s.setblocking(1) + s.connect(('127.0.0.1', TESTPORT)) + except Exception, x: + raise test_support.TestFailed("Unexpected exception: " + str(x)) + else: + if test_support.verbose: + sys.stdout.write("\n") + for indata in msgs: + if test_support.verbose: + sys.stdout.write(" client: sending %s...\n" % repr(indata)) + if wrapped: + conn.write(indata) + outdata = conn.read() + else: + s.send(indata) + outdata = s.recv(1024) + if indata == "STARTTLS" and outdata.strip().lower().startswith("ok"): + if test_support.verbose: + sys.stdout.write(" client: read %s from server, starting TLS...\n" % repr(outdata)) + conn = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1) + + wrapped = True + else: + if test_support.verbose: + sys.stdout.write(" client: read %s from server\n" % repr(outdata)) + if test_support.verbose: + sys.stdout.write(" client: closing connection.\n") + if wrapped: + conn.write("over\n") + conn.ssl_shutdown() + else: + s.send("over\n") + s.close() + finally: + server.stop() + server.join() + CERTFILE_CONFIG_TEMPLATE = """ # create RSA certs - Server @@ -337,33 +674,21 @@ global CERTFILE CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir, - "keycert.pem") - if not CERTFILE: - sys.__stdout__.write("Skipping test_ssl ConnectedTests; " - "couldn't create a certificate.\n") + "keycert.pem") + if (not os.path.exists(CERTFILE)): + raise test_support.TestFailed("Can't read certificate files!") tests = [BasicTests] - server = None - if CERTFILE and test_support.is_resource_enabled('network'): - server = ThreadedEchoServer(10024, CERTFILE) - flag = threading.Event() - server.start(flag) - # wait for it to start - flag.wait() - tests.append(ConnectedTests) - - thread_info = test_support.threading_setup() + if _have_threads: + thread_info = test_support.threading_setup() + if CERTFILE and thread_info and test_support.is_resource_enabled('network'): + tests.append(ConnectedTests) - try: - test_support.run_unittest(*tests) - finally: - if server is not None and server.active: - server.stop() - # wait for it to stop - server.join() + test_support.run_unittest(*tests) - test_support.threading_cleanup(*thread_info) + if _have_threads: + test_support.threading_cleanup(*thread_info) if __name__ == "__main__": test_main() Modified: python/trunk/Modules/_ssl.c ============================================================================== --- python/trunk/Modules/_ssl.c (original) +++ python/trunk/Modules/_ssl.c Mon Sep 10 23:51:02 2007 @@ -1,14 +1,38 @@ /* SSL socket module SSL support based on patches by Brian E Gallew and Laszlo Kovacs. + Re-worked a bit by Bill Janssen to add server-side support and + certificate decoding. - This module is imported by socket.py. It should *not* be used + This module is imported by ssl.py. It should *not* be used directly. + XXX should partial writes be enabled, SSL_MODE_ENABLE_PARTIAL_WRITE? + + XXX what about SSL_MODE_AUTO_RETRY */ #include "Python.h" +#ifdef WITH_THREAD +#include "pythread.h" +#define PySSL_BEGIN_ALLOW_THREADS { \ + PyThreadState *_save; \ + if (_ssl_locks_count>0) {_save = PyEval_SaveThread();} +#define PySSL_BLOCK_THREADS if (_ssl_locks_count>0){PyEval_RestoreThread(_save)}; +#define PySSL_UNBLOCK_THREADS if (_ssl_locks_count>0){_save = PyEval_SaveThread()}; +#define PySSL_END_ALLOW_THREADS if (_ssl_locks_count>0){PyEval_RestoreThread(_save);} \ + } + +#else /* no WITH_THREAD */ + +#define PySSL_BEGIN_ALLOW_THREADS +#define PySSL_BLOCK_THREADS +#define PySSL_UNBLOCK_THREADS +#define PySSL_END_ALLOW_THREADS + +#endif + enum py_ssl_error { /* these mirror ssl.h */ PY_SSL_ERROR_NONE, @@ -55,6 +79,7 @@ #include "openssl/rsa.h" #include "openssl/crypto.h" #include "openssl/x509.h" +#include "openssl/x509v3.h" #include "openssl/pem.h" #include "openssl/ssl.h" #include "openssl/err.h" @@ -63,6 +88,15 @@ /* SSL error object */ static PyObject *PySSLErrorObject; +#ifdef WITH_THREAD + +/* serves as a flag to see whether we've initialized the SSL thread support. */ +/* 0 means no, greater than 0 means yes */ + +static unsigned int _ssl_locks_count = 0; + +#endif /* def WITH_THREAD */ + /* SSL socket object */ #define X509_NAME_MAXLEN 256 @@ -90,8 +124,9 @@ static PyObject *PySSL_SSLread(PySSLObject *self, PyObject *args); static int check_socket_and_wait_for_timeout(PySocketSockObject *s, int writing); -static PyObject *PySSL_peercert(PySSLObject *self); - +static PyObject *PySSL_peercert(PySSLObject *self, PyObject *args); +static PyObject *PySSL_cipher(PySSLObject *self); +static PyObject *PySSL_SSLshutdown(PySSLObject *self); #define PySSLObject_Check(v) (Py_Type(v) == &PySSL_Type) @@ -126,7 +161,7 @@ assert(ret <= 0); - if ((obj != NULL) && (obj->ssl != NULL)) { + if (obj->ssl != NULL) { err = SSL_get_error(obj->ssl, ret); switch (err) { @@ -202,6 +237,25 @@ return NULL; } +static PyObject * +_setSSLError (char *errstr, int errcode, char *filename, int lineno) { + + char buf[2048]; + PyObject *v; + + if (errstr == NULL) { + errcode = ERR_peek_last_error(); + errstr = ERR_error_string(errcode, NULL); + } + PyOS_snprintf(buf, sizeof(buf), "_ssl.c:%d: %s", lineno, errstr); + v = Py_BuildValue("(is)", errcode, buf); + if (v != NULL) { + PyErr_SetObject(PySSLErrorObject, v); + Py_DECREF(v); + } + return NULL; +} + static PySSLObject * newPySSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file, enum py_ssl_server_or_client socket_type, @@ -226,6 +280,10 @@ self->ctx = NULL; self->Socket = NULL; + /* Make sure the SSL error state is initialized */ + (void) ERR_get_state(); + ERR_clear_error(); + if ((key_file && !cert_file) || (!key_file && cert_file)) { errstr = ERRSTR("Both the key & certificate files " "must be specified"); @@ -239,16 +297,16 @@ goto fail; } - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS if (proto_version == PY_SSL_VERSION_TLS1) self->ctx = SSL_CTX_new(TLSv1_method()); /* Set up context */ else if (proto_version == PY_SSL_VERSION_SSL3) self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */ else if (proto_version == PY_SSL_VERSION_SSL2) self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */ - else + else if (proto_version == PY_SSL_VERSION_SSL23) self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */ - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS if (self->ctx == NULL) { errstr = ERRSTR("Invalid SSL protocol variant specified."); @@ -261,39 +319,46 @@ "verification of other-side certificates."); goto fail; } else { - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS ret = SSL_CTX_load_verify_locations(self->ctx, cacerts_file, NULL); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS if (ret != 1) { - PySSL_SetError(NULL, 0, __FILE__, __LINE__); + _setSSLError(NULL, 0, __FILE__, __LINE__); goto fail; } } } if (key_file) { - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS ret = SSL_CTX_use_PrivateKey_file(self->ctx, key_file, SSL_FILETYPE_PEM); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS if (ret != 1) { - PySSL_SetError(NULL, 0, __FILE__, __LINE__); + _setSSLError(NULL, ret, __FILE__, __LINE__); goto fail; } - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS ret = SSL_CTX_use_certificate_chain_file(self->ctx, - cert_file); - Py_END_ALLOW_THREADS + cert_file); + PySSL_END_ALLOW_THREADS if (ret != 1) { - PySSL_SetError(NULL, 0, __FILE__, __LINE__); - goto fail; + /* + fprintf(stderr, "ret is %d, errcode is %lu, %lu, with file \"%s\"\n", + ret, ERR_peek_error(), ERR_peek_last_error(), cert_file); + */ + if (ERR_peek_last_error() != 0) { + _setSSLError(NULL, ret, __FILE__, __LINE__); + goto fail; + } } - /* ssl compatibility */ - SSL_CTX_set_options(self->ctx, SSL_OP_ALL); } + /* ssl compatibility */ + SSL_CTX_set_options(self->ctx, SSL_OP_ALL); + verification_mode = SSL_VERIFY_NONE; if (certreq == PY_SSL_CERT_OPTIONAL) verification_mode = SSL_VERIFY_PEER; @@ -303,9 +368,9 @@ SSL_CTX_set_verify(self->ctx, verification_mode, NULL); /* set verify lvl */ - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS self->ssl = SSL_new(self->ctx); /* New ssl struct */ - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS SSL_set_fd(self->ssl, Sock->sock_fd); /* Set the socket for SSL */ /* If the socket is in non-blocking mode or timeout mode, set the BIO @@ -317,24 +382,24 @@ BIO_set_nbio(SSL_get_wbio(self->ssl), 1); } - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS if (socket_type == PY_SSL_CLIENT) SSL_set_connect_state(self->ssl); else SSL_set_accept_state(self->ssl); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS /* Actually negotiate SSL connection */ /* XXX If SSL_connect() returns 0, it's also a failure. */ sockstate = 0; do { - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS if (socket_type == PY_SSL_CLIENT) ret = SSL_connect(self->ssl); else ret = SSL_accept(self->ssl); err = SSL_get_error(self->ssl, ret); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS if(PyErr_CheckSignals()) { goto fail; } @@ -367,14 +432,14 @@ } self->ssl->debug = 1; - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS if ((self->peer_cert = SSL_get_peer_certificate(self->ssl))) { X509_NAME_oneline(X509_get_subject_name(self->peer_cert), self->server, X509_NAME_MAXLEN); X509_NAME_oneline(X509_get_issuer_name(self->peer_cert), self->issuer, X509_NAME_MAXLEN); } - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS self->Socket = Sock; Py_INCREF(self->Socket); return self; @@ -437,96 +502,313 @@ } static PyObject * +_create_tuple_for_attribute (ASN1_OBJECT *name, ASN1_STRING *value) { + + char namebuf[X509_NAME_MAXLEN]; + int buflen; + PyObject *name_obj; + PyObject *value_obj; + PyObject *attr; + unsigned char *valuebuf = NULL; + + buflen = OBJ_obj2txt(namebuf, sizeof(namebuf), name, 0); + if (buflen < 0) { + _setSSLError(NULL, 0, __FILE__, __LINE__); + goto fail; + } + name_obj = PyString_FromStringAndSize(namebuf, buflen); + if (name_obj == NULL) + goto fail; + + buflen = ASN1_STRING_to_UTF8(&valuebuf, value); + if (buflen < 0) { + _setSSLError(NULL, 0, __FILE__, __LINE__); + Py_DECREF(name_obj); + goto fail; + } + value_obj = PyUnicode_DecodeUTF8((char *) valuebuf, + buflen, "strict"); + OPENSSL_free(valuebuf); + if (value_obj == NULL) { + Py_DECREF(name_obj); + goto fail; + } + attr = PyTuple_New(2); + if (attr == NULL) { + Py_DECREF(name_obj); + Py_DECREF(value_obj); + goto fail; + } + PyTuple_SET_ITEM(attr, 0, name_obj); + PyTuple_SET_ITEM(attr, 1, value_obj); + return attr; + + fail: + return NULL; +} + +static PyObject * _create_tuple_for_X509_NAME (X509_NAME *xname) { - PyObject *pt = NULL; - PyObject *entry_tuple = NULL; + PyObject *dn = NULL; /* tuple which represents the "distinguished name" */ + PyObject *rdn = NULL; /* tuple to hold a "relative distinguished name" */ + PyObject *rdnt; + PyObject *attr = NULL; /* tuple to hold an attribute */ int entry_count = X509_NAME_entry_count(xname); + X509_NAME_ENTRY *entry; + ASN1_OBJECT *name; + ASN1_STRING *value; int index_counter; + int rdn_level = -1; + int retcode; - pt = PyTuple_New(entry_count); - if (pt == NULL) + dn = PyList_New(0); + if (dn == NULL) return NULL; + /* now create another tuple to hold the top-level RDN */ + rdn = PyList_New(0); + if (rdn == NULL) + goto fail0; for (index_counter = 0; - index_counter < X509_NAME_entry_count(xname); + index_counter < entry_count; index_counter++) { - char namebuf[X509_NAME_MAXLEN]; - int buflen; - PyObject *name_obj; - ASN1_STRING *value; - PyObject *value_obj; - unsigned char *valuebuf = NULL; - - X509_NAME_ENTRY *entry = X509_NAME_get_entry(xname, - index_counter); - - ASN1_OBJECT *name = X509_NAME_ENTRY_get_object(entry); - buflen = OBJ_obj2txt(namebuf, sizeof(namebuf), name, 0); - if (buflen < 0) - goto fail0; - name_obj = PyString_FromStringAndSize(namebuf, buflen); - if (name_obj == NULL) - goto fail0; + entry = X509_NAME_get_entry(xname, index_counter); + /* check to see if we've gotten to a new RDN */ + if (rdn_level >= 0) { + if (rdn_level != entry->set) { + /* yes, new RDN */ + /* add old RDN to DN */ + rdnt = PyList_AsTuple(rdn); + Py_DECREF(rdn); + if (rdnt == NULL) + goto fail0; + retcode = PyList_Append(dn, rdnt); + Py_DECREF(rdnt); + if (retcode < 0) + goto fail0; + /* create new RDN */ + rdn = PyList_New(0); + if (rdn == NULL) + goto fail0; + } + } + rdn_level = entry->set; + + /* now add this attribute to the current RDN */ + name = X509_NAME_ENTRY_get_object(entry); value = X509_NAME_ENTRY_get_data(entry); - buflen = ASN1_STRING_to_UTF8(&valuebuf, value); - if (buflen < 0) { - Py_DECREF(name_obj); + attr = _create_tuple_for_attribute(name, value); + /* + fprintf(stderr, "RDN level %d, attribute %s: %s\n", + entry->set, + PyString_AS_STRING(PyTuple_GET_ITEM(attr, 0)), + PyString_AS_STRING(PyTuple_GET_ITEM(attr, 1))); + */ + if (attr == NULL) + goto fail1; + retcode = PyList_Append(rdn, attr); + Py_DECREF(attr); + if (retcode < 0) + goto fail1; + } + /* now, there's typically a dangling RDN */ + if ((rdn != NULL) && (PyList_Size(rdn) > 0)) { + rdnt = PyList_AsTuple(rdn); + Py_DECREF(rdn); + if (rdnt == NULL) goto fail0; - } - value_obj = PyUnicode_DecodeUTF8((char *) valuebuf, - buflen, "strict"); - OPENSSL_free(valuebuf); - if (value_obj == NULL) { - Py_DECREF(name_obj); + retcode = PyList_Append(dn, rdnt); + Py_DECREF(rdnt); + if (retcode < 0) goto fail0; + } + + /* convert list to tuple */ + rdnt = PyList_AsTuple(dn); + Py_DECREF(dn); + if (rdnt == NULL) + return NULL; + return rdnt; + + fail1: + Py_XDECREF(rdn); + + fail0: + Py_XDECREF(dn); + return NULL; +} + +static PyObject * +_get_peer_alt_names (X509 *certificate) { + + /* this code follows the procedure outlined in + OpenSSL's crypto/x509v3/v3_prn.c:X509v3_EXT_print() + function to extract the STACK_OF(GENERAL_NAME), + then iterates through the stack to add the + names. */ + + int i, j; + PyObject *peer_alt_names = Py_None; + PyObject *v, *t; + X509_EXTENSION *ext = NULL; + GENERAL_NAMES *names = NULL; + GENERAL_NAME *name; + X509V3_EXT_METHOD *method; + BIO *biobuf = NULL; + char buf[2048]; + char *vptr; + int len; + const unsigned char *p; + + if (certificate == NULL) + return peer_alt_names; + + /* get a memory buffer */ + biobuf = BIO_new(BIO_s_mem()); + + i = 0; + while ((i = X509_get_ext_by_NID( + certificate, NID_subject_alt_name, i)) >= 0) { + + if (peer_alt_names == Py_None) { + peer_alt_names = PyList_New(0); + if (peer_alt_names == NULL) + goto fail; } - entry_tuple = PyTuple_New(2); - if (entry_tuple == NULL) { - Py_DECREF(name_obj); - Py_DECREF(value_obj); - goto fail0; + + /* now decode the altName */ + ext = X509_get_ext(certificate, i); + if(!(method = X509V3_EXT_get(ext))) { + PyErr_SetString(PySSLErrorObject, + ERRSTR("No method for internalizing subjectAltName!")); + goto fail; + } + + p = ext->value->data; + if(method->it) + names = (GENERAL_NAMES*) (ASN1_item_d2i(NULL, + &p, + ext->value->length, + ASN1_ITEM_ptr(method->it))); + else + names = (GENERAL_NAMES*) (method->d2i(NULL, + &p, + ext->value->length)); + + for(j = 0; j < sk_GENERAL_NAME_num(names); j++) { + + /* get a rendering of each name in the set of names */ + + name = sk_GENERAL_NAME_value(names, j); + if (name->type == GEN_DIRNAME) { + + /* we special-case DirName as a tuple of tuples of attributes */ + + t = PyTuple_New(2); + if (t == NULL) { + goto fail; + } + + v = PyString_FromString("DirName"); + if (v == NULL) { + Py_DECREF(t); + goto fail; + } + PyTuple_SET_ITEM(t, 0, v); + + v = _create_tuple_for_X509_NAME (name->d.dirn); + if (v == NULL) { + Py_DECREF(t); + goto fail; + } + PyTuple_SET_ITEM(t, 1, v); + + } else { + + /* for everything else, we use the OpenSSL print form */ + + (void) BIO_reset(biobuf); + GENERAL_NAME_print(biobuf, name); + len = BIO_gets(biobuf, buf, sizeof(buf)-1); + if (len < 0) { + _setSSLError(NULL, 0, __FILE__, __LINE__); + goto fail; + } + vptr = strchr(buf, ':'); + if (vptr == NULL) + goto fail; + t = PyTuple_New(2); + if (t == NULL) + goto fail; + v = PyString_FromStringAndSize(buf, (vptr - buf)); + if (v == NULL) { + Py_DECREF(t); + goto fail; + } + PyTuple_SET_ITEM(t, 0, v); + v = PyString_FromStringAndSize((vptr + 1), (len - (vptr - buf + 1))); + if (v == NULL) { + Py_DECREF(t); + goto fail; + } + PyTuple_SET_ITEM(t, 1, v); + } + + /* and add that rendering to the list */ + + if (PyList_Append(peer_alt_names, t) < 0) { + Py_DECREF(t); + goto fail; + } + Py_DECREF(t); } - PyTuple_SET_ITEM(entry_tuple, 0, name_obj); - PyTuple_SET_ITEM(entry_tuple, 1, value_obj); - PyTuple_SET_ITEM(pt, index_counter, entry_tuple); } - return pt; + BIO_free(biobuf); + if (peer_alt_names != Py_None) { + v = PyList_AsTuple(peer_alt_names); + Py_DECREF(peer_alt_names); + return v; + } else { + return peer_alt_names; + } + + + fail: + if (biobuf != NULL) + BIO_free(biobuf); + + if (peer_alt_names != Py_None) { + Py_XDECREF(peer_alt_names); + } - fail0: - Py_XDECREF(pt); return NULL; } static PyObject * -PySSL_peercert(PySSLObject *self) -{ +_decode_certificate (X509 *certificate, int verbose) { + PyObject *retval = NULL; BIO *biobuf = NULL; PyObject *peer; + PyObject *peer_alt_names = NULL; PyObject *issuer; PyObject *version; + PyObject *sn_obj; + ASN1_INTEGER *serialNumber; char buf[2048]; int len; ASN1_TIME *notBefore, *notAfter; PyObject *pnotBefore, *pnotAfter; - int verification; - - if (!self->peer_cert) - Py_RETURN_NONE; retval = PyDict_New(); if (retval == NULL) return NULL; - verification = SSL_CTX_get_verify_mode(self->ctx); - if ((verification & SSL_VERIFY_PEER) == 0) - return retval; - peer = _create_tuple_for_X509_NAME( - X509_get_subject_name(self->peer_cert)); + X509_get_subject_name(certificate)); if (peer == NULL) goto fail0; if (PyDict_SetItemString(retval, (const char *) "subject", peer) < 0) { @@ -535,51 +817,98 @@ } Py_DECREF(peer); - issuer = _create_tuple_for_X509_NAME( - X509_get_issuer_name(self->peer_cert)); - if (issuer == NULL) - goto fail0; - if (PyDict_SetItemString(retval, (const char *)"issuer", issuer) < 0) { + if (verbose) { + issuer = _create_tuple_for_X509_NAME( + X509_get_issuer_name(certificate)); + if (issuer == NULL) + goto fail0; + if (PyDict_SetItemString(retval, (const char *)"issuer", issuer) < 0) { + Py_DECREF(issuer); + goto fail0; + } Py_DECREF(issuer); - goto fail0; - } - Py_DECREF(issuer); - - version = PyInt_FromLong(X509_get_version(self->peer_cert)); - if (PyDict_SetItemString(retval, "version", version) < 0) { + + version = PyInt_FromLong(X509_get_version(certificate) + 1); + if (PyDict_SetItemString(retval, "version", version) < 0) { + Py_DECREF(version); + goto fail0; + } Py_DECREF(version); - goto fail0; } - Py_DECREF(version); - + /* get a memory buffer */ biobuf = BIO_new(BIO_s_mem()); + + if (verbose) { - notBefore = X509_get_notBefore(self->peer_cert); - ASN1_TIME_print(biobuf, notBefore); - len = BIO_gets(biobuf, buf, sizeof(buf)-1); - pnotBefore = PyString_FromStringAndSize(buf, len); - if (pnotBefore == NULL) - goto fail1; - if (PyDict_SetItemString(retval, "notBefore", pnotBefore) < 0) { + (void) BIO_reset(biobuf); + serialNumber = X509_get_serialNumber(certificate); + /* should not exceed 20 octets, 160 bits, so buf is big enough */ + i2a_ASN1_INTEGER(biobuf, serialNumber); + len = BIO_gets(biobuf, buf, sizeof(buf)-1); + if (len < 0) { + _setSSLError(NULL, 0, __FILE__, __LINE__); + goto fail1; + } + sn_obj = PyString_FromStringAndSize(buf, len); + if (sn_obj == NULL) + goto fail1; + if (PyDict_SetItemString(retval, "serialNumber", sn_obj) < 0) { + Py_DECREF(sn_obj); + goto fail1; + } + Py_DECREF(sn_obj); + + (void) BIO_reset(biobuf); + notBefore = X509_get_notBefore(certificate); + ASN1_TIME_print(biobuf, notBefore); + len = BIO_gets(biobuf, buf, sizeof(buf)-1); + if (len < 0) { + _setSSLError(NULL, 0, __FILE__, __LINE__); + goto fail1; + } + pnotBefore = PyString_FromStringAndSize(buf, len); + if (pnotBefore == NULL) + goto fail1; + if (PyDict_SetItemString(retval, "notBefore", pnotBefore) < 0) { + Py_DECREF(pnotBefore); + goto fail1; + } Py_DECREF(pnotBefore); - goto fail1; } - Py_DECREF(pnotBefore); (void) BIO_reset(biobuf); - notAfter = X509_get_notAfter(self->peer_cert); + notAfter = X509_get_notAfter(certificate); ASN1_TIME_print(biobuf, notAfter); len = BIO_gets(biobuf, buf, sizeof(buf)-1); - BIO_free(biobuf); + if (len < 0) { + _setSSLError(NULL, 0, __FILE__, __LINE__); + goto fail1; + } pnotAfter = PyString_FromStringAndSize(buf, len); if (pnotAfter == NULL) - goto fail0; + goto fail1; if (PyDict_SetItemString(retval, "notAfter", pnotAfter) < 0) { Py_DECREF(pnotAfter); - goto fail0; + goto fail1; } Py_DECREF(pnotAfter); + + /* Now look for subjectAltName */ + + peer_alt_names = _get_peer_alt_names(certificate); + if (peer_alt_names == NULL) + goto fail1; + else if (peer_alt_names != Py_None) { + if (PyDict_SetItemString(retval, "subjectAltName", + peer_alt_names) < 0) { + Py_DECREF(peer_alt_names); + goto fail1; + } + Py_DECREF(peer_alt_names); + } + + BIO_free(biobuf); return retval; fail1: @@ -590,6 +919,141 @@ return NULL; } + +static PyObject * +PySSL_test_decode_certificate (PyObject *mod, PyObject *args) { + + PyObject *retval = NULL; + char *filename = NULL; + X509 *x=NULL; + BIO *cert; + int verbose = 1; + + if (!PyArg_ParseTuple(args, "s|i:test_decode_certificate", &filename, &verbose)) + return NULL; + + if ((cert=BIO_new(BIO_s_file())) == NULL) { + PyErr_SetString(PySSLErrorObject, "Can't malloc memory to read file"); + goto fail0; + } + + if (BIO_read_filename(cert,filename) <= 0) { + PyErr_SetString(PySSLErrorObject, "Can't open file"); + goto fail0; + } + + x = PEM_read_bio_X509_AUX(cert,NULL, NULL, NULL); + if (x == NULL) { + PyErr_SetString(PySSLErrorObject, "Error decoding PEM-encoded file"); + goto fail0; + } + + retval = _decode_certificate(x, verbose); + + fail0: + + if (cert != NULL) BIO_free(cert); + return retval; +} + + +static PyObject * +PySSL_peercert(PySSLObject *self, PyObject *args) +{ + PyObject *retval = NULL; + int len; + int verification; + PyObject *binary_mode = Py_None; + + if (!PyArg_ParseTuple(args, "|O:peer_certificate", &binary_mode)) + return NULL; + + if (!self->peer_cert) + Py_RETURN_NONE; + + if (PyObject_IsTrue(binary_mode)) { + /* return cert in DER-encoded format */ + + unsigned char *bytes_buf = NULL; + + bytes_buf = NULL; + len = i2d_X509(self->peer_cert, &bytes_buf); + if (len < 0) { + PySSL_SetError(self, len, __FILE__, __LINE__); + return NULL; + } + retval = PyString_FromStringAndSize((const char *) bytes_buf, len); + OPENSSL_free(bytes_buf); + return retval; + + } else { + + verification = SSL_CTX_get_verify_mode(self->ctx); + if ((verification & SSL_VERIFY_PEER) == 0) + return PyDict_New(); + else + return _decode_certificate (self->peer_cert, 0); + } +} + +PyDoc_STRVAR(PySSL_peercert_doc, +"peer_certificate([der=False]) -> certificate\n\ +\n\ +Returns the certificate for the peer. If no certificate was provided,\n\ +returns None. If a certificate was provided, but not validated, returns\n\ +an empty dictionary. Otherwise returns a dict containing information\n\ +about the peer certificate.\n\ +\n\ +If the optional argument is True, returns a DER-encoded copy of the\n\ +peer certificate, or None if no certificate was provided. This will\n\ +return the certificate even if it wasn't validated."); + +static PyObject *PySSL_cipher (PySSLObject *self) { + + PyObject *retval, *v; + SSL_CIPHER *current; + char *cipher_name; + char *cipher_protocol; + + if (self->ssl == NULL) + return Py_None; + current = SSL_get_current_cipher(self->ssl); + if (current == NULL) + return Py_None; + + retval = PyTuple_New(3); + if (retval == NULL) + return NULL; + + cipher_name = (char *) SSL_CIPHER_get_name(current); + if (cipher_name == NULL) { + PyTuple_SET_ITEM(retval, 0, Py_None); + } else { + v = PyString_FromString(cipher_name); + if (v == NULL) + goto fail0; + PyTuple_SET_ITEM(retval, 0, v); + } + cipher_protocol = SSL_CIPHER_get_version(current); + if (cipher_protocol == NULL) { + PyTuple_SET_ITEM(retval, 1, Py_None); + } else { + v = PyString_FromString(cipher_protocol); + if (v == NULL) + goto fail0; + PyTuple_SET_ITEM(retval, 1, v); + } + v = PyInt_FromLong(SSL_CIPHER_get_bits(current, NULL)); + if (v == NULL) + goto fail0; + PyTuple_SET_ITEM(retval, 2, v); + return retval; + + fail0: + Py_DECREF(retval); + return NULL; +} + static void PySSL_dealloc(PySSLObject *self) { if (self->peer_cert) /* Possible not to have one? */ @@ -636,9 +1100,9 @@ /* s->sock_timeout is in seconds, timeout in ms */ timeout = (int)(s->sock_timeout * 1000 + 0.5); - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS rc = poll(&pollfd, 1, timeout); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS goto normal_return; } @@ -657,12 +1121,12 @@ FD_SET(s->sock_fd, &fds); /* See if the socket is ready */ - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS if (writing) rc = select(s->sock_fd+1, NULL, &fds, NULL, &tv); else rc = select(s->sock_fd+1, &fds, NULL, NULL, &tv); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS normal_return: /* Return SOCKET_TIMED_OUT on timeout, SOCKET_OPERATION_OK otherwise @@ -697,10 +1161,10 @@ } do { err = 0; - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS len = SSL_write(self->ssl, data, count); err = SSL_get_error(self->ssl, len); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS if(PyErr_CheckSignals()) { return NULL; } @@ -752,9 +1216,9 @@ return NULL; /* first check if there are bytes ready to be read */ - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS count = SSL_pending(self->ssl); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS if (!count) { sockstate = check_socket_and_wait_for_timeout(self->Socket, 0); @@ -785,10 +1249,10 @@ } do { err = 0; - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS count = SSL_read(self->ssl, PyString_AsString(buf), len); err = SSL_get_error(self->ssl, count); - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS if(PyErr_CheckSignals()) { Py_DECREF(buf); return NULL; @@ -831,7 +1295,7 @@ \n\ Read up to len bytes from the SSL socket."); -static PyObject *PySSL_SSLshutdown(PySSLObject *self, PyObject *args) +static PyObject *PySSL_SSLshutdown(PySSLObject *self) { int err; @@ -842,13 +1306,13 @@ return NULL; } - Py_BEGIN_ALLOW_THREADS + PySSL_BEGIN_ALLOW_THREADS err = SSL_shutdown(self->ssl); if (err == 0) { /* we need to call it again to finish the shutdown */ err = SSL_shutdown(self->ssl); } - Py_END_ALLOW_THREADS + PySSL_END_ALLOW_THREADS if (err < 0) return PySSL_SetError(self, err, __FILE__, __LINE__); @@ -866,12 +1330,14 @@ static PyMethodDef PySSLMethods[] = { {"write", (PyCFunction)PySSL_SSLwrite, METH_VARARGS, - PySSL_SSLwrite_doc}, + PySSL_SSLwrite_doc}, {"read", (PyCFunction)PySSL_SSLread, METH_VARARGS, - PySSL_SSLread_doc}, + PySSL_SSLread_doc}, {"server", (PyCFunction)PySSL_server, METH_NOARGS}, {"issuer", (PyCFunction)PySSL_issuer, METH_NOARGS}, - {"peer_certificate", (PyCFunction)PySSL_peercert, METH_NOARGS}, + {"peer_certificate", (PyCFunction)PySSL_peercert, METH_VARARGS, + PySSL_peercert_doc}, + {"cipher", (PyCFunction)PySSL_cipher, METH_NOARGS}, {"shutdown", (PyCFunction)PySSL_SSLshutdown, METH_NOARGS, PySSL_SSLshutdown_doc}, {NULL, NULL} @@ -921,7 +1387,7 @@ "RAND_add(string, entropy)\n\ \n\ Mix string into the OpenSSL PRNG state. entropy (a float) is a lower\n\ -bound on the entropy contained in string."); +bound on the entropy contained in string. See RFC 1750."); static PyObject * PySSL_RAND_status(PyObject *self) @@ -958,9 +1424,9 @@ PyDoc_STRVAR(PySSL_RAND_egd_doc, "RAND_egd(path) -> bytes\n\ \n\ -Queries the entropy gather daemon (EGD) on socket path. Returns number\n\ -of bytes read. Raises ssl.sslerror if connection to EGD fails or\n\ -if it does provide enough data to seed PRNG."); +Queries the entropy gather daemon (EGD) on the socket named by 'path'.\n\ +Returns number of bytes read. Raises SSLError if connection to EGD\n\ +fails or if it does provide enough data to seed PRNG."); #endif @@ -969,6 +1435,8 @@ static PyMethodDef PySSL_methods[] = { {"sslwrap", PySSL_sslwrap, METH_VARARGS, ssl_doc}, + {"_test_decode_cert", PySSL_test_decode_certificate, + METH_VARARGS}, #ifdef HAVE_OPENSSL_RAND {"RAND_add", PySSL_RAND_add, METH_VARARGS, PySSL_RAND_add_doc}, @@ -981,6 +1449,73 @@ }; +#ifdef WITH_THREAD + +/* an implementation of OpenSSL threading operations in terms + of the Python C thread library */ + +static PyThread_type_lock *_ssl_locks = NULL; + +static unsigned long _ssl_thread_id_function (void) { + return PyThread_get_thread_ident(); +} + +static void _ssl_thread_locking_function (int mode, int n, const char *file, int line) { + /* this function is needed to perform locking on shared data + structures. (Note that OpenSSL uses a number of global data + structures that will be implicitly shared whenever multiple threads + use OpenSSL.) Multi-threaded applications will crash at random if + it is not set. + + locking_function() must be able to handle up to CRYPTO_num_locks() + different mutex locks. It sets the n-th lock if mode & CRYPTO_LOCK, and + releases it otherwise. + + file and line are the file number of the function setting the + lock. They can be useful for debugging. + */ + + if ((_ssl_locks == NULL) || + (n < 0) || (n >= _ssl_locks_count)) + return; + + if (mode & CRYPTO_LOCK) { + PyThread_acquire_lock(_ssl_locks[n], 1); + } else { + PyThread_release_lock(_ssl_locks[n]); + } +} + +static int _setup_ssl_threads(void) { + + int i; + + if (_ssl_locks == NULL) { + _ssl_locks_count = CRYPTO_num_locks(); + _ssl_locks = (PyThread_type_lock *) + malloc(sizeof(PyThread_type_lock) * _ssl_locks_count); + if (_ssl_locks == NULL) + return 0; + memset(_ssl_locks, 0, sizeof(PyThread_type_lock) * _ssl_locks_count); + for (i = 0; i < _ssl_locks_count; i++) { + _ssl_locks[i] = PyThread_allocate_lock(); + if (_ssl_locks[i] == NULL) { + int j; + for (j = 0; j < i; j++) { + PyThread_free_lock(_ssl_locks[j]); + } + free(_ssl_locks); + return 0; + } + } + CRYPTO_set_locking_callback(_ssl_thread_locking_function); + CRYPTO_set_id_callback(_ssl_thread_id_function); + } + return 1; +} + +#endif /* def HAVE_THREAD */ + PyDoc_STRVAR(module_doc, "Implementation module for SSL socket operations. See the socket module\n\ for documentation."); @@ -1003,15 +1538,21 @@ /* Init OpenSSL */ SSL_load_error_strings(); +#ifdef WITH_THREAD + /* note that this will start threading if not already started */ + if (!_setup_ssl_threads()) { + return; + } +#endif SSLeay_add_ssl_algorithms(); /* Add symbols to module dict */ - PySSLErrorObject = PyErr_NewException("ssl.sslerror", + PySSLErrorObject = PyErr_NewException("ssl.SSLError", PySocketModule.error, NULL); if (PySSLErrorObject == NULL) return; - if (PyDict_SetItemString(d, "sslerror", PySSLErrorObject) != 0) + if (PyDict_SetItemString(d, "SSLError", PySSLErrorObject) != 0) return; if (PyDict_SetItemString(d, "SSLType", (PyObject *)&PySSL_Type) != 0) From python-checkins at python.org Tue Sep 11 00:02:25 2007 From: python-checkins at python.org (guido.van.rossum) Date: Tue, 11 Sep 2007 00:02:25 +0200 (CEST) Subject: [Python-checkins] r58098 - in python/trunk: Lib/test/test_re.py Modules/_sre.c Message-ID: <20070910220225.5D0681E4004@bag.python.org> Author: guido.van.rossum Date: Tue Sep 11 00:02:25 2007 New Revision: 58098 Modified: python/trunk/Lib/test/test_re.py python/trunk/Modules/_sre.c Log: Patch # 1140 (my code, approved by Effbot). Make sure the type of the return value of re.sub(x, y, z) is the type of y+x (i.e. unicode if either is unicode, str if they are both str) even if there are no substitutions or if x==z (which triggered various special cases in join_list()). Could be backported to 2.5; no need to port to 3.0. Modified: python/trunk/Lib/test/test_re.py ============================================================================== --- python/trunk/Lib/test/test_re.py (original) +++ python/trunk/Lib/test/test_re.py Tue Sep 11 00:02:25 2007 @@ -83,6 +83,31 @@ self.assertEqual(re.sub('\r\n', '\n', 'abc\r\ndef\r\n'), 'abc\ndef\n') + def test_bug_1140(self): + # re.sub(x, y, u'') should return u'', not '', and + # re.sub(x, y, '') should return '', not u''. + # Also: + # re.sub(x, y, unicode(x)) should return unicode(y), and + # re.sub(x, y, str(x)) should return + # str(y) if isinstance(y, str) else unicode(y). + for x in 'x', u'x': + for y in 'y', u'y': + z = re.sub(x, y, u'') + self.assertEqual(z, u'') + self.assertEqual(type(z), unicode) + # + z = re.sub(x, y, '') + self.assertEqual(z, '') + self.assertEqual(type(z), str) + # + z = re.sub(x, y, unicode(x)) + self.assertEqual(z, y) + self.assertEqual(type(z), unicode) + # + z = re.sub(x, y, str(x)) + self.assertEqual(z, y) + self.assertEqual(type(z), type(y)) + def test_sub_template_numeric_escape(self): # bug 776311 and friends self.assertEqual(re.sub('x', r'\0', 'x'), '\0') Modified: python/trunk/Modules/_sre.c ============================================================================== --- python/trunk/Modules/_sre.c (original) +++ python/trunk/Modules/_sre.c Tue Sep 11 00:02:25 2007 @@ -1979,7 +1979,7 @@ #endif static PyObject* -join_list(PyObject* list, PyObject* pattern) +join_list(PyObject* list, PyObject* string) { /* join list elements */ @@ -1990,24 +1990,15 @@ #endif PyObject* result; - switch (PyList_GET_SIZE(list)) { - case 0: - Py_DECREF(list); - return PySequence_GetSlice(pattern, 0, 0); - case 1: - result = PyList_GET_ITEM(list, 0); - Py_INCREF(result); - Py_DECREF(list); - return result; - } - - /* two or more elements: slice out a suitable separator from the - first member, and use that to join the entire list */ - - joiner = PySequence_GetSlice(pattern, 0, 0); + joiner = PySequence_GetSlice(string, 0, 0); if (!joiner) return NULL; + if (PyList_GET_SIZE(list) == 0) { + Py_DECREF(list); + return joiner; + } + #if PY_VERSION_HEX >= 0x01060000 function = PyObject_GetAttrString(joiner, "join"); if (!function) { @@ -2443,7 +2434,7 @@ Py_DECREF(filter); /* convert list to single string (also removes list) */ - item = join_list(list, self->pattern); + item = join_list(list, string); if (!item) return NULL; From nnorwitz at gmail.com Tue Sep 11 00:30:28 2007 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 10 Sep 2007 18:30:28 -0400 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20070910223028.GA7512@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-1: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-5: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-7: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-9: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-11: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-12: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-14: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-18: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another WARNING: failed to listen on port 32999, trying another Exception in thread Thread-20: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/tmp/python-test/local/lib/python2.6/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on test test_asynchat failed -- errors occurred; run in verbose mode for details test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_cProfile test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd_line test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9040 refs] test_dl test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_plistlib skipped -- No module named plistlib test_poll test_popen [7360 refs] [7360 refs] [7360 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [7735 refs] [7735 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:97: DeprecationWarning: socket.ssl() is deprecated. Use ssl.sslsocket() instead. ssl_sock = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl /tmp/python-test/local/lib/python2.6/test/test_ssl.py:60: DeprecationWarning: socket.ssl() is deprecated. Use ssl.sslsocket() instead. ssl_sock = socket.ssl(s) test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7355 refs] [7353 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7353 refs] [8901 refs] [7571 refs] [7356 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] . [7355 refs] [7355 refs] this bit of output is from a test of stdout in a different process ... [7355 refs] [7355 refs] [7571 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7355 refs] [7355 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7359 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 294 tests OK. 1 test failed: test_asynchat 35 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_plistlib test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [496114 refs] From buildbot at python.org Tue Sep 11 00:30:47 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 22:30:47 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20070910223047.4E6091E4004@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/801 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_ssl ====================================================================== ERROR: testRudeShutdown (test.test_ssl.ConnectedTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_ssl.py", line 408, in testRudeShutdown connector() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_ssl.py", line 396, in connector s.connect(('localhost', TESTPORT)) File "", line 1, in connect error: [Errno 111] Connection refused make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Tue Sep 11 00:36:03 2007 From: python-checkins at python.org (guido.van.rossum) Date: Tue, 11 Sep 2007 00:36:03 +0200 (CEST) Subject: [Python-checkins] r58099 - in python/trunk: Lib/abc.py Lib/test/test_abc.py Lib/test/test_typechecks.py Objects/abstract.c Message-ID: <20070910223603.0AC991E4011@bag.python.org> Author: guido.van.rossum Date: Tue Sep 11 00:36:02 2007 New Revision: 58099 Added: python/trunk/Lib/abc.py (contents, props changed) python/trunk/Lib/test/test_abc.py (contents, props changed) python/trunk/Lib/test/test_typechecks.py (contents, props changed) Modified: python/trunk/Objects/abstract.c Log: Patch # 1026 by Benjamin Aranguren (with Alex Martelli): Backport abc.py and isinstance/issubclass overloading to 2.6. I had to backport test_typechecks.py myself, and make one small change to abc.py to avoid duplicate work when x.__class__ and type(x) are the same. Added: python/trunk/Lib/abc.py ============================================================================== --- (empty file) +++ python/trunk/Lib/abc.py Tue Sep 11 00:36:02 2007 @@ -0,0 +1,206 @@ +# Copyright 2007 Google, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +"""Abstract Base Classes (ABCs) according to PEP 3119.""" + + +def abstractmethod(funcobj): + """A decorator indicating abstract methods. + + Requires that the metaclass is ABCMeta or derived from it. A + class that has a metaclass derived from ABCMeta cannot be + instantiated unless all of its abstract methods are overridden. + The abstract methods can be called using any of the the normal + 'super' call mechanisms. + + Usage: + + class C(metaclass=ABCMeta): + @abstractmethod + def my_abstract_method(self, ...): + ... + """ + funcobj.__isabstractmethod__ = True + return funcobj + + +class abstractproperty(property): + """A decorator indicating abstract properties. + + Requires that the metaclass is ABCMeta or derived from it. A + class that has a metaclass derived from ABCMeta cannot be + instantiated unless all of its abstract properties are overridden. + The abstract properties can be called using any of the the normal + 'super' call mechanisms. + + Usage: + + class C(metaclass=ABCMeta): + @abstractproperty + def my_abstract_property(self): + ... + + This defines a read-only property; you can also define a read-write + abstract property using the 'long' form of property declaration: + + class C(metaclass=ABCMeta): + def getx(self): ... + def setx(self, value): ... + x = abstractproperty(getx, setx) + """ + __isabstractmethod__ = True + + +class _Abstract(object): + + """Helper class inserted into the bases by ABCMeta (using _fix_bases()). + + You should never need to explicitly subclass this class. + + There should never be a base class between _Abstract and object. + """ + + def __new__(cls, *args, **kwds): + am = cls.__dict__.get("__abstractmethods__") + if am: + raise TypeError("Can't instantiate abstract class %s " + "with abstract methods %s" % + (cls.__name__, ", ".join(sorted(am)))) + if (args or kwds) and cls.__init__ is object.__init__: + raise TypeError("Can't pass arguments to __new__ " + "without overriding __init__") + return object.__new__(cls) + + @classmethod + def __subclasshook__(cls, subclass): + """Abstract classes can override this to customize issubclass(). + + This is invoked early on by __subclasscheck__() below. It + should return True, False or NotImplemented. If it returns + NotImplemented, the normal algorithm is used. Otherwise, it + overrides the normal algorithm (and the outcome is cached). + """ + return NotImplemented + + +def _fix_bases(bases): + """Helper method that inserts _Abstract in the bases if needed.""" + for base in bases: + if issubclass(base, _Abstract): + # _Abstract is already a base (maybe indirectly) + return bases + if object in bases: + # Replace object with _Abstract + return tuple([_Abstract if base is object else base + for base in bases]) + # Append _Abstract to the end + return bases + (_Abstract,) + + +class ABCMeta(type): + + """Metaclass for defining Abstract Base Classes (ABCs). + + Use this metaclass to create an ABC. An ABC can be subclassed + directly, and then acts as a mix-in class. You can also register + unrelated concrete classes (even built-in classes) and unrelated + ABCs as 'virtual subclasses' -- these and their descendants will + be considered subclasses of the registering ABC by the built-in + issubclass() function, but the registering ABC won't show up in + their MRO (Method Resolution Order) nor will method + implementations defined by the registering ABC be callable (not + even via super()). + + """ + + # A global counter that is incremented each time a class is + # registered as a virtual subclass of anything. It forces the + # negative cache to be cleared before its next use. + _abc_invalidation_counter = 0 + + def __new__(mcls, name, bases, namespace): + bases = _fix_bases(bases) + cls = super(ABCMeta, mcls).__new__(mcls, name, bases, namespace) + # Compute set of abstract method names + abstracts = set(name + for name, value in namespace.items() + if getattr(value, "__isabstractmethod__", False)) + for base in bases: + for name in getattr(base, "__abstractmethods__", set()): + value = getattr(cls, name, None) + if getattr(value, "__isabstractmethod__", False): + abstracts.add(name) + cls.__abstractmethods__ = abstracts + # Set up inheritance registry + cls._abc_registry = set() + cls._abc_cache = set() + cls._abc_negative_cache = set() + cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter + return cls + + def register(cls, subclass): + """Register a virtual subclass of an ABC.""" + if not isinstance(cls, type): + raise TypeError("Can only register classes") + if issubclass(subclass, cls): + return # Already a subclass + # Subtle: test for cycles *after* testing for "already a subclass"; + # this means we allow X.register(X) and interpret it as a no-op. + if issubclass(cls, subclass): + # This would create a cycle, which is bad for the algorithm below + raise RuntimeError("Refusing to create an inheritance cycle") + cls._abc_registry.add(subclass) + ABCMeta._abc_invalidation_counter += 1 # Invalidate negative cache + + def _dump_registry(cls, file=None): + """Debug helper to print the ABC registry.""" + print >> file, "Class: %s.%s" % (cls.__module__, cls.__name__) + print >> file, "Inv.counter: %s" % ABCMeta._abc_invalidation_counter + for name in sorted(cls.__dict__.keys()): + if name.startswith("_abc_"): + value = getattr(cls, name) + print >> file, "%s: %r" % (name, value) + + def __instancecheck__(cls, instance): + """Override for isinstance(instance, cls).""" + return any(cls.__subclasscheck__(c) + for c in set([instance.__class__, type(instance)])) + + def __subclasscheck__(cls, subclass): + """Override for issubclass(subclass, cls).""" + # Check cache + if subclass in cls._abc_cache: + return True + # Check negative cache; may have to invalidate + if cls._abc_negative_cache_version < ABCMeta._abc_invalidation_counter: + # Invalidate the negative cache + cls._abc_negative_cache = set() + cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter + elif subclass in cls._abc_negative_cache: + return False + # Check the subclass hook + ok = cls.__subclasshook__(subclass) + if ok is not NotImplemented: + assert isinstance(ok, bool) + if ok: + cls._abc_cache.add(subclass) + else: + cls._abc_negative_cache.add(subclass) + return ok + # Check if it's a direct subclass + if cls in subclass.__mro__: + cls._abc_cache.add(subclass) + return True + # Check if it's a subclass of a registered class (recursive) + for rcls in cls._abc_registry: + if issubclass(subclass, rcls): + cls._abc_registry.add(subclass) + return True + # Check if it's a subclass of a subclass (recursive) + for scls in cls.__subclasses__(): + if issubclass(subclass, scls): + cls._abc_registry.add(subclass) + return True + # No dice; update negative cache + cls._abc_negative_cache.add(subclass) + return False Added: python/trunk/Lib/test/test_abc.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_abc.py Tue Sep 11 00:36:02 2007 @@ -0,0 +1,142 @@ +# Copyright 2007 Google, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +"""Unit tests for abc.py.""" + +import sys +import unittest +from test import test_support + +import abc +__metaclass__ = type + + +class TestABC(unittest.TestCase): + + def test_abstractmethod_basics(self): + @abc.abstractmethod + def foo(self): pass + self.assertEqual(foo.__isabstractmethod__, True) + def bar(self): pass + self.assertEqual(hasattr(bar, "__isabstractmethod__"), False) + + def test_abstractproperty_basics(self): + @abc.abstractproperty + def foo(self): pass + self.assertEqual(foo.__isabstractmethod__, True) + def bar(self): pass + self.assertEqual(hasattr(bar, "__isabstractmethod__"), False) + + class C: + __metaclass__ = abc.ABCMeta + @abc.abstractproperty + def foo(self): return 3 + class D(C): + @property + def foo(self): return super(D, self).foo + self.assertEqual(D().foo, 3) + + def test_abstractmethod_integration(self): + for abstractthing in [abc.abstractmethod, abc.abstractproperty]: + class C: + __metaclass__ = abc.ABCMeta + @abstractthing + def foo(self): pass # abstract + def bar(self): pass # concrete + self.assertEqual(C.__abstractmethods__, set(["foo"])) + self.assertRaises(TypeError, C) # because foo is abstract + class D(C): + def bar(self): pass # concrete override of concrete + self.assertEqual(D.__abstractmethods__, set(["foo"])) + self.assertRaises(TypeError, D) # because foo is still abstract + class E(D): + def foo(self): pass + self.assertEqual(E.__abstractmethods__, set()) + E() # now foo is concrete, too + class F(E): + @abstractthing + def bar(self): pass # abstract override of concrete + self.assertEqual(F.__abstractmethods__, set(["bar"])) + self.assertRaises(TypeError, F) # because bar is abstract now + + def test_registration_basics(self): + class A: + __metaclass__ = abc.ABCMeta + class B: + pass + b = B() + self.assertEqual(issubclass(B, A), False) + self.assertEqual(isinstance(b, A), False) + A.register(B) + self.assertEqual(issubclass(B, A), True) + self.assertEqual(isinstance(b, A), True) + class C(B): + pass + c = C() + self.assertEqual(issubclass(C, A), True) + self.assertEqual(isinstance(c, A), True) + + def test_registration_builtins(self): + class A: + __metaclass__ = abc.ABCMeta + A.register(int) + self.assertEqual(isinstance(42, A), True) + self.assertEqual(issubclass(int, A), True) + class B(A): + pass + B.register(basestring) + self.assertEqual(isinstance("", A), True) + self.assertEqual(issubclass(str, A), True) + + def test_registration_edge_cases(self): + class A: + __metaclass__ = abc.ABCMeta + A.register(A) # should pass silently + class A1(A): + pass + self.assertRaises(RuntimeError, A1.register, A) # cycles not allowed + class B: + pass + A1.register(B) # ok + A1.register(B) # should pass silently + class C(A): + pass + A.register(C) # should pass silently + self.assertRaises(RuntimeError, C.register, A) # cycles not allowed + C.register(B) # ok + + def test_registration_transitiveness(self): + class A: + __metaclass__ = abc.ABCMeta + self.failUnless(issubclass(A, A)) + class B: + __metaclass__ = abc.ABCMeta + self.failIf(issubclass(A, B)) + self.failIf(issubclass(B, A)) + class C: + __metaclass__ = abc.ABCMeta + A.register(B) + class B1(B): + pass + self.failUnless(issubclass(B1, A)) + class C1(C): + pass + B1.register(C1) + self.failIf(issubclass(C, B)) + self.failIf(issubclass(C, B1)) + self.failUnless(issubclass(C1, A)) + self.failUnless(issubclass(C1, B)) + self.failUnless(issubclass(C1, B1)) + C1.register(int) + class MyInt(int): + pass + self.failUnless(issubclass(MyInt, A)) + self.failUnless(isinstance(42, A)) + + +def test_main(): + test_support.run_unittest(TestABC) + + +if __name__ == "__main__": + unittest.main() Added: python/trunk/Lib/test/test_typechecks.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_typechecks.py Tue Sep 11 00:36:02 2007 @@ -0,0 +1,77 @@ +"""Unit tests for __instancecheck__ and __subclasscheck__.""" + +import unittest +from test import test_support + + +class ABC(type): + + def __instancecheck__(cls, inst): + """Implement isinstance(inst, cls).""" + return any(cls.__subclasscheck__(c) + for c in set([type(inst), inst.__class__])) + + def __subclasscheck__(cls, sub): + """Implement issubclass(sub, cls).""" + candidates = cls.__dict__.get("__subclass__", set()) | set([cls]) + return any(c in candidates for c in sub.mro()) + + +class Integer: + + __metaclass__ = ABC + + __subclass__ = set([int]) + + +class SubInt(Integer): + + pass + + +class Evil: + def __instancecheck__(self, inst): return False + + +class TypeChecksTest(unittest.TestCase): + + def testIsSubclassInternal(self): + self.assertEqual(Integer.__subclasscheck__(int), True) + self.assertEqual(Integer.__subclasscheck__(float), False) + + def testIsSubclassBuiltin(self): + self.assertEqual(issubclass(int, Integer), True) + self.assertEqual(issubclass(float, Integer), False) + + def testIsInstanceBuiltin(self): + self.assertEqual(isinstance(42, Integer), True) + self.assertEqual(isinstance(3.14, Integer), False) + + def testIsInstanceActual(self): + self.assertEqual(isinstance(Integer(), Integer), True) + + def testIsSubclassActual(self): + self.assertEqual(issubclass(Integer, Integer), True) + + def testSubclassBehavior(self): + self.assertEqual(issubclass(SubInt, Integer), True) + self.assertEqual(issubclass(SubInt, SubInt), True) + self.assertEqual(issubclass(Integer, SubInt), False) + self.assertEqual(issubclass(int, SubInt), False) + self.assertEqual(isinstance(SubInt(), Integer), True) + self.assertEqual(isinstance(SubInt(), SubInt), True) + self.assertEqual(isinstance(42, SubInt), False) + + def testInfiniteRecursionCaughtProperly(self): + e = Evil() + # This invokes isinstance() recursively, until the stack is exhausted. + self.assertRaises(RuntimeError, isinstance, e, Evil) + # XXX How to check the same situation for issubclass()? + + +def test_main(): + test_support.run_unittest(TypeChecksTest) + + +if __name__ == "__main__": + unittest.main() Modified: python/trunk/Objects/abstract.c ============================================================================== --- python/trunk/Objects/abstract.c (original) +++ python/trunk/Objects/abstract.c Tue Sep 11 00:36:02 2007 @@ -2279,6 +2279,27 @@ int PyObject_IsInstance(PyObject *inst, PyObject *cls) { + PyObject *t, *v, *tb; + PyObject *checker; + PyErr_Fetch(&t, &v, &tb); + checker = PyObject_GetAttrString(cls, "__instancecheck__"); + PyErr_Restore(t, v, tb); + if (checker != NULL) { + PyObject *res; + int ok = -1; + if (Py_EnterRecursiveCall(" in __instancecheck__")) { + Py_DECREF(checker); + return ok; + } + res = PyObject_CallFunctionObjArgs(checker, inst, NULL); + Py_LeaveRecursiveCall(); + Py_DECREF(checker); + if (res != NULL) { + ok = PyObject_IsTrue(res); + Py_DECREF(res); + } + return ok; + } return recursive_isinstance(inst, cls, Py_GetRecursionLimit()); } @@ -2334,6 +2355,25 @@ int PyObject_IsSubclass(PyObject *derived, PyObject *cls) { + PyObject *t, *v, *tb; + PyObject *checker; + PyErr_Fetch(&t, &v, &tb); + checker = PyObject_GetAttrString(cls, "__subclasscheck__"); + PyErr_Restore(t, v, tb); + if (checker != NULL) { + PyObject *res; + int ok = -1; + if (Py_EnterRecursiveCall(" in __subclasscheck__")) + return ok; + res = PyObject_CallFunctionObjArgs(checker, derived, NULL); + Py_LeaveRecursiveCall(); + Py_DECREF(checker); + if (res != NULL) { + ok = PyObject_IsTrue(res); + Py_DECREF(res); + } + return ok; + } return recursive_issubclass(derived, cls, Py_GetRecursionLimit()); } From buildbot at python.org Tue Sep 11 01:01:26 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 23:01:26 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20070910230127.261F21E4013@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/2462 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on 2 tests failed: test_asynchat test_ssl Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 22, in run PORT = test_support.bind_port(sock, HOST, PORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on ====================================================================== ERROR: test_close_when_done (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AttributeError: 'echo_server' object has no attribute 'buffer' ====================================================================== FAIL: test_empty_line (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 194, in test_empty_line self.assertEqual(c.contents, ["hello world", "", "I'm not dead yet!"]) AssertionError: [] != ['hello world', '', "I'm not dead yet!"] ====================================================================== FAIL: test_line_terminator1 (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 108, in test_line_terminator1 self.line_terminator_check('\n', l) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 99, in line_terminator_check self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"]) AssertionError: [] != ['hello world', "I'm not dead yet!"] ====================================================================== FAIL: test_line_terminator2 (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 113, in test_line_terminator2 self.line_terminator_check('\r\n', l) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 99, in line_terminator_check self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"]) AssertionError: [] != ['hello world', "I'm not dead yet!"] ====================================================================== FAIL: test_line_terminator3 (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 118, in test_line_terminator3 self.line_terminator_check('qqq', l) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 99, in line_terminator_check self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"]) AssertionError: [] != ['hello world', "I'm not dead yet!"] ====================================================================== FAIL: test_none_terminator (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 156, in test_none_terminator self.assertEqual(c.buffer, data) AssertionError: '' != "hello world, I'm not dead yet!\n" ====================================================================== FAIL: test_string_producer (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 181, in test_string_producer self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"]) AssertionError: [] != ['hello world', "I'm not dead yet!"] ====================================================================== FAIL: test_numeric_terminator1 (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 137, in test_numeric_terminator1 self.numeric_terminator_check(1) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 132, in numeric_terminator_check self.assertEqual(c.contents, [data[:termlen]]) AssertionError: [] != ['h'] ====================================================================== FAIL: test_numeric_terminator2 (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 141, in test_numeric_terminator2 self.numeric_terminator_check(6L) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 132, in numeric_terminator_check self.assertEqual(c.contents, [data[:termlen]]) AssertionError: [] != ['hello '] ====================================================================== FAIL: test_simple_producer (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_asynchat.py", line 169, in test_simple_producer self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"]) AssertionError: [] != ['hello world', "I'm not dead yet!"] Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_ssl.py", line 386, in listener port = test_support.bind_port(s, 'localhost', TESTPORT) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_support.py", line 113, in bind_port raise TestFailed('unable to find port to listen on') TestFailed: unable to find port to listen on sincerely, -The Buildbot From buildbot at python.org Tue Sep 11 01:05:04 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 23:05:04 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20070910230505.227531E4010@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2275 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen,guido.van.rossum BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_ssl test_urllib2net Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_ssl.py", line 343, in certsreqs=ssl.CERT_NONE): NameError: name 'ssl' is not defined sincerely, -The Buildbot From buildbot at python.org Tue Sep 11 01:28:32 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 10 Sep 2007 23:28:32 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20070910232832.315371E4002@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/199 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen,guido.van.rossum BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_ssl ====================================================================== ERROR: testRudeShutdown (test.test_ssl.ConnectedTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_ssl.py", line 408, in testRudeShutdown connector() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_ssl.py", line 396, in connector s.connect(('localhost', TESTPORT)) File "", line 1, in connect error: [Errno 111] Connection refused make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Tue Sep 11 01:41:24 2007 From: python-checkins at python.org (bill.janssen) Date: Tue, 11 Sep 2007 01:41:24 +0200 (CEST) Subject: [Python-checkins] r58100 - python/trunk/Lib/test/test_ssl.py Message-ID: <20070910234124.D2B981E4012@bag.python.org> Author: bill.janssen Date: Tue Sep 11 01:41:24 2007 New Revision: 58100 Modified: python/trunk/Lib/test/test_ssl.py Log: A better way of finding an open port to test with. Modified: python/trunk/Lib/test/test_ssl.py ============================================================================== --- python/trunk/Lib/test/test_ssl.py (original) +++ python/trunk/Lib/test/test_ssl.py Tue Sep 11 01:41:24 2007 @@ -381,9 +381,11 @@ # to let the main thread know the socket is gone. def listener(): s = socket.socket() + if hasattr(socket, 'SO_REUSEADDR'): + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) if hasattr(socket, 'SO_REUSEPORT'): s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) - port = test_support.bind_port(s, 'localhost', TESTPORT) + port = test_support.bind_port(s, '127.0.0.1', TESTPORT) s.listen(5) listener_ready.set() s.accept() @@ -393,7 +395,7 @@ def connector(): listener_ready.wait() s = socket.socket() - s.connect(('localhost', TESTPORT)) + s.connect(('127.0.0.1', TESTPORT)) listener_gone.wait() try: ssl_sock = ssl.wrap_socket(s) @@ -668,15 +670,36 @@ return d, crtfile +def findtestsocket(start, end): + def testbind(i): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + s.bind(("127.0.0.1", i)) + except: + return 0 + else: + return 1 + finally: + s.close() + + for i in range(start, end): + if testbind(i) and testbind(i+1): + return i + return 0 + + def test_main(verbose=False): if skip_expected: raise test_support.TestSkipped("No SSL support") - global CERTFILE + global CERTFILE, TESTPORT CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir, "keycert.pem") if (not os.path.exists(CERTFILE)): raise test_support.TestFailed("Can't read certificate files!") + TESTPORT = findtestsocket(10025, 12000) + if not TESTPORT: + raise test_support.TestFailed("Can't find open port to test servers on!") tests = [BasicTests] From python-checkins at python.org Tue Sep 11 03:09:19 2007 From: python-checkins at python.org (bill.janssen) Date: Tue, 11 Sep 2007 03:09:19 +0200 (CEST) Subject: [Python-checkins] r58101 - python/trunk/Lib/test/test_ssl.py Message-ID: <20070911010919.EBBCE1E4002@bag.python.org> Author: bill.janssen Date: Tue Sep 11 03:09:19 2007 New Revision: 58101 Modified: python/trunk/Lib/test/test_ssl.py Log: Make sure test_ssl doesn't reference the ssl module in a context where it can't be imported. Modified: python/trunk/Lib/test/test_ssl.py ============================================================================== --- python/trunk/Lib/test/test_ssl.py (original) +++ python/trunk/Lib/test/test_ssl.py Tue Sep 11 03:09:19 2007 @@ -340,7 +340,10 @@ def tryProtocolCombo (server_protocol, client_protocol, expectedToWork, - certsreqs=ssl.CERT_NONE): + certsreqs=None): + + if certsreqs == None: + certsreqs = ssl.CERT_NONE if certsreqs == ssl.CERT_NONE: certtype = "CERT_NONE" From python-checkins at python.org Tue Sep 11 04:42:08 2007 From: python-checkins at python.org (bill.janssen) Date: Tue, 11 Sep 2007 04:42:08 +0200 (CEST) Subject: [Python-checkins] r58102 - python/trunk/Doc/library/ssl.rst Message-ID: <20070911024208.5901E1E400C@bag.python.org> Author: bill.janssen Date: Tue Sep 11 04:42:07 2007 New Revision: 58102 Modified: python/trunk/Doc/library/ssl.rst Log: Fix some documentation bugs. Modified: python/trunk/Doc/library/ssl.rst ============================================================================== --- python/trunk/Doc/library/ssl.rst (original) +++ python/trunk/Doc/library/ssl.rst Tue Sep 11 04:42:07 2007 @@ -34,15 +34,27 @@ reader is referred to the documents in the "See Also" section at the bottom. -This module defines a class, :class:`ssl.SSLSocket`, which is -derived from the :class:`socket.socket` type, and supports additional +This module provides a class, :class:`ssl.SSLSocket`, which is +derived from the :class:`socket.socket` type, and provides +a socket-like wrapper that also encrypts and decrypts the data +going over the socket with SSL. It supports additional :meth:`read` and :meth:`write` methods, along with a method, :meth:`getpeercert`, -to retrieve the certificate of the other side of the connection. +to retrieve the certificate of the other side of the connection, and +a method, :meth:`cipher`, to retrieve the cipher being used for the +secure connection. -This module defines the following functions, exceptions, and constants: +Functions, Constants, and Exceptions +------------------------------------ -.. function:: wrap_socket (sock [, keyfile=None, certfile=None, server_side=False, - cert_reqs=CERT_NONE, ssl_version={see docs}, ca_certs=None]) +.. exception:: SSLError + + Raised to signal an error from the underlying SSL implementation. This + signifies some problem in the higher-level + encryption and authentication layer that's superimposed on the underlying + network connection. This error is a subtype of :exc:`socket.error`, which + in turn is a subtype of :exc:`IOError`. + +.. function:: wrap_socket (sock [, keyfile=None, certfile=None, server_side=False, cert_reqs=CERT_NONE, ssl_version={see docs}, ca_certs=None]) Takes an instance ``sock`` of :class:`socket.socket`, and returns an instance of :class:`ssl.SSLSocket`, a subtype of :class:`socket.socket`, which wraps the underlying socket in an SSL context. @@ -50,7 +62,8 @@ connected yet, the context construction will be performed after :meth:`connect` is called on the socket. For server-side sockets, if the socket has no remote peer, it is assumed to be a listening socket, and the server-side SSL wrapping is automatically performed - on client connections accepted via the :meth:`accept` method. + on client connections accepted via the :meth:`accept` method. :func:`wrap_socket` may + raise :exc:`SSLError`. The ``keyfile`` and ``certfile`` parameters specify optional files which contain a certificate to be used to identify the local side of the connection. See the discussion of :ref:`ssl-certificates` @@ -124,7 +137,7 @@ necessary on systems without better sources of randomness. See http://egd.sourceforge.net/ or http://prngd.sourceforge.net/ for - sources of EGDs. + sources of entropy-gathering daemons. .. function:: RAND_add(bytes, entropy) @@ -149,13 +162,6 @@ 'Wed May 9 00:00:00 2007' >>> -.. exception:: SSLError - - Raised to signal an error from the underlying SSL implementation. This - signifies some problem in the higher-level - encryption and authentication layer that's superimposed on the underlying - network connection. - .. data:: CERT_NONE Value to pass to the ``cert_reqs`` parameter to :func:`sslobject` @@ -185,13 +191,16 @@ .. data:: PROTOCOL_SSLv23 - Selects SSL version 2 or 3 as the channel encryption protocol. This is a setting to use for maximum compatibility - with the other end of an SSL connection, but it may cause the specific ciphers chosen for the encryption to be - of fairly low quality. + Selects SSL version 2 or 3 as the channel encryption protocol. + This is a setting to use with servers for maximum compatibility + with the other end of an SSL connection, but it may cause the + specific ciphers chosen for the encryption to be of fairly low + quality. .. data:: PROTOCOL_SSLv3 Selects SSL version 3 as the channel encryption protocol. + For clients, this is the maximally compatible SSL variant. .. data:: PROTOCOL_TLSv1 @@ -200,8 +209,6 @@ protection, if both sides can speak it. -.. _ssl-certificates: - SSLSocket Objects ----------------- @@ -211,23 +218,30 @@ .. method:: SSLSocket.write(data) - Writes the ``data`` to the other side of the connection, using the SSL channel to encrypt. Returns the number - of bytes written. + Writes the ``data`` to the other side of the connection, using the + SSL channel to encrypt. Returns the number of bytes written. + +.. method:: SSLSocket.getpeercert(binary_form=False) -.. method:: SSLSocket.getpeercert() + If there is no certificate for the peer on the other end of the + connection, returns ``None``. - If there is no certificate for the peer on the other end of the connection, returns ``None``. - If a certificate was received from the peer, but not validated, returns an empty ``dict`` instance. - If a certificate was received and validated, returns a ``dict`` instance with the fields - ``subject`` (the principal for which the certificate was issued), - and ``notAfter`` (the time after which the certificate should not be trusted) filled in. - The certificate was already validated, so the ``notBefore`` and ``issuer`` fields are not - returned. If a certificate contains an instance of the *subjectAltName* extension, - there will also be a ``subjectAltName`` field in the dictionary. - - The "subject" field is a tuple containing the sequence - of relative distinguished names (RDNs) given in the certificate's data structure - for the principal, and each RDN is a sequence of name-value pairs:: + If the the parameter ``binary_form`` is :const:`False`, and a + certificate was received from the peer, this method returns a + :class:`dict` instance. If the certificate was not validated, the + dict is empty. If the certificate was validated, it returns a dict + with the keys ``subject`` (the principal for which the certificate + was issued), and ``notAfter`` (the time after which the certificate + should not be trusted). The certificate was already validated, so + the ``notBefore`` and ``issuer`` fields are not returned. If a + certificate contains an instance of the *Subject Alternative Name* + extension (see :rfc:`3280`), there will also be a + ``subjectAltName`` key in the dictionary. + + The "subject" field is a tuple containing the sequence of relative + distinguished names (RDNs) given in the certificate's data + structure for the principal, and each RDN is a sequence of + name-value pairs:: {'notAfter': 'Feb 16 16:54:50 2013 GMT', 'subject': ((('countryName', u'US'),), @@ -237,6 +251,10 @@ (('organizationalUnitName', u'SSL'),), (('commonName', u'somemachine.python.org'),))} + If the ``binary_form`` parameter is :const:`True`, and a + certificate was provided, this method returns the DER-encoded form + of the entire certificate as a sequence of bytes. Note that this + binary certificate may not be valid. .. method:: SSLSocket.cipher() @@ -256,6 +274,8 @@ .. index:: single: X509 certificate +.. _ssl-certificates: + Certificates ------------ From python-checkins at python.org Tue Sep 11 16:01:18 2007 From: python-checkins at python.org (nick.coghlan) Date: Tue, 11 Sep 2007 16:01:18 +0200 (CEST) Subject: [Python-checkins] r58103 - python/trunk/Lib/test/test_cmd_line.py Message-ID: <20070911140118.9E7EF1E401E@bag.python.org> Author: nick.coghlan Date: Tue Sep 11 16:01:18 2007 New Revision: 58103 Modified: python/trunk/Lib/test/test_cmd_line.py Log: Always use the -E flag when spawning subprocesses in test_cmd_line (Issue 1056) Modified: python/trunk/Lib/test/test_cmd_line.py ============================================================================== --- python/trunk/Lib/test/test_cmd_line.py (original) +++ python/trunk/Lib/test/test_cmd_line.py Tue Sep 11 16:01:18 2007 @@ -4,7 +4,7 @@ import subprocess def _spawn_python(*args): - cmd_line = [sys.executable] + cmd_line = [sys.executable, '-E'] cmd_line.extend(args) return subprocess.Popen(cmd_line, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) @@ -24,7 +24,7 @@ return _kill_python(p) def exit_code(self, *args): - cmd_line = [sys.executable] + cmd_line = [sys.executable, '-E'] cmd_line.extend(args) return subprocess.call(cmd_line, stdout=subprocess.PIPE, stderr=subprocess.PIPE) @@ -38,9 +38,6 @@ self.assertTrue(data == '' or data.endswith('\n')) self.assertTrue('Traceback' not in data) - def test_environment(self): - self.verify_valid_flag('-E') - def test_optimize(self): self.verify_valid_flag('-O') self.verify_valid_flag('-OO') From ncoghlan at gmail.com Tue Sep 11 16:52:41 2007 From: ncoghlan at gmail.com (Nick Coghlan) Date: Wed, 12 Sep 2007 00:52:41 +1000 Subject: [Python-checkins] r58100 - python/trunk/Lib/test/test_ssl.py In-Reply-To: <20070910234124.D2B981E4012@bag.python.org> References: <20070910234124.D2B981E4012@bag.python.org> Message-ID: <46E6ABB9.1050501@gmail.com> bill.janssen wrote: > Author: bill.janssen > Date: Tue Sep 11 01:41:24 2007 > New Revision: 58100 > > Modified: > python/trunk/Lib/test/test_ssl.py > Log: > A better way of finding an open port to test with. Binding to port 0 tells the OS to find an open port for you (someone pointed out this trick a while back for some of the other standard library server tests) Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org From python-checkins at python.org Tue Sep 11 18:23:58 2007 From: python-checkins at python.org (paul.dubois) Date: Tue, 11 Sep 2007 18:23:58 +0200 (CEST) Subject: [Python-checkins] r58104 - tracker/instances/python-dev/scripts/roundup-summary Message-ID: <20070911162358.5CE181E4004@bag.python.org> Author: paul.dubois Date: Tue Sep 11 18:23:58 2007 New Revision: 58104 Modified: tracker/instances/python-dev/scripts/roundup-summary Log: Add text-only option --text. Modified: tracker/instances/python-dev/scripts/roundup-summary ============================================================================== --- tracker/instances/python-dev/scripts/roundup-summary (original) +++ tracker/instances/python-dev/scripts/roundup-summary Tue Sep 11 18:23:58 2007 @@ -86,6 +86,9 @@ parser.add_option('-r','--resolved', dest='resolved', default=resolvedStatusDefault, help="Comma-delimited list of statuses that corresponds to being 'closed'.") +parser.add_option('-t', '--text', dest='text', action='store_true', + default=False, + help="Write text report only, no HTML.") parser.add_option('-o','--output', dest='output', default='', metavar='FILENAME', help='File name for output; default is stdout.') @@ -858,9 +861,10 @@ print >>body, textReport.getvalue() # now the HTML one - part = writer.nextpart() - body = part.startbody('text/html') - print >>body, htmlReport.getvalue() + if not options.text: + part = writer.nextpart() + body = part.startbody('text/html') + print >>body, htmlReport.getvalue() # finish off the multipart writer.lastpart() # all done, send! From guido at python.org Tue Sep 11 19:50:57 2007 From: guido at python.org (Guido van Rossum) Date: Tue, 11 Sep 2007 10:50:57 -0700 Subject: [Python-checkins] r58100 - python/trunk/Lib/test/test_ssl.py In-Reply-To: <46E6ABB9.1050501@gmail.com> References: <20070910234124.D2B981E4012@bag.python.org> <46E6ABB9.1050501@gmail.com> Message-ID: On 9/11/07, Nick Coghlan wrote: > bill.janssen wrote: > > Author: bill.janssen > > Date: Tue Sep 11 01:41:24 2007 > > New Revision: 58100 > > > > Modified: > > python/trunk/Lib/test/test_ssl.py > > Log: > > A better way of finding an open port to test with. > > Binding to port 0 tells the OS to find an open port for you (someone > pointed out this trick a while back for some of the other standard > library server tests) Is that universal for all platforms including Windows? -- --Guido van Rossum (home page: http://www.python.org/~guido/) From python-checkins at python.org Tue Sep 11 21:17:49 2007 From: python-checkins at python.org (thomas.heller) Date: Tue, 11 Sep 2007 21:17:49 +0200 (CEST) Subject: [Python-checkins] r58106 - python/trunk/Lib/ctypes/test/test_cfuncs.py python/trunk/Lib/ctypes/test/test_functions.py Message-ID: <20070911191749.AC0781E4010@bag.python.org> Author: thomas.heller Date: Tue Sep 11 21:17:48 2007 New Revision: 58106 Modified: python/trunk/Lib/ctypes/test/test_cfuncs.py python/trunk/Lib/ctypes/test/test_functions.py Log: Disable some tests that fail on the 'ppc Debian unstable' buildbot to find out if they cause the segfault on the 'alpha Debian' machine. Modified: python/trunk/Lib/ctypes/test/test_cfuncs.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_cfuncs.py (original) +++ python/trunk/Lib/ctypes/test/test_cfuncs.py Tue Sep 11 21:17:48 2007 @@ -158,17 +158,17 @@ self.failUnlessEqual(self._dll.tf_bd(0, 42.), 14.) self.failUnlessEqual(self.S(), 42) - def test_longdouble(self): - self._dll.tf_D.restype = c_longdouble - self._dll.tf_D.argtypes = (c_longdouble,) - self.failUnlessEqual(self._dll.tf_D(42.), 14.) - self.failUnlessEqual(self.S(), 42) - - def test_longdouble_plus(self): - self._dll.tf_bD.restype = c_longdouble - self._dll.tf_bD.argtypes = (c_byte, c_longdouble) - self.failUnlessEqual(self._dll.tf_bD(0, 42.), 14.) - self.failUnlessEqual(self.S(), 42) +## def test_longdouble(self): +## self._dll.tf_D.restype = c_longdouble +## self._dll.tf_D.argtypes = (c_longdouble,) +## self.failUnlessEqual(self._dll.tf_D(42.), 14.) +## self.failUnlessEqual(self.S(), 42) + +## def test_longdouble_plus(self): +## self._dll.tf_bD.restype = c_longdouble +## self._dll.tf_bD.argtypes = (c_byte, c_longdouble) +## self.failUnlessEqual(self._dll.tf_bD(0, 42.), 14.) +## self.failUnlessEqual(self.S(), 42) def test_callwithresult(self): def process_result(result): Modified: python/trunk/Lib/ctypes/test/test_functions.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_functions.py (original) +++ python/trunk/Lib/ctypes/test/test_functions.py Tue Sep 11 21:17:48 2007 @@ -143,17 +143,17 @@ self.failUnlessEqual(result, -21) self.failUnlessEqual(type(result), float) - def test_longdoubleresult(self): - f = dll._testfunc_D_bhilfD - f.argtypes = [c_byte, c_short, c_int, c_long, c_float, c_longdouble] - f.restype = c_longdouble - result = f(1, 2, 3, 4, 5.0, 6.0) - self.failUnlessEqual(result, 21) - self.failUnlessEqual(type(result), float) - - result = f(-1, -2, -3, -4, -5.0, -6.0) - self.failUnlessEqual(result, -21) - self.failUnlessEqual(type(result), float) +## def test_longdoubleresult(self): +## f = dll._testfunc_D_bhilfD +## f.argtypes = [c_byte, c_short, c_int, c_long, c_float, c_longdouble] +## f.restype = c_longdouble +## result = f(1, 2, 3, 4, 5.0, 6.0) +## self.failUnlessEqual(result, 21) +## self.failUnlessEqual(type(result), float) + +## result = f(-1, -2, -3, -4, -5.0, -6.0) +## self.failUnlessEqual(result, -21) +## self.failUnlessEqual(type(result), float) def test_longlongresult(self): try: From buildbot at python.org Tue Sep 11 21:24:42 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 11 Sep 2007 19:24:42 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD trunk Message-ID: <20070911192442.5DB5A1E4004@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%20trunk/builds/12 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Tue Sep 11 22:20:03 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 11 Sep 2007 20:20:03 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070911202003.CE1911E4004@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/39 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') 1 test failed: test_xmlrpc Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable sincerely, -The Buildbot From python-checkins at python.org Tue Sep 11 23:02:28 2007 From: python-checkins at python.org (brett.cannon) Date: Tue, 11 Sep 2007 23:02:28 +0200 (CEST) Subject: [Python-checkins] r58108 - in python/trunk: Lib/test/test_generators.py Misc/NEWS Objects/genobject.c Message-ID: <20070911210228.9765C1E401E@bag.python.org> Author: brett.cannon Date: Tue Sep 11 23:02:28 2007 New Revision: 58108 Modified: python/trunk/Lib/test/test_generators.py python/trunk/Misc/NEWS python/trunk/Objects/genobject.c Log: Generators had their throw() method allowing string exceptions. That's a no-no. Fixes issue #1147. Need to fix 2.5 to raise a proper warning if a string exception is passed in. Modified: python/trunk/Lib/test/test_generators.py ============================================================================== --- python/trunk/Lib/test/test_generators.py (original) +++ python/trunk/Lib/test/test_generators.py Tue Sep 11 23:02:28 2007 @@ -1622,7 +1622,7 @@ >>> f().throw("abc") # throw on just-opened generator Traceback (most recent call last): ... -abc +TypeError: exceptions must be classes, or instances, not str Now let's try closing a generator: Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Sep 11 23:02:28 2007 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Issue #1147: Exceptions were directly allowing string exceptions in their + throw() method even though string exceptions no longer allowed. + - Issue #1096: Prevent a segfault from getting the repr of a very deeply nested list by using the recursion counter. Modified: python/trunk/Objects/genobject.c ============================================================================== --- python/trunk/Objects/genobject.c (original) +++ python/trunk/Objects/genobject.c Tue Sep 11 23:02:28 2007 @@ -252,10 +252,7 @@ Py_INCREF(typ); } } - - /* Allow raising builtin string exceptions */ - - else if (!PyString_CheckExact(typ)) { + else { /* Not something you can raise. throw() fails. */ PyErr_Format(PyExc_TypeError, "exceptions must be classes, or instances, not %s", From buildbot at python.org Tue Sep 11 23:10:58 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 11 Sep 2007 21:10:58 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 trunk Message-ID: <20070911211058.E87861E400F@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%20trunk/builds/39 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Tue Sep 11 23:12:17 2007 From: python-checkins at python.org (brett.cannon) Date: Tue, 11 Sep 2007 23:12:17 +0200 (CEST) Subject: [Python-checkins] r58109 - in python/branches/release25-maint: Misc/NEWS Objects/genobject.c Message-ID: <20070911211217.E954B1E4018@bag.python.org> Author: brett.cannon Date: Tue Sep 11 23:12:14 2007 New Revision: 58109 Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Objects/genobject.c Log: Cause passing a string to generator.throw() to raise a deprecation warning. Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Tue Sep 11 23:12:14 2007 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Issue #1147: Generators were not raising a DeprecationWarning when a string + was passed into throw(). + - Patch #1031213: Decode source line in SyntaxErrors back to its original source encoding. Modified: python/branches/release25-maint/Objects/genobject.c ============================================================================== --- python/branches/release25-maint/Objects/genobject.c (original) +++ python/branches/release25-maint/Objects/genobject.c Tue Sep 11 23:12:14 2007 @@ -262,6 +262,12 @@ typ->ob_type->tp_name); goto failed_throw; } + else { + /* String exceptions are deprecated. */ + if (PyErr_Warn(PyExc_DeprecationWarning, + "raising string exceptions is deprecated")) + goto failed_throw; + } PyErr_Restore(typ, val, tb); return gen_send_ex(gen, Py_None, 1); From guido at python.org Wed Sep 12 00:32:59 2007 From: guido at python.org (Guido van Rossum) Date: Tue, 11 Sep 2007 15:32:59 -0700 Subject: [Python-checkins] r58109 - in python/branches/release25-maint: Misc/NEWS Objects/genobject.c In-Reply-To: <20070911211217.E954B1E4018@bag.python.org> References: <20070911211217.E954B1E4018@bag.python.org> Message-ID: Are you sure it's a good idea to add a new deprecation warning to a 2.5 bugfix release? On 9/11/07, brett.cannon wrote: > Author: brett.cannon > Date: Tue Sep 11 23:12:14 2007 > New Revision: 58109 > > Modified: > python/branches/release25-maint/Misc/NEWS > python/branches/release25-maint/Objects/genobject.c > Log: > Cause passing a string to generator.throw() to raise a deprecation warning. > > > Modified: python/branches/release25-maint/Misc/NEWS > ============================================================================== > --- python/branches/release25-maint/Misc/NEWS (original) > +++ python/branches/release25-maint/Misc/NEWS Tue Sep 11 23:12:14 2007 > @@ -12,6 +12,9 @@ > Core and builtins > ----------------- > > +- Issue #1147: Generators were not raising a DeprecationWarning when a string > + was passed into throw(). > + > - Patch #1031213: Decode source line in SyntaxErrors back to its original source > encoding. > > > Modified: python/branches/release25-maint/Objects/genobject.c > ============================================================================== > --- python/branches/release25-maint/Objects/genobject.c (original) > +++ python/branches/release25-maint/Objects/genobject.c Tue Sep 11 23:12:14 2007 > @@ -262,6 +262,12 @@ > typ->ob_type->tp_name); > goto failed_throw; > } > + else { > + /* String exceptions are deprecated. */ > + if (PyErr_Warn(PyExc_DeprecationWarning, > + "raising string exceptions is deprecated")) > + goto failed_throw; > + } > > PyErr_Restore(typ, val, tb); > return gen_send_ex(gen, Py_None, 1); > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > -- --Guido van Rossum (home page: http://www.python.org/~guido/) From eric+python-dev at trueblade.com Wed Sep 12 03:08:29 2007 From: eric+python-dev at trueblade.com (Eric Smith) Date: Tue, 11 Sep 2007 21:08:29 -0400 Subject: [Python-checkins] r58100 - python/trunk/Lib/test/test_ssl.py In-Reply-To: References: <20070910234124.D2B981E4012@bag.python.org> <46E6ABB9.1050501@gmail.com> Message-ID: <46E73C0D.1050103@trueblade.com> Guido van Rossum wrote: > On 9/11/07, Nick Coghlan wrote: >> bill.janssen wrote: >>> Author: bill.janssen >>> Date: Tue Sep 11 01:41:24 2007 >>> New Revision: 58100 >>> >>> Modified: >>> python/trunk/Lib/test/test_ssl.py >>> Log: >>> A better way of finding an open port to test with. >> Binding to port 0 tells the OS to find an open port for you (someone >> pointed out this trick a while back for some of the other standard >> library server tests) > > Is that universal for all platforms including Windows? I believe so, yes. For Windows, see http://msdn2.microsoft.com/en-us/library/ms737550.aspx "The bind function is used on an unconnected socket before subsequent calls to the connect or listen functions." "For TCP/IP, if the port is specified as zero, the service provider assigns a unique port to the application with a value between 1024 and 5000. The application can use getsockname after calling bind to learn the address and the port that has been assigned to it." For Berkeley sockets, Stevens' "Unix Network Programming" says essentially the same thing in section 6.8, Reserved Ports. I've never seen a system using sockets that doesn't behave this way, although of course anything is possible. Eric. From buildbot at python.org Wed Sep 12 07:34:03 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 12 Sep 2007 05:34:03 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 3.0 Message-ID: <20070912053403.923721E4004@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%203.0/builds/100 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: The web-page 'force build' button was pressed by 'Gregory P. Smith': test the non-openssl hashlib modules Build Source Stamp: [branch py3k] 58059 Blamelist: BUILD FAILED: failed svn sincerely, -The Buildbot From brett at python.org Wed Sep 12 07:57:37 2007 From: brett at python.org (Brett Cannon) Date: Tue, 11 Sep 2007 22:57:37 -0700 Subject: [Python-checkins] r58109 - in python/branches/release25-maint: Misc/NEWS Objects/genobject.c In-Reply-To: References: <20070911211217.E954B1E4018@bag.python.org> Message-ID: On 9/11/07, Guido van Rossum wrote: > Are you sure it's a good idea to add a new deprecation warning to a > 2.5 bugfix release? > Deprecation on string raising was already there, this was just an oversight on my part. I can take it out if people feel it is a bad idea to do this. -Brett > On 9/11/07, brett.cannon wrote: > > Author: brett.cannon > > Date: Tue Sep 11 23:12:14 2007 > > New Revision: 58109 > > > > Modified: > > python/branches/release25-maint/Misc/NEWS > > python/branches/release25-maint/Objects/genobject.c > > Log: > > Cause passing a string to generator.throw() to raise a deprecation warning. > > > > > > Modified: python/branches/release25-maint/Misc/NEWS > > ============================================================================== > > --- python/branches/release25-maint/Misc/NEWS (original) > > +++ python/branches/release25-maint/Misc/NEWS Tue Sep 11 23:12:14 2007 > > @@ -12,6 +12,9 @@ > > Core and builtins > > ----------------- > > > > +- Issue #1147: Generators were not raising a DeprecationWarning when a string > > + was passed into throw(). > > + > > - Patch #1031213: Decode source line in SyntaxErrors back to its original source > > encoding. > > > > > > Modified: python/branches/release25-maint/Objects/genobject.c > > ============================================================================== > > --- python/branches/release25-maint/Objects/genobject.c (original) > > +++ python/branches/release25-maint/Objects/genobject.c Tue Sep 11 23:12:14 2007 > > @@ -262,6 +262,12 @@ > > typ->ob_type->tp_name); > > goto failed_throw; > > } > > + else { > > + /* String exceptions are deprecated. */ > > + if (PyErr_Warn(PyExc_DeprecationWarning, > > + "raising string exceptions is deprecated")) > > + goto failed_throw; > > + } > > > > PyErr_Restore(typ, val, tb); > > return gen_send_ex(gen, Py_None, 1); > > _______________________________________________ > > Python-checkins mailing list > > Python-checkins at python.org > > http://mail.python.org/mailman/listinfo/python-checkins > > > > > -- > --Guido van Rossum (home page: http://www.python.org/~guido/) > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From python-checkins at python.org Wed Sep 12 19:37:19 2007 From: python-checkins at python.org (facundo.batista) Date: Wed, 12 Sep 2007 19:37:19 +0200 (CEST) Subject: [Python-checkins] r58110 - python/branches/decimal-branch/Lib/test/decimaltestdata/abs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/add.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/and.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/base.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/clamp.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/class.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/compare.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotal.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotmag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/copy.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/copyabs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/copynegate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/copysign.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddAbs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddAdd.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddAnd.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddBase.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCanonical.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddClass.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompare.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareSig.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotal.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotalMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopy.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyAbs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyNegate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopySign.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivide.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivideInt.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddEncode.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddFMA.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddInvert.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddLogB.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMax.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMaxMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMin.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMultiply.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextMinus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextPlus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextToward.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddOr.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddPlus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddQuantize.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddReduce.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainder.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainderNear.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddRotate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddSameQuantum.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddScaleB.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddShift.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddSubtract.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddToIntegral.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddXor.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/decDouble.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/decQuad.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/decSingle.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/divide.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/divideint.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqAbs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqAdd.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqAnd.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqBase.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCanonical.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqClass.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompare.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareSig.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotal.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotalMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopy.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyAbs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyNegate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopySign.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivide.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivideInt.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqEncode.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqFMA.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqInvert.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqLogB.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMax.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMaxMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMin.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMultiply.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextMinus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextPlus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextToward.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqOr.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqPlus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqQuantize.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqReduce.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainder.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainderNear.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqRotate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqSameQuantum.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqScaleB.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqShift.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqSubtract.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqToIntegral.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqXor.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dsBase.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dsEncode.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/exp.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/fma.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/inexact.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/invert.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ln.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/log10.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/logb.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/max.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/maxmag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/min.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/minmag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/minus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/multiply.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/nextminus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/nextplus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/nexttoward.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/or.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/plus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/power.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/powersqrt.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/quantize.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/randoms.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/reduce.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/remainder.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/rescale.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/rotate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/rounding.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/samequantum.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/scaleb.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/shift.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/subtract.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/testall.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/tointegral.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/tointegralx.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/xor.decTest Message-ID: <20070912173719.ECF011E4005@bag.python.org> Author: facundo.batista Date: Wed Sep 12 19:37:16 2007 New Revision: 58110 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/abs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/add.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/and.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/base.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/clamp.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/class.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/compare.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotal.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotmag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/copy.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/copyabs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/copynegate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/copysign.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddAbs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddAdd.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddAnd.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddBase.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCanonical.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddClass.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompare.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareSig.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotal.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotalMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopy.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyAbs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyNegate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopySign.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivide.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivideInt.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddEncode.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddFMA.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddInvert.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddLogB.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMax.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMaxMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMin.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddMultiply.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextMinus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextPlus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextToward.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddOr.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddPlus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddQuantize.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddReduce.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainder.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainderNear.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddRotate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddSameQuantum.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddScaleB.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddShift.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddSubtract.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddToIntegral.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ddXor.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/decDouble.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/decQuad.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/decSingle.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/divide.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/divideint.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqAbs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqAdd.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqAnd.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqBase.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCanonical.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqClass.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompare.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareSig.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotal.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotalMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopy.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyAbs.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyNegate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopySign.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivide.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivideInt.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqEncode.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqFMA.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqInvert.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqLogB.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMax.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMaxMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMin.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinMag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqMultiply.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextMinus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextPlus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextToward.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqOr.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqPlus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqQuantize.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqReduce.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainder.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainderNear.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqRotate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqSameQuantum.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqScaleB.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqShift.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqSubtract.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqToIntegral.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dqXor.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dsBase.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/dsEncode.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/exp.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/fma.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/inexact.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/invert.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/ln.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/log10.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/logb.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/max.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/maxmag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/min.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/minmag.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/minus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/multiply.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/nextminus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/nextplus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/nexttoward.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/or.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/plus.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/power.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/powersqrt.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/quantize.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/randoms.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/reduce.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/remainder.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/rescale.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/rotate.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/rounding.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/samequantum.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/scaleb.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/shift.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/subtract.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/testall.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/tointegral.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/tointegralx.decTest python/branches/decimal-branch/Lib/test/decimaltestdata/xor.decTest Log: Updated tests cases from Cowlishaw, v2.56 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/abs.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/abs.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/abs.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests primarily tests the existence of the operator. -- Additon, subtraction, rounding, and more overflows are tested Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/add.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/add.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/add.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 9 rounding: half_up Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/and.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/and.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/and.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/base.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/base.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/base.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 -- This file tests base conversions from string to a decimal number Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/clamp.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/clamp.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/clamp.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests uses the same limits as the 8-byte concrete -- representation, but applies clamping without using format-specific Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/class.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/class.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/class.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- [New 2006.11.27] Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/compare.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/compare.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/compare.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotal.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotal.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotal.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotmag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotmag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotmag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that it cannot be assumed that add/subtract tests cover paths -- for this operation adequately, here, because the code might be Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/copy.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/copy.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/copy.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/copyabs.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/copyabs.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/copyabs.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/copynegate.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/copynegate.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/copynegate.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/copysign.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/copysign.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/copysign.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddAbs.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddAbs.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddAbs.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddAdd.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddAdd.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddAdd.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests are for decDoubles only; all arguments are -- representable in a decDouble @@ -1131,6 +1131,8 @@ ddadd81107 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81108 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81109 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81120 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81121 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded rounding: half_up ddadd81200 add .2300 12345678901234.00 -> 12345678901234.23 Rounded @@ -1143,6 +1145,8 @@ ddadd81207 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81208 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81209 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81220 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81221 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded rounding: half_down ddadd81300 add .2300 12345678901234.00 -> 12345678901234.23 Rounded @@ -1155,6 +1159,8 @@ ddadd81307 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81308 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81309 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded +ddadd81320 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81321 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded rounding: up ddadd81400 add .2300 12345678901234.00 -> 12345678901234.23 Rounded @@ -1168,6 +1174,8 @@ ddadd81408 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81409 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81411 add -.2399 -12345678901234.00 -> -12345678901234.24 Inexact Rounded +ddadd81420 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81421 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded rounding: down ddadd81500 add .2300 12345678901234.00 -> 12345678901234.23 Rounded @@ -1181,6 +1189,8 @@ ddadd81508 add .2370 12345678901234.00 -> 12345678901234.23 Inexact Rounded ddadd81509 add .2399 12345678901234.00 -> 12345678901234.23 Inexact Rounded ddadd81511 add -.2399 -12345678901234.00 -> -12345678901234.23 Inexact Rounded +ddadd81520 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded +ddadd81521 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded rounding: ceiling ddadd81600 add .2300 12345678901234.00 -> 12345678901234.23 Rounded @@ -1194,6 +1204,8 @@ ddadd81608 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81609 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded ddadd81611 add -.2399 -12345678901234.00 -> -12345678901234.23 Inexact Rounded +ddadd81620 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded +ddadd81621 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded rounding: floor ddadd81700 add .2300 12345678901234.00 -> 12345678901234.23 Rounded @@ -1207,6 +1219,8 @@ ddadd81708 add .2370 12345678901234.00 -> 12345678901234.23 Inexact Rounded ddadd81709 add .2399 12345678901234.00 -> 12345678901234.23 Inexact Rounded ddadd81711 add -.2399 -12345678901234.00 -> -12345678901234.24 Inexact Rounded +ddadd81720 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded +ddadd81721 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded rounding: 05up ddadd81800 add .2000 12345678901234.00 -> 12345678901234.20 Rounded @@ -1218,6 +1232,8 @@ ddadd81808 add .2070 12345678901234.00 -> 12345678901234.21 Inexact Rounded ddadd81809 add .2099 12345678901234.00 -> 12345678901234.21 Inexact Rounded ddadd81811 add -.2099 -12345678901234.00 -> -12345678901234.21 Inexact Rounded +ddadd81820 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded +ddadd81821 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded ddadd81900 add .2100 12345678901234.00 -> 12345678901234.21 Rounded ddadd81901 add .2101 12345678901234.00 -> 12345678901234.21 Inexact Rounded Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddAnd.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddAnd.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddAnd.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddBase.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddBase.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddBase.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This file tests base conversions from string to a decimal number -- and back to a string (in Scientific form) Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCanonical.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCanonical.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCanonical.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This file tests that copy operations leave uncanonical operands -- unchanged, and vice versa Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddClass.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddClass.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddClass.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- [New 2006.11.27] precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompare.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompare.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompare.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareSig.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareSig.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareSig.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotal.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotal.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotal.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotalMag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotalMag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotalMag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopy.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopy.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopy.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyAbs.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyAbs.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyAbs.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyNegate.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyNegate.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyNegate.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopySign.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopySign.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopySign.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivide.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivide.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivide.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 @@ -746,6 +746,107 @@ dddiv3073 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded dddiv3074 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded +-- random divide tests with result near 1 +rounding: half_even +dddiv4001 divide 3195385192916917 3195385192946695 -> 0.9999999999906809 Inexact Rounded +dddiv4002 divide 1393723067526993 1393723067519475 -> 1.000000000005394 Inexact Rounded +dddiv4003 divide 759985543702302 759985543674015 -> 1.000000000037220 Inexact Rounded +dddiv4004 divide 9579158456027302 9579158456036864 -> 0.9999999999990018 Inexact Rounded +dddiv4005 divide 7079398299143569 7079398299156904 -> 0.9999999999981164 Inexact Rounded +dddiv4006 divide 6636169255366598 6636169255336386 -> 1.000000000004553 Inexact Rounded +dddiv4007 divide 6964813971340090 6964813971321554 -> 1.000000000002661 Inexact Rounded +dddiv4008 divide 4182275225480784 4182275225454009 -> 1.000000000006402 Inexact Rounded +dddiv4009 divide 9228325124938029 9228325124918730 -> 1.000000000002091 Inexact Rounded +dddiv4010 divide 3428346338630192 3428346338609843 -> 1.000000000005936 Inexact Rounded +dddiv4011 divide 2143511550722893 2143511550751754 -> 0.9999999999865356 Inexact Rounded +dddiv4012 divide 1672732924396785 1672732924401811 -> 0.9999999999969953 Inexact Rounded +dddiv4013 divide 4190714611948216 4190714611948664 -> 0.9999999999998931 Inexact Rounded +dddiv4014 divide 3942254800848877 3942254800814556 -> 1.000000000008706 Inexact Rounded +dddiv4015 divide 2854459826952334 2854459826960762 -> 0.9999999999970474 Inexact Rounded +dddiv4016 divide 2853258953664731 2853258953684471 -> 0.9999999999930816 Inexact Rounded +dddiv4017 divide 9453512638125978 9453512638146425 -> 0.9999999999978371 Inexact Rounded +dddiv4018 divide 339476633940369 339476633912887 -> 1.000000000080954 Inexact Rounded +dddiv4019 divide 4542181492688467 4542181492697735 -> 0.9999999999979596 Inexact Rounded +dddiv4020 divide 7312600192399197 7312600192395424 -> 1.000000000000516 Inexact Rounded +dddiv4021 divide 1811674985570111 1811674985603935 -> 0.9999999999813300 Inexact Rounded +dddiv4022 divide 1706462639003481 1706462639017740 -> 0.9999999999916441 Inexact Rounded +dddiv4023 divide 6697052654940368 6697052654934110 -> 1.000000000000934 Inexact Rounded +dddiv4024 divide 5015283664277539 5015283664310719 -> 0.9999999999933842 Inexact Rounded +dddiv4025 divide 2359501561537464 2359501561502464 -> 1.000000000014834 Inexact Rounded +dddiv4026 divide 2669850227909157 2669850227901548 -> 1.000000000002850 Inexact Rounded +dddiv4027 divide 9329725546974648 9329725547002445 -> 0.9999999999970206 Inexact Rounded +dddiv4028 divide 3228562867071248 3228562867106206 -> 0.9999999999891723 Inexact Rounded +dddiv4029 divide 4862226644921175 4862226644909380 -> 1.000000000002426 Inexact Rounded +dddiv4030 divide 1022267997054529 1022267997071329 -> 0.9999999999835660 Inexact Rounded +dddiv4031 divide 1048777482023719 1048777482000948 -> 1.000000000021712 Inexact Rounded +dddiv4032 divide 9980113777337098 9980113777330539 -> 1.000000000000657 Inexact Rounded +dddiv4033 divide 7506839167963908 7506839167942901 -> 1.000000000002798 Inexact Rounded +dddiv4034 divide 231119751977860 231119751962453 -> 1.000000000066662 Inexact Rounded +dddiv4035 divide 4034903664762962 4034903664795526 -> 0.9999999999919294 Inexact Rounded +dddiv4036 divide 5700122152274696 5700122152251386 -> 1.000000000004089 Inexact Rounded +dddiv4037 divide 6869599590293110 6869599590293495 -> 0.9999999999999440 Inexact Rounded +dddiv4038 divide 5576281960092797 5576281960105579 -> 0.9999999999977078 Inexact Rounded +dddiv4039 divide 2304844888381318 2304844888353073 -> 1.000000000012255 Inexact Rounded +dddiv4040 divide 3265933651656452 3265933651682779 -> 0.9999999999919389 Inexact Rounded +dddiv4041 divide 5235714985079914 5235714985066131 -> 1.000000000002632 Inexact Rounded +dddiv4042 divide 5578481572827551 5578481572822945 -> 1.000000000000826 Inexact Rounded +dddiv4043 divide 4909616081396134 4909616081373076 -> 1.000000000004696 Inexact Rounded +dddiv4044 divide 636447224349537 636447224338757 -> 1.000000000016938 Inexact Rounded +dddiv4045 divide 1539373428396640 1539373428364727 -> 1.000000000020731 Inexact Rounded +dddiv4046 divide 2028786707377893 2028786707378866 -> 0.9999999999995204 Inexact Rounded +dddiv4047 divide 137643260486222 137643260487419 -> 0.9999999999913036 Inexact Rounded +dddiv4048 divide 247451519746765 247451519752267 -> 0.9999999999777653 Inexact Rounded +dddiv4049 divide 7877858475022054 7877858474999794 -> 1.000000000002826 Inexact Rounded +dddiv4050 divide 7333242694766258 7333242694744628 -> 1.000000000002950 Inexact Rounded +dddiv4051 divide 124051503698592 124051503699397 -> 0.9999999999935108 Inexact Rounded +dddiv4052 divide 8944737432385188 8944737432406860 -> 0.9999999999975771 Inexact Rounded +dddiv4053 divide 9883948923406874 9883948923424843 -> 0.9999999999981820 Inexact Rounded +dddiv4054 divide 6829178741654284 6829178741671973 -> 0.9999999999974098 Inexact Rounded +dddiv4055 divide 7342752479768122 7342752479793385 -> 0.9999999999965595 Inexact Rounded +dddiv4056 divide 8066426579008783 8066426578977563 -> 1.000000000003870 Inexact Rounded +dddiv4057 divide 8992775071383295 8992775071352712 -> 1.000000000003401 Inexact Rounded +dddiv4058 divide 5485011755545641 5485011755543611 -> 1.000000000000370 Inexact Rounded +dddiv4059 divide 5779983054353918 5779983054365300 -> 0.9999999999980308 Inexact Rounded +dddiv4060 divide 9502265102713774 9502265102735208 -> 0.9999999999977443 Inexact Rounded +dddiv4061 divide 2109558399130981 2109558399116281 -> 1.000000000006968 Inexact Rounded +dddiv4062 divide 5296182636350471 5296182636351521 -> 0.9999999999998017 Inexact Rounded +dddiv4063 divide 1440019225591883 1440019225601844 -> 0.9999999999930827 Inexact Rounded +dddiv4064 divide 8182110791881341 8182110791847174 -> 1.000000000004176 Inexact Rounded +dddiv4065 divide 489098235512060 489098235534516 -> 0.9999999999540869 Inexact Rounded +dddiv4066 divide 6475687084782038 6475687084756089 -> 1.000000000004007 Inexact Rounded +dddiv4067 divide 8094348555736948 8094348555759236 -> 0.9999999999972465 Inexact Rounded +dddiv4068 divide 1982766816291543 1982766816309463 -> 0.9999999999909621 Inexact Rounded +dddiv4069 divide 9277314300113251 9277314300084467 -> 1.000000000003103 Inexact Rounded +dddiv4070 divide 4335532959318934 4335532959293167 -> 1.000000000005943 Inexact Rounded +dddiv4071 divide 7767113032981348 7767113032968132 -> 1.000000000001702 Inexact Rounded +dddiv4072 divide 1578548053342868 1578548053370448 -> 0.9999999999825282 Inexact Rounded +dddiv4073 divide 3790420686666898 3790420686636315 -> 1.000000000008068 Inexact Rounded +dddiv4074 divide 871682421955147 871682421976441 -> 0.9999999999755714 Inexact Rounded +dddiv4075 divide 744141054479940 744141054512329 -> 0.9999999999564746 Inexact Rounded +dddiv4076 divide 8956824183670735 8956824183641741 -> 1.000000000003237 Inexact Rounded +dddiv4077 divide 8337291694485682 8337291694451193 -> 1.000000000004137 Inexact Rounded +dddiv4078 divide 4107775944683669 4107775944657097 -> 1.000000000006469 Inexact Rounded +dddiv4079 divide 8691900057964648 8691900057997555 -> 0.9999999999962141 Inexact Rounded +dddiv4080 divide 2229528520536462 2229528520502337 -> 1.000000000015306 Inexact Rounded +dddiv4081 divide 398442083774322 398442083746273 -> 1.000000000070397 Inexact Rounded +dddiv4082 divide 5319819776808759 5319819776838313 -> 0.9999999999944445 Inexact Rounded +dddiv4083 divide 7710491299066855 7710491299041858 -> 1.000000000003242 Inexact Rounded +dddiv4084 divide 9083231296087266 9083231296058160 -> 1.000000000003204 Inexact Rounded +dddiv4085 divide 3566873574904559 3566873574890328 -> 1.000000000003990 Inexact Rounded +dddiv4086 divide 596343290550525 596343290555614 -> 0.9999999999914663 Inexact Rounded +dddiv4087 divide 278227925093192 278227925068104 -> 1.000000000090171 Inexact Rounded +dddiv4088 divide 3292902958490649 3292902958519881 -> 0.9999999999911227 Inexact Rounded +dddiv4089 divide 5521871364245881 5521871364229536 -> 1.000000000002960 Inexact Rounded +dddiv4090 divide 2406505602883617 2406505602857997 -> 1.000000000010646 Inexact Rounded +dddiv4091 divide 7741146984869208 7741146984867255 -> 1.000000000000252 Inexact Rounded +dddiv4092 divide 4576041832414909 4576041832405102 -> 1.000000000002143 Inexact Rounded +dddiv4093 divide 9183756982878057 9183756982901934 -> 0.9999999999974001 Inexact Rounded +dddiv4094 divide 6215736513855159 6215736513870342 -> 0.9999999999975573 Inexact Rounded +dddiv4095 divide 248554968534533 248554968551417 -> 0.9999999999320714 Inexact Rounded +dddiv4096 divide 376314165668645 376314165659755 -> 1.000000000023624 Inexact Rounded +dddiv4097 divide 5513569249809718 5513569249808906 -> 1.000000000000147 Inexact Rounded +dddiv4098 divide 3367992242167904 3367992242156228 -> 1.000000000003467 Inexact Rounded +dddiv4099 divide 6134869538966967 6134869538985986 -> 0.9999999999968999 Inexact Rounded -- Null tests dddiv9998 divide 10 # -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivideInt.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivideInt.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivideInt.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddEncode.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddEncode.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddEncode.decTest Wed Sep 12 19:37:16 2007 @@ -18,7 +18,7 @@ -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -- [Previously called decimal64.decTest] -version: 2.55 +version: 2.56 -- This set of tests is for the eight-byte concrete representation. -- Its characteristics are: Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddFMA.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddFMA.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddFMA.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddInvert.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddInvert.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddInvert.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddLogB.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddLogB.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddLogB.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddMax.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddMax.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddMax.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddMaxMag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddMaxMag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddMaxMag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddMin.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddMin.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddMin.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinMag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinMag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinMag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddMultiply.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddMultiply.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddMultiply.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests are for decDoubles only; all arguments are -- representable in a decDouble Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextMinus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextMinus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextMinus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextPlus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextPlus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextPlus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextToward.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextToward.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextToward.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddOr.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddOr.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddOr.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddPlus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddPlus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddPlus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddQuantize.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddQuantize.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddQuantize.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Most of the tests here assume a "regular pattern", where the -- sign and coefficient are +1. Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddReduce.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddReduce.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddReduce.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainder.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainder.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainder.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 @@ -338,6 +338,18 @@ ddrem444 remainder 100E-397 21E-398 -> 1.3E-397 Subnormal ddrem445 remainder 100E-397 30E-398 -> 1.0E-397 Subnormal +-- zero signs +ddrem650 remainder 1 1 -> 0 +ddrem651 remainder -1 1 -> -0 +ddrem652 remainder 1 -1 -> 0 +ddrem653 remainder -1 -1 -> -0 +ddrem654 remainder 0 1 -> 0 +ddrem655 remainder -0 1 -> -0 +ddrem656 remainder 0 -1 -> 0 +ddrem657 remainder -0 -1 -> -0 +ddrem658 remainder 0.00 1 -> 0.00 +ddrem659 remainder -0.00 1 -> -0.00 + -- Specials ddrem680 remainder Inf -Inf -> NaN Invalid_operation ddrem681 remainder Inf -1000 -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainderNear.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainderNear.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainderNear.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 @@ -366,6 +366,18 @@ ddrmn444 remaindernear 100E-397 21E-398 -> -8E-398 Subnormal ddrmn445 remaindernear 100E-397 30E-398 -> 1.0E-397 Subnormal +-- zero signs +ddrmn650 remaindernear 1 1 -> 0 +ddrmn651 remaindernear -1 1 -> -0 +ddrmn652 remaindernear 1 -1 -> 0 +ddrmn653 remaindernear -1 -1 -> -0 +ddrmn654 remaindernear 0 1 -> 0 +ddrmn655 remaindernear -0 1 -> -0 +ddrmn656 remaindernear 0 -1 -> 0 +ddrmn657 remaindernear -0 -1 -> -0 +ddrmn658 remaindernear 0.00 1 -> 0.00 +ddrmn659 remaindernear -0.00 1 -> -0.00 + -- Specials ddrmn680 remaindernear Inf -Inf -> NaN Invalid_operation ddrmn681 remaindernear Inf -1000 -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddRotate.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddRotate.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddRotate.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddSameQuantum.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddSameQuantum.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddSameQuantum.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decDoubles. precision: 16 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddScaleB.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddScaleB.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddScaleB.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddShift.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddShift.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddShift.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddSubtract.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddSubtract.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddSubtract.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests are for decDoubles only; all arguments are -- representable in a decDouble Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddToIntegral.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddToIntegral.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddToIntegral.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests tests the extended specification 'round-to-integral -- value-exact' operations (from IEEE 854, later modified in 754r). Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ddXor.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ddXor.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ddXor.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 precision: 16 maxExponent: 384 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/decDouble.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/decDouble.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/decDouble.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- decDouble tests dectest: ddAbs Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/decQuad.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/decQuad.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/decQuad.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- decQuad tests dectest: dqAbs Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/decSingle.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/decSingle.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/decSingle.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- decSingle tests dectest: dsBase Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/divide.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/divide.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/divide.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/divideint.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/divideint.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/divideint.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqAbs.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqAbs.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqAbs.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqAdd.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqAdd.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqAdd.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests are for decQuads only; all arguments are -- representable in a decQuad Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqAnd.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqAnd.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqAnd.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqBase.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqBase.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqBase.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This file tests base conversions from string to a decimal number -- and back to a string (in Scientific form) Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCanonical.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCanonical.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCanonical.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This file tests that copy operations leave uncanonical operands -- unchanged, and vice versa @@ -37,135 +37,135 @@ -- assert some standard (canonical) values; this tests that FromString -- produces canonical results (many more in decimalNN) -ddcan001 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan002 apply 0 -> #22080000000000000000000000000000 -ddcan003 apply 1 -> #22080000000000000000000000000001 -ddcan004 apply -1 -> #a2080000000000000000000000000001 -ddcan005 apply Infinity -> #78000000000000000000000000000000 -ddcan006 apply -Infinity -> #f8000000000000000000000000000000 -ddcan007 apply -NaN -> #fc000000000000000000000000000000 -ddcan008 apply -sNaN -> #fe000000000000000000000000000000 -ddcan009 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan010 apply sNaN999999999999999999999999999999999 -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan001 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan002 apply 0 -> #22080000000000000000000000000000 +dqcan003 apply 1 -> #22080000000000000000000000000001 +dqcan004 apply -1 -> #a2080000000000000000000000000001 +dqcan005 apply Infinity -> #78000000000000000000000000000000 +dqcan006 apply -Infinity -> #f8000000000000000000000000000000 +dqcan007 apply -NaN -> #fc000000000000000000000000000000 +dqcan008 apply -sNaN -> #fe000000000000000000000000000000 +dqcan009 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan010 apply sNaN999999999999999999999999999999999 -> #7e000ff3fcff3fcff3fcff3fcff3fcff decan011 apply 9999999999999999999999999999999999 -> #6e080ff3fcff3fcff3fcff3fcff3fcff -ddcan012 apply 7.50 -> #220780000000000000000000000003d0 -ddcan013 apply 9.99 -> #220780000000000000000000000000ff +dqcan012 apply 7.50 -> #220780000000000000000000000003d0 +dqcan013 apply 9.99 -> #220780000000000000000000000000ff -- Base tests for canonical encodings (individual operator -- propagation is tested later) -- Finites: declets in coefficient -ddcan021 canonical #77ffcff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan022 canonical #77fffff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan023 canonical #77ffcffffcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan024 canonical #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan025 canonical #77ffcff3fcffffcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan026 canonical #77ffcff3fcff3ffff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan027 canonical #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan028 canonical #77ffcff3fcff3fcff3ffff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan029 canonical #77ffcff3fcff3fcff3fcffffcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan030 canonical #77ffcff3fcff3fcff3fcff3ffff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan031 canonical #77ffcff3fcff3fcff3fcff3fcffffcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan032 canonical #77ffcff3fcff3fcff3fcff3fcff3ffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan021 canonical #77ffcff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan022 canonical #77fffff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan023 canonical #77ffcffffcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan024 canonical #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan025 canonical #77ffcff3fcffffcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan026 canonical #77ffcff3fcff3ffff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan027 canonical #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan028 canonical #77ffcff3fcff3fcff3ffff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan029 canonical #77ffcff3fcff3fcff3fcffffcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan030 canonical #77ffcff3fcff3fcff3fcff3ffff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan031 canonical #77ffcff3fcff3fcff3fcff3fcffffcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan032 canonical #77ffcff3fcff3fcff3fcff3fcff3ffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -- NaN: declets in payload -ddcan061 canonical #7c000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan062 canonical #7c000ffffcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan063 canonical #7c000ff3ffff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan064 canonical #7c000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan065 canonical #7c000ff3fcff3ffff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan066 canonical #7c000ff3fcff3fcffffcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan067 canonical #7c000ff3fcff3fcff3ffff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan068 canonical #7c000ff3fcff3fcff3fcffffcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan069 canonical #7c000ff3fcff3fcff3fcff3ffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan070 canonical #7c000ff3fcff3fcff3fcff3fcffffcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan071 canonical #7c000ff3fcff3fcff3fcff3fcff3ffff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan061 canonical #7c000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan062 canonical #7c000ffffcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan063 canonical #7c000ff3ffff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan064 canonical #7c000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan065 canonical #7c000ff3fcff3ffff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan066 canonical #7c000ff3fcff3fcffffcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan067 canonical #7c000ff3fcff3fcff3ffff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan068 canonical #7c000ff3fcff3fcff3fcffffcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan069 canonical #7c000ff3fcff3fcff3fcff3ffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan070 canonical #7c000ff3fcff3fcff3fcff3fcffffcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan071 canonical #7c000ff3fcff3fcff3fcff3fcff3ffff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -- NaN: exponent continuation bits [excluding sNaN selector] -ddcan081 canonical #7d000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan082 canonical #7c800ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan083 canonical #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan084 canonical #7c200ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan085 canonical #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan086 canonical #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan087 canonical #7c040ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan088 canonical #7c020ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan089 canonical #7c010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan090 canonical #7c008ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan091 canonical #7c004ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan081 canonical #7d000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan082 canonical #7c800ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan083 canonical #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan084 canonical #7c200ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan085 canonical #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan086 canonical #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan087 canonical #7c040ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan088 canonical #7c020ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan089 canonical #7c010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan090 canonical #7c008ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan091 canonical #7c004ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -- sNaN: declets in payload -ddcan101 canonical #7e000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan102 canonical #7e000ffffcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan103 canonical #7e000ff3ffff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan104 canonical #7e000ff3fcffffcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan105 canonical #7e000ff3fcff3ffff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan106 canonical #7e000ff3fcff3fcffffcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan107 canonical #7e000ff3fcff3fcff3ffff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan108 canonical #7e000ff3fcff3fcff3fcffffcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan109 canonical #7e000ff3fcff3fcff3fcff3ffff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan100 canonical #7e000ff3fcff3fcff3fcff3fcffffcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan111 canonical #7e000ff3fcff3fcff3fcff3fcff3ffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan101 canonical #7e000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan102 canonical #7e000ffffcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan103 canonical #7e000ff3ffff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan104 canonical #7e000ff3fcffffcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan105 canonical #7e000ff3fcff3ffff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan106 canonical #7e000ff3fcff3fcffffcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan107 canonical #7e000ff3fcff3fcff3ffff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan108 canonical #7e000ff3fcff3fcff3fcffffcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan109 canonical #7e000ff3fcff3fcff3fcff3ffff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan100 canonical #7e000ff3fcff3fcff3fcff3fcffffcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan111 canonical #7e000ff3fcff3fcff3fcff3fcff3ffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -- sNaN: exponent continuation bits [excluding sNaN selector] -ddcan121 canonical #7f000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan122 canonical #7e800ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan123 canonical #7e400ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan124 canonical #7e200ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan125 canonical #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan126 canonical #7e080ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan127 canonical #7e040ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan128 canonical #7e020ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan129 canonical #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan130 canonical #7e008ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -ddcan131 canonical #7e004ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan121 canonical #7f000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan122 canonical #7e800ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan123 canonical #7e400ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan124 canonical #7e200ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan125 canonical #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan126 canonical #7e080ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan127 canonical #7e040ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan128 canonical #7e020ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan129 canonical #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan130 canonical #7e008ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff +dqcan131 canonical #7e004ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff -- Inf: exponent continuation bits -ddcan137 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan138 canonical #79000000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan139 canonical #7a000000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan140 canonical #78800000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan141 canonical #78400000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan142 canonical #78200000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan143 canonical #78100000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan144 canonical #78080000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan145 canonical #78040000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan146 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan147 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan148 canonical #78008000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan149 canonical #78004000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan137 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan138 canonical #79000000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan139 canonical #7a000000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan140 canonical #78800000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan141 canonical #78400000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan142 canonical #78200000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan143 canonical #78100000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan144 canonical #78080000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan145 canonical #78040000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan146 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan147 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan148 canonical #78008000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan149 canonical #78004000000000000000000000000000 -> #78000000000000000000000000000000 -- Inf: coefficient continuation bits (first, last, and a few others) -ddcan150 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan151 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan152 canonical #78000000000000000000000000000001 -> #78000000000000000000000000000000 -ddcan153 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan154 canonical #78002000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan155 canonical #78000800000000000000000000000000 -> #78000000000000000000000000000000 -ddcan156 canonical #78000020000000000000000000000000 -> #78000000000000000000000000000000 -ddcan157 canonical #78000004000000000000000000000000 -> #78000000000000000000000000000000 -ddcan158 canonical #78000000400000000000000000000000 -> #78000000000000000000000000000000 -ddcan159 canonical #78000000080000000000000000000000 -> #78000000000000000000000000000000 -ddcan160 canonical #78000000004000000000000000000000 -> #78000000000000000000000000000000 -ddcan161 canonical #78000000000200000000000000000000 -> #78000000000000000000000000000000 -ddcan162 canonical #78000000000080000000000000000000 -> #78000000000000000000000000000000 -ddcan163 canonical #78000000000002000000000000000000 -> #78000000000000000000000000000000 -ddcan164 canonical #78000000000000400000000000000000 -> #78000000000000000000000000000000 -ddcan165 canonical #78000000000000080000000000000000 -> #78000000000000000000000000000000 -ddcan166 canonical #78000000000000001000000000000000 -> #78000000000000000000000000000000 -ddcan167 canonical #78000000000000000200000000000000 -> #78000000000000000000000000000000 -ddcan168 canonical #78000000000000000080000000000000 -> #78000000000000000000000000000000 -ddcan169 canonical #78000000000000000004000000000000 -> #78000000000000000000000000000000 -ddcan170 canonical #78000000000000000000400000000000 -> #78000000000000000000000000000000 -ddcan171 canonical #78000000000000000000010000000000 -> #78000000000000000000000000000000 -ddcan172 canonical #78000000000000000000002000000000 -> #78000000000000000000000000000000 -ddcan173 canonical #78000000000000000000000400000000 -> #78000000000000000000000000000000 -ddcan174 canonical #78000000000000000000000080000000 -> #78000000000000000000000000000000 -ddcan175 canonical #78000000000000000000000002000000 -> #78000000000000000000000000000000 -ddcan176 canonical #78000000000000000000000000400000 -> #78000000000000000000000000000000 -ddcan177 canonical #78000000000000000000000000020000 -> #78000000000000000000000000000000 -ddcan178 canonical #78000000000000000000000000001000 -> #78000000000000000000000000000000 -ddcan179 canonical #78000000000000000000000000000400 -> #78000000000000000000000000000000 -ddcan180 canonical #78000000000000000000000000000020 -> #78000000000000000000000000000000 -ddcan181 canonical #78000000000000000000000000000008 -> #78000000000000000000000000000000 +dqcan150 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan151 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan152 canonical #78000000000000000000000000000001 -> #78000000000000000000000000000000 +dqcan153 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan154 canonical #78002000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan155 canonical #78000800000000000000000000000000 -> #78000000000000000000000000000000 +dqcan156 canonical #78000020000000000000000000000000 -> #78000000000000000000000000000000 +dqcan157 canonical #78000004000000000000000000000000 -> #78000000000000000000000000000000 +dqcan158 canonical #78000000400000000000000000000000 -> #78000000000000000000000000000000 +dqcan159 canonical #78000000080000000000000000000000 -> #78000000000000000000000000000000 +dqcan160 canonical #78000000004000000000000000000000 -> #78000000000000000000000000000000 +dqcan161 canonical #78000000000200000000000000000000 -> #78000000000000000000000000000000 +dqcan162 canonical #78000000000080000000000000000000 -> #78000000000000000000000000000000 +dqcan163 canonical #78000000000002000000000000000000 -> #78000000000000000000000000000000 +dqcan164 canonical #78000000000000400000000000000000 -> #78000000000000000000000000000000 +dqcan165 canonical #78000000000000080000000000000000 -> #78000000000000000000000000000000 +dqcan166 canonical #78000000000000001000000000000000 -> #78000000000000000000000000000000 +dqcan167 canonical #78000000000000000200000000000000 -> #78000000000000000000000000000000 +dqcan168 canonical #78000000000000000080000000000000 -> #78000000000000000000000000000000 +dqcan169 canonical #78000000000000000004000000000000 -> #78000000000000000000000000000000 +dqcan170 canonical #78000000000000000000400000000000 -> #78000000000000000000000000000000 +dqcan171 canonical #78000000000000000000010000000000 -> #78000000000000000000000000000000 +dqcan172 canonical #78000000000000000000002000000000 -> #78000000000000000000000000000000 +dqcan173 canonical #78000000000000000000000400000000 -> #78000000000000000000000000000000 +dqcan174 canonical #78000000000000000000000080000000 -> #78000000000000000000000000000000 +dqcan175 canonical #78000000000000000000000002000000 -> #78000000000000000000000000000000 +dqcan176 canonical #78000000000000000000000000400000 -> #78000000000000000000000000000000 +dqcan177 canonical #78000000000000000000000000020000 -> #78000000000000000000000000000000 +dqcan178 canonical #78000000000000000000000000001000 -> #78000000000000000000000000000000 +dqcan179 canonical #78000000000000000000000000000400 -> #78000000000000000000000000000000 +dqcan180 canonical #78000000000000000000000000000020 -> #78000000000000000000000000000000 +dqcan181 canonical #78000000000000000000000000000008 -> #78000000000000000000000000000000 -- Now the operators -- trying to check paths that might fail to @@ -173,200 +173,200 @@ ----- Add: -- Finites: neutral 0 -ddcan202 add 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff -ddcan203 add #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan202 add 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan203 add #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff -- tiny zero -ddcan204 add 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded -ddcan205 add #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded +dqcan204 add 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded +dqcan205 add #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded -- tiny non zero -ddcan206 add -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded -ddcan207 add #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded +dqcan206 add -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded +dqcan207 add #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded -- NaN: declets in payload -ddcan211 add 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan212 add #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan211 add 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan212 add #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -- NaN: exponent continuation bits [excluding sNaN selector] -ddcan213 add 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan214 add #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan213 add 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan214 add #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -- sNaN: declets in payload -ddcan215 add 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -ddcan216 add #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan215 add 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan216 add #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -- sNaN: exponent continuation bits [excluding sNaN selector] -ddcan217 add 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -ddcan218 add #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan217 add 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan218 add #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -- Inf: exponent continuation bits -ddcan220 add 0 #78010000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan221 add #78680000000000000000000000000000 0 -> #78000000000000000000000000000000 +dqcan220 add 0 #78010000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan221 add #78680000000000000000000000000000 0 -> #78000000000000000000000000000000 -- Inf: coefficient continuation bits -ddcan222 add 0 #78002000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan223 add #78000000000000000000000000000001 0 -> #78000000000000000000000000000000 -ddcan224 add 0 #78000002000000000000000000000000 -> #78000000000000000000000000000000 -ddcan225 add #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000 -ddcan226 add 0 #78000000000000000005000000000000 -> #78000000000000000000000000000000 -ddcan227 add #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000 +dqcan222 add 0 #78002000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan223 add #78000000000000000000000000000001 0 -> #78000000000000000000000000000000 +dqcan224 add 0 #78000002000000000000000000000000 -> #78000000000000000000000000000000 +dqcan225 add #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000 +dqcan226 add 0 #78000000000000000005000000000000 -> #78000000000000000000000000000000 +dqcan227 add #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000 ----- Class: [does not return encoded] ----- Compare: -ddcan231 compare -Inf 1 -> #a2080000000000000000000000000001 -ddcan232 compare -Inf -Inf -> #22080000000000000000000000000000 -ddcan233 compare 1 -Inf -> #22080000000000000000000000000001 -ddcan234 compare #7c010ff3fcff3fcff3fcff3ffffffcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan235 compare #7e004ff3fcff3fcff3ffffffcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan231 compare -Inf 1 -> #a2080000000000000000000000000001 +dqcan232 compare -Inf -Inf -> #22080000000000000000000000000000 +dqcan233 compare 1 -Inf -> #22080000000000000000000000000001 +dqcan234 compare #7c010ff3fcff3fcff3fcff3ffffffcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan235 compare #7e004ff3fcff3fcff3ffffffcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation ----- CompareSig: -ddcan241 comparesig -Inf 1 -> #a2080000000000000000000000000001 -ddcan242 comparesig -Inf -Inf -> #22080000000000000000000000000000 -ddcan243 comparesig 1 -Inf -> #22080000000000000000000000000001 -ddcan244 comparesig #7c400ff3ffff3fcff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -ddcan245 comparesig #7e050ff3fcfffffff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan241 comparesig -Inf 1 -> #a2080000000000000000000000000001 +dqcan242 comparesig -Inf -Inf -> #22080000000000000000000000000000 +dqcan243 comparesig 1 -Inf -> #22080000000000000000000000000001 +dqcan244 comparesig #7c400ff3ffff3fcff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan245 comparesig #7e050ff3fcfffffff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation ----- Copy: [does not usually canonicalize] -- finites -ddcan250 copy #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff -ddcan251 copy #ee080ff3fcff3ffff3fcff3ffff3fcff -> #ee080ff3fcff3ffff3fcff3ffff3fcff +dqcan250 copy #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff +dqcan251 copy #ee080ff3fcff3ffff3fcff3ffff3fcff -> #ee080ff3fcff3ffff3fcff3ffff3fcff -- NaNs -ddcan252 copy #7c000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff -ddcan253 copy #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff +dqcan252 copy #7c000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff +dqcan253 copy #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff -- sNaN -ddcan254 copy #7e003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff -ddcan255 copy #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff +dqcan254 copy #7e003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff +dqcan255 copy #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff -- Inf -ddcan258 copy #78002000000000000000000000000000 -> #78002000000000000000000000000000 -ddcan259 copy #78000000000010000000000000100000 -> #78000000000010000000000000100000 +dqcan258 copy #78002000000000000000000000000000 -> #78002000000000000000000000000000 +dqcan259 copy #78000000000010000000000000100000 -> #78000000000010000000000000100000 ----- CopyAbs: [does not usually canonicalize] -- finites -ddcan260 copyabs #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff -ddcan261 copyabs #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff +dqcan260 copyabs #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff +dqcan261 copyabs #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff -- NaNs -ddcan262 copyabs #fc000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff -ddcan263 copyabs #fc080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff +dqcan262 copyabs #fc000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff +dqcan263 copyabs #fc080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff -- sNaN -ddcan264 copyabs #fe003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff -ddcan265 copyabs #fe100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff +dqcan264 copyabs #fe003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff +dqcan265 copyabs #fe100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff -- Inf -ddcan268 copyabs #f8002000000000000000000000000000 -> #78002000000000000000000000000000 -ddcan269 copyabs #f8000000000000700700700000000000 -> #78000000000000700700700000000000 +dqcan268 copyabs #f8002000000000000000000000000000 -> #78002000000000000000000000000000 +dqcan269 copyabs #f8000000000000700700700000000000 -> #78000000000000700700700000000000 ----- CopyNegate: [does not usually canonicalize] -- finites -ddcan270 copynegate #6e080ff3fcff3fcfffffff3fcfffffff -> #ee080ff3fcff3fcfffffff3fcfffffff -ddcan271 copynegate #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff +dqcan270 copynegate #6e080ff3fcff3fcfffffff3fcfffffff -> #ee080ff3fcff3fcfffffff3fcfffffff +dqcan271 copynegate #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff -- NaNs -ddcan272 copynegate #7c000ff3fcffffffffffff3fcff3fcff -> #fc000ff3fcffffffffffff3fcff3fcff -ddcan273 copynegate #7c080ff3fcff3fcff3fcff3fcff3fcff -> #fc080ff3fcff3fcff3fcff3fcff3fcff +dqcan272 copynegate #7c000ff3fcffffffffffff3fcff3fcff -> #fc000ff3fcffffffffffff3fcff3fcff +dqcan273 copynegate #7c080ff3fcff3fcff3fcff3fcff3fcff -> #fc080ff3fcff3fcff3fcff3fcff3fcff -- sNaN -ddcan274 copynegate #7e003ff3fcffffffffffffffcff3fcff -> #fe003ff3fcffffffffffffffcff3fcff -ddcan275 copynegate #7e100ff3fcff3fcff3fcff3fcff3fcff -> #fe100ff3fcff3fcff3fcff3fcff3fcff +dqcan274 copynegate #7e003ff3fcffffffffffffffcff3fcff -> #fe003ff3fcffffffffffffffcff3fcff +dqcan275 copynegate #7e100ff3fcff3fcff3fcff3fcff3fcff -> #fe100ff3fcff3fcff3fcff3fcff3fcff -- Inf -ddcan278 copynegate #78002000000000000000000000000000 -> #f8002000000000000000000000000000 -ddcan279 copynegate #78000000000010000000000000100000 -> #f8000000000010000000000000100000 +dqcan278 copynegate #78002000000000000000000000000000 -> #f8002000000000000000000000000000 +dqcan279 copynegate #78000000000010000000000000100000 -> #f8000000000010000000000000100000 ----- CopySign: [does not usually canonicalize] -- finites -ddcan280 copysign #6e080ff3fcff3fcfffffff3fcfffffff -1 -> #ee080ff3fcff3fcfffffff3fcfffffff -ddcan281 copysign #ee080ff3fcff3ffff3fcff3ffff3fcff 1 -> #6e080ff3fcff3ffff3fcff3ffff3fcff +dqcan280 copysign #6e080ff3fcff3fcfffffff3fcfffffff -1 -> #ee080ff3fcff3fcfffffff3fcfffffff +dqcan281 copysign #ee080ff3fcff3ffff3fcff3ffff3fcff 1 -> #6e080ff3fcff3ffff3fcff3ffff3fcff -- NaNs -ddcan282 copysign #7c000ff3fcffffffffffffffcff3fcff -1 -> #fc000ff3fcffffffffffffffcff3fcff -ddcan283 copysign #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c080ff3fcff3fcff3fcff3fcff3fcff +dqcan282 copysign #7c000ff3fcffffffffffffffcff3fcff -1 -> #fc000ff3fcffffffffffffffcff3fcff +dqcan283 copysign #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c080ff3fcff3fcff3fcff3fcff3fcff -- sNaN -ddcan284 copysign #7e003ff3fcffffffffffffffcff3fcff -1 -> #fe003ff3fcffffffffffffffcff3fcff -ddcan285 copysign #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7e100ff3fcff3fcff3fcff3fcff3fcff +dqcan284 copysign #7e003ff3fcffffffffffffffcff3fcff -1 -> #fe003ff3fcffffffffffffffcff3fcff +dqcan285 copysign #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7e100ff3fcff3fcff3fcff3fcff3fcff -- Inf -ddcan288 copysign #78002000000000000000000000000000 -1 -> #f8002000000000000000000000000000 -ddcan289 copysign #78000000000010000000000000100000 1 -> #78000000000010000000000000100000 +dqcan288 copysign #78002000000000000000000000000000 -1 -> #f8002000000000000000000000000000 +dqcan289 copysign #78000000000010000000000000100000 1 -> #78000000000010000000000000100000 ----- Multiply: -- Finites: neutral 0 -ddcan302 multiply 1 #77ffff3fcff3fcff0000000000000000 -> #77ffff3fcff3fcff0000000000000000 -ddcan303 multiply #77fcffffcff3fcff0000000000000000 1 -> #77fccfffcff3fcff0000000000000000 +dqcan302 multiply 1 #77ffff3fcff3fcff0000000000000000 -> #77ffff3fcff3fcff0000000000000000 +dqcan303 multiply #77fcffffcff3fcff0000000000000000 1 -> #77fccfffcff3fcff0000000000000000 -- negative -ddcan306 multiply -1 #77ffff3fcff3fcff0000000000000000 -> #f7ffff3fcff3fcff0000000000000000 -ddcan307 multiply #77fcffffcff3fcff0000000000000000 -1 -> #f7fccfffcff3fcff0000000000000000 +dqcan306 multiply -1 #77ffff3fcff3fcff0000000000000000 -> #f7ffff3fcff3fcff0000000000000000 +dqcan307 multiply #77fcffffcff3fcff0000000000000000 -1 -> #f7fccfffcff3fcff0000000000000000 -- NaN: declets in payload -ddcan311 multiply 1 #7c03ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 -ddcan312 multiply #7c03ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 +dqcan311 multiply 1 #7c03ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 +dqcan312 multiply #7c03ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 -- NaN: exponent continuation bits [excluding sNaN selector] -ddcan313 multiply 1 #7c40ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 -ddcan314 multiply #7c40ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 +dqcan313 multiply 1 #7c40ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 +dqcan314 multiply #7c40ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 -- sNaN: declets in payload -ddcan315 multiply 1 #7e00ffffcff3fcff0000000000000000 -> #7c000fffcff3fcff0000000000000000 Invalid_operation -ddcan316 multiply #7e00ffffcff3fcff0000000000000000 1 -> #7c000fffcff3fcff0000000000000000 Invalid_operation +dqcan315 multiply 1 #7e00ffffcff3fcff0000000000000000 -> #7c000fffcff3fcff0000000000000000 Invalid_operation +dqcan316 multiply #7e00ffffcff3fcff0000000000000000 1 -> #7c000fffcff3fcff0000000000000000 Invalid_operation -- sNaN: exponent continuation bits [excluding sNaN selector] -ddcan317 multiply 1 #7e80ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation -ddcan318 multiply #7e80ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation +dqcan317 multiply 1 #7e80ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation +dqcan318 multiply #7e80ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation -- Inf: exponent continuation bits -ddcan320 multiply 1 #78800000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan321 multiply #78800000000000000000000000000000 1 -> #78000000000000000000000000000000 +dqcan320 multiply 1 #78800000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan321 multiply #78800000000000000000000000000000 1 -> #78000000000000000000000000000000 -- Inf: coefficient continuation bits -ddcan322 multiply 1 #78020000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan323 multiply #78020000000000000000000000000000 1 -> #78000000000000000000000000000000 -ddcan324 multiply 1 #78000000000000010000000000000000 -> #78000000000000000000000000000000 -ddcan325 multiply #78000000000000010000000000000000 1 -> #78000000000000000000000000000000 -ddcan326 multiply 1 #78000020000000000000000000000000 -> #78000000000000000000000000000000 -ddcan327 multiply #78000020000000000000000000000000 1 -> #78000000000000000000000000000000 +dqcan322 multiply 1 #78020000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan323 multiply #78020000000000000000000000000000 1 -> #78000000000000000000000000000000 +dqcan324 multiply 1 #78000000000000010000000000000000 -> #78000000000000000000000000000000 +dqcan325 multiply #78000000000000010000000000000000 1 -> #78000000000000000000000000000000 +dqcan326 multiply 1 #78000020000000000000000000000000 -> #78000000000000000000000000000000 +dqcan327 multiply #78000020000000000000000000000000 1 -> #78000000000000000000000000000000 ----- Quantize: -ddcan401 quantize #ee080ff3fcff3fcff3fffffffff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff -ddcan402 quantize #ee080ff3fffffffffffcff3fcff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff -ddcan403 quantize #78800000000000000000000000000000 Inf -> #78000000000000000000000000000000 -ddcan404 quantize #78020000000000000000000000000000 -Inf -> #78000000000000000000000000000000 -ddcan410 quantize #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan411 quantize #fc000ff3fcfffffff3fcff3fcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff -ddcan412 quantize #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -ddcan413 quantize #fe000ff3fcff3fcff3ffffffcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan401 quantize #ee080ff3fcff3fcff3fffffffff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff +dqcan402 quantize #ee080ff3fffffffffffcff3fcff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff +dqcan403 quantize #78800000000000000000000000000000 Inf -> #78000000000000000000000000000000 +dqcan404 quantize #78020000000000000000000000000000 -Inf -> #78000000000000000000000000000000 +dqcan410 quantize #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan411 quantize #fc000ff3fcfffffff3fcff3fcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff +dqcan412 quantize #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan413 quantize #fe000ff3fcff3fcff3ffffffcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation ----- Subtract: -- Finites: neutral 0 -ddcan502 subtract 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff -ddcan503 subtract #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff +dqcan502 subtract 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff +dqcan503 subtract #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff -- tiny zero -ddcan504 subtract 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Rounded -ddcan505 subtract #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded +dqcan504 subtract 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Rounded +dqcan505 subtract #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded -- tiny non zero -ddcan506 subtract -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded -ddcan507 subtract #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded +dqcan506 subtract -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded +dqcan507 subtract #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded -- NaN: declets in payload -ddcan511 subtract 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan512 subtract #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan511 subtract 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan512 subtract #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -- NaN: exponent continuation bits [excluding sNaN selector] -ddcan513 subtract 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan514 subtract #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan513 subtract 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan514 subtract #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -- sNaN: declets in payload -ddcan515 subtract 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -ddcan516 subtract #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan515 subtract 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan516 subtract #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -- sNaN: exponent continuation bits [excluding sNaN selector] -ddcan517 subtract 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -ddcan518 subtract #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan517 subtract 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan518 subtract #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -- Inf: exponent continuation bits -ddcan520 subtract 0 #78010000000000000000000000000000 -> #f8000000000000000000000000000000 -ddcan521 subtract #78680000000000000000000000000000 0 -> #78000000000000000000000000000000 +dqcan520 subtract 0 #78010000000000000000000000000000 -> #f8000000000000000000000000000000 +dqcan521 subtract #78680000000000000000000000000000 0 -> #78000000000000000000000000000000 -- Inf: coefficient continuation bits -ddcan522 subtract 0 #78002000000000000000000000000000 -> #f8000000000000000000000000000000 -ddcan523 subtract #78000000000000000000000000000001 0 -> #78000000000000000000000000000000 -ddcan524 subtract 0 #78000002000000000000000000000000 -> #f8000000000000000000000000000000 -ddcan525 subtract #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000 -ddcan526 subtract 0 #78000000000000000005000000000000 -> #f8000000000000000000000000000000 -ddcan527 subtract #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000 +dqcan522 subtract 0 #78002000000000000000000000000000 -> #f8000000000000000000000000000000 +dqcan523 subtract #78000000000000000000000000000001 0 -> #78000000000000000000000000000000 +dqcan524 subtract 0 #78000002000000000000000000000000 -> #f8000000000000000000000000000000 +dqcan525 subtract #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000 +dqcan526 subtract 0 #78000000000000000005000000000000 -> #f8000000000000000000000000000000 +dqcan527 subtract #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000 ----- ToIntegral: -ddcan601 tointegralx #6e080ff3fdff3fcff3fcff3fcff3fcff -> #6e080ff3fcff3fcff3fcff3fcff3fcff -ddcan602 tointegralx #ee080ff3fcff3ffff3fcff3fcff3fcff -> #ee080ff3fcff3fcff3fcff3fcff3fcff -ddcan603 tointegralx #78800000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan604 tointegralx #78020000000000000000000000000000 -> #78000000000000000000000000000000 -ddcan614 tointegralx #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff -ddcan615 tointegralx #fc000ff3fcff3fcff3fcffffcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff -ddcan616 tointegralx #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -ddcan617 tointegralx #fe000ff3fcff3fcff3fdff3fcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan601 tointegralx #6e080ff3fdff3fcff3fcff3fcff3fcff -> #6e080ff3fcff3fcff3fcff3fcff3fcff +dqcan602 tointegralx #ee080ff3fcff3ffff3fcff3fcff3fcff -> #ee080ff3fcff3fcff3fcff3fcff3fcff +dqcan603 tointegralx #78800000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan604 tointegralx #78020000000000000000000000000000 -> #78000000000000000000000000000000 +dqcan614 tointegralx #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff +dqcan615 tointegralx #fc000ff3fcff3fcff3fcffffcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff +dqcan616 tointegralx #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation +dqcan617 tointegralx #fe000ff3fcff3fcff3fdff3fcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation -- uncanonical 3999, 39.99, 3.99, 0.399, and negatives -ddcan618 tointegralx #22080000000000000000000000000fff -> #22080000000000000000000000000cff -ddcan619 tointegralx #22078000000000000000000000000fff -> #22080000000000000000000000000040 Inexact Rounded -ddcan620 tointegralx #22074000000000000000000000000fff -> #22080000000000000000000000000004 Inexact Rounded -ddcan621 tointegralx #22070000000000000000000000000fff -> #22080000000000000000000000000000 Inexact Rounded -ddcan622 tointegralx #a2080000000000000000000000000fff -> #a2080000000000000000000000000cff -ddcan623 tointegralx #a2078000000000000000000000000fff -> #a2080000000000000000000000000040 Inexact Rounded -ddcan624 tointegralx #a2074000000000000000000000000fff -> #a2080000000000000000000000000004 Inexact Rounded -ddcan625 tointegralx #a2070000000000000000000000000fff -> #a2080000000000000000000000000000 Inexact Rounded +dqcan618 tointegralx #22080000000000000000000000000fff -> #22080000000000000000000000000cff +dqcan619 tointegralx #22078000000000000000000000000fff -> #22080000000000000000000000000040 Inexact Rounded +dqcan620 tointegralx #22074000000000000000000000000fff -> #22080000000000000000000000000004 Inexact Rounded +dqcan621 tointegralx #22070000000000000000000000000fff -> #22080000000000000000000000000000 Inexact Rounded +dqcan622 tointegralx #a2080000000000000000000000000fff -> #a2080000000000000000000000000cff +dqcan623 tointegralx #a2078000000000000000000000000fff -> #a2080000000000000000000000000040 Inexact Rounded +dqcan624 tointegralx #a2074000000000000000000000000fff -> #a2080000000000000000000000000004 Inexact Rounded +dqcan625 tointegralx #a2070000000000000000000000000fff -> #a2080000000000000000000000000000 Inexact Rounded Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqClass.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqClass.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqClass.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- [New 2006.11.27] Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompare.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompare.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompare.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareSig.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareSig.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareSig.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotal.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotal.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotal.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotalMag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotalMag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotalMag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopy.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopy.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopy.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyAbs.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyAbs.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyAbs.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyNegate.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyNegate.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyNegate.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopySign.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopySign.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopySign.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivide.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivide.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivide.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 @@ -566,6 +566,9 @@ rounding: half_even dqdiv1041 divide 6 11 -> 0.5454545454545454545454545454545455 Inexact Rounded +-- Gyuris example +dqdiv1050 divide 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0.9999999999999999999999999999991254 Inexact Rounded + -- overflow and underflow tests .. note subnormal results -- signs dqdiv1751 divide 1e+4277 1e-3311 -> Infinity Overflow Inexact Rounded @@ -645,6 +648,7 @@ dqdiv1840 divide 40.0E-5982 40e+164 -> 1.0E-6146 Subnormal -- randoms +rounding: half_even dqdiv2010 divide -5231195652931651968034356117118850 -7243718664422548573203260970.34995 -> 722169.9095831284624736051460550680 Inexact Rounded dqdiv2011 divide -89584669773927.82711237350022515352 -42077943728529635884.21142627532985 -> 0.000002129017291146471565928125887527266 Inexact Rounded dqdiv2012 divide -2.828201693360723203806974891946180E-232 812596541221823960386384403089240.9 -> -3.480450075640521320040055759125120E-265 Inexact Rounded @@ -697,6 +701,107 @@ dqdiv2059 divide 8.702093454123046507578256899537563E-324 -5.875399733016018404580201176576293E-401 -> -1.481106622452052581470443526957335E+77 Inexact Rounded dqdiv2060 divide -41426.01662518451861386352415092356 90.00146621684478300510769802013464 -> -460.2815750287318692732067709176200 Inexact Rounded +-- random divide tests with result near 1 +dqdiv4001 divide 2003100352770753969878925664524900 2003100352770753969878925664497824 -> 1.000000000000000000000000000013517 Inexact Rounded +dqdiv4002 divide 4817785793916490652579552318371645 4817785793916490652579552318362097 -> 1.000000000000000000000000000001982 Inexact Rounded +dqdiv4003 divide 8299187410920067325648068439560282 8299187410920067325648068439591159 -> 0.9999999999999999999999999999962795 Inexact Rounded +dqdiv4004 divide 5641088455897407044544461785365899 5641088455897407044544461785389965 -> 0.9999999999999999999999999999957338 Inexact Rounded +dqdiv4005 divide 5752274694706545359326361313490424 5752274694706545359326361313502723 -> 0.9999999999999999999999999999978619 Inexact Rounded +dqdiv4006 divide 6762079477373670594829319346099665 6762079477373670594829319346132579 -> 0.9999999999999999999999999999951326 Inexact Rounded +dqdiv4007 divide 7286425153691890341633023222602916 7286425153691890341633023222606556 -> 0.9999999999999999999999999999995004 Inexact Rounded +dqdiv4008 divide 9481233991901305727648306421946655 9481233991901305727648306421919124 -> 1.000000000000000000000000000002904 Inexact Rounded +dqdiv4009 divide 4282053941893951742029444065614311 4282053941893951742029444065583077 -> 1.000000000000000000000000000007294 Inexact Rounded +dqdiv4010 divide 626888225441250639741781850338695 626888225441250639741781850327299 -> 1.000000000000000000000000000018179 Inexact Rounded +dqdiv4011 divide 3860973649222028009456598604468547 3860973649222028009456598604476849 -> 0.9999999999999999999999999999978498 Inexact Rounded +dqdiv4012 divide 4753157080127468127908060607821839 4753157080127468127908060607788379 -> 1.000000000000000000000000000007040 Inexact Rounded +dqdiv4013 divide 552448546203754062805706277880419 552448546203754062805706277881903 -> 0.9999999999999999999999999999973138 Inexact Rounded +dqdiv4014 divide 8405954527952158455323713728917395 8405954527952158455323713728933866 -> 0.9999999999999999999999999999980406 Inexact Rounded +dqdiv4015 divide 7554096502235321142555802238016116 7554096502235321142555802238026546 -> 0.9999999999999999999999999999986193 Inexact Rounded +dqdiv4016 divide 4053257674127518606871054934746782 4053257674127518606871054934767355 -> 0.9999999999999999999999999999949243 Inexact Rounded +dqdiv4017 divide 7112419420755090454716888844011582 7112419420755090454716888844038105 -> 0.9999999999999999999999999999962709 Inexact Rounded +dqdiv4018 divide 3132302137520072728164549730911846 3132302137520072728164549730908416 -> 1.000000000000000000000000000001095 Inexact Rounded +dqdiv4019 divide 4788374045841416355706715048161013 4788374045841416355706715048190077 -> 0.9999999999999999999999999999939303 Inexact Rounded +dqdiv4020 divide 9466021636047630218238075099510597 9466021636047630218238075099484053 -> 1.000000000000000000000000000002804 Inexact Rounded +dqdiv4021 divide 912742745646765625597399692138650 912742745646765625597399692139042 -> 0.9999999999999999999999999999995705 Inexact Rounded +dqdiv4022 divide 9508402742933643208806264897188504 9508402742933643208806264897195973 -> 0.9999999999999999999999999999992145 Inexact Rounded +dqdiv4023 divide 1186956795727233704962361914360895 1186956795727233704962361914329577 -> 1.000000000000000000000000000026385 Inexact Rounded +dqdiv4024 divide 5972210268839014812696916170967938 5972210268839014812696916170954974 -> 1.000000000000000000000000000002171 Inexact Rounded +dqdiv4025 divide 2303801625521619930894460139793140 2303801625521619930894460139799643 -> 0.9999999999999999999999999999971773 Inexact Rounded +dqdiv4026 divide 6022231560002898264777393473966595 6022231560002898264777393473947198 -> 1.000000000000000000000000000003221 Inexact Rounded +dqdiv4027 divide 8426148335801396199969346032210893 8426148335801396199969346032203179 -> 1.000000000000000000000000000000915 Inexact Rounded +dqdiv4028 divide 8812278947028784637382847098411749 8812278947028784637382847098385317 -> 1.000000000000000000000000000002999 Inexact Rounded +dqdiv4029 divide 8145282002348367383264197170116146 8145282002348367383264197170083988 -> 1.000000000000000000000000000003948 Inexact Rounded +dqdiv4030 divide 6821577571876840153123510107387026 6821577571876840153123510107418008 -> 0.9999999999999999999999999999954582 Inexact Rounded +dqdiv4031 divide 9018555319518966970480565482023720 9018555319518966970480565482013346 -> 1.000000000000000000000000000001150 Inexact Rounded +dqdiv4032 divide 4602155712998228449640717252788864 4602155712998228449640717252818502 -> 0.9999999999999999999999999999935600 Inexact Rounded +dqdiv4033 divide 6675607481522785614506828292264472 6675607481522785614506828292277100 -> 0.9999999999999999999999999999981083 Inexact Rounded +dqdiv4034 divide 4015881516871833897766945836264472 4015881516871833897766945836262645 -> 1.000000000000000000000000000000455 Inexact Rounded +dqdiv4035 divide 1415580205933411837595459716910365 1415580205933411837595459716880139 -> 1.000000000000000000000000000021352 Inexact Rounded +dqdiv4036 divide 9432968297069542816752035276361552 9432968297069542816752035276353054 -> 1.000000000000000000000000000000901 Inexact Rounded +dqdiv4037 divide 4799319591303848500532766682140658 4799319591303848500532766682172655 -> 0.9999999999999999999999999999933330 Inexact Rounded +dqdiv4038 divide 316854270732839529790584284987472 316854270732839529790584285004832 -> 0.9999999999999999999999999999452114 Inexact Rounded +dqdiv4039 divide 3598981300592490427826027975697415 3598981300592490427826027975686712 -> 1.000000000000000000000000000002974 Inexact Rounded +dqdiv4040 divide 1664315435694461371155800682196520 1664315435694461371155800682195617 -> 1.000000000000000000000000000000543 Inexact Rounded +dqdiv4041 divide 1680872316531128890102855316510581 1680872316531128890102855316495545 -> 1.000000000000000000000000000008945 Inexact Rounded +dqdiv4042 divide 9881274879566405475755499281644730 9881274879566405475755499281615743 -> 1.000000000000000000000000000002934 Inexact Rounded +dqdiv4043 divide 4737225957717466960447204232279216 4737225957717466960447204232277452 -> 1.000000000000000000000000000000372 Inexact Rounded +dqdiv4044 divide 2482097379414867061213319346418288 2482097379414867061213319346387936 -> 1.000000000000000000000000000012228 Inexact Rounded +dqdiv4045 divide 7406977595233762723576434122161868 7406977595233762723576434122189042 -> 0.9999999999999999999999999999963313 Inexact Rounded +dqdiv4046 divide 228782057757566047086593281773577 228782057757566047086593281769727 -> 1.000000000000000000000000000016828 Inexact Rounded +dqdiv4047 divide 2956594270240579648823270540367653 2956594270240579648823270540368556 -> 0.9999999999999999999999999999996946 Inexact Rounded +dqdiv4048 divide 6326964098897620620534136767634340 6326964098897620620534136767619339 -> 1.000000000000000000000000000002371 Inexact Rounded +dqdiv4049 divide 414586440456590215247002678327800 414586440456590215247002678316922 -> 1.000000000000000000000000000026238 Inexact Rounded +dqdiv4050 divide 7364552208570039386220505636779125 7364552208570039386220505636803548 -> 0.9999999999999999999999999999966837 Inexact Rounded +dqdiv4051 divide 5626266749902369710022824950590056 5626266749902369710022824950591008 -> 0.9999999999999999999999999999998308 Inexact Rounded +dqdiv4052 divide 4863278293916197454987481343460484 4863278293916197454987481343442522 -> 1.000000000000000000000000000003693 Inexact Rounded +dqdiv4053 divide 1170713582030637359713249796835483 1170713582030637359713249796823345 -> 1.000000000000000000000000000010368 Inexact Rounded +dqdiv4054 divide 9838062494725965667776326556052931 9838062494725965667776326556061002 -> 0.9999999999999999999999999999991796 Inexact Rounded +dqdiv4055 divide 4071388731298861093005687091498922 4071388731298861093005687091498278 -> 1.000000000000000000000000000000158 Inexact Rounded +dqdiv4056 divide 8753155722324706795855038590272526 8753155722324706795855038590276656 -> 0.9999999999999999999999999999995282 Inexact Rounded +dqdiv4057 divide 4399941911533273418844742658240485 4399941911533273418844742658219891 -> 1.000000000000000000000000000004681 Inexact Rounded +dqdiv4058 divide 4127884159949503677776430620050269 4127884159949503677776430620026091 -> 1.000000000000000000000000000005857 Inexact Rounded +dqdiv4059 divide 5536160822360800067042528317438808 5536160822360800067042528317450687 -> 0.9999999999999999999999999999978543 Inexact Rounded +dqdiv4060 divide 3973234998468664936671088237710246 3973234998468664936671088237741886 -> 0.9999999999999999999999999999920367 Inexact Rounded +dqdiv4061 divide 9824855935638263593410444142327358 9824855935638263593410444142328576 -> 0.9999999999999999999999999999998760 Inexact Rounded +dqdiv4062 divide 5917078517340218131867327300814867 5917078517340218131867327300788701 -> 1.000000000000000000000000000004422 Inexact Rounded +dqdiv4063 divide 4354236601830544882286139612521362 4354236601830544882286139612543223 -> 0.9999999999999999999999999999949794 Inexact Rounded +dqdiv4064 divide 8058474772375259017342110013891294 8058474772375259017342110013906792 -> 0.9999999999999999999999999999980768 Inexact Rounded +dqdiv4065 divide 5519604020981748170517093746166328 5519604020981748170517093746181763 -> 0.9999999999999999999999999999972036 Inexact Rounded +dqdiv4066 divide 1502130966879805458831323782443139 1502130966879805458831323782412213 -> 1.000000000000000000000000000020588 Inexact Rounded +dqdiv4067 divide 562795633719481212915159787980270 562795633719481212915159788007066 -> 0.9999999999999999999999999999523877 Inexact Rounded +dqdiv4068 divide 6584743324494664273941281557268878 6584743324494664273941281557258945 -> 1.000000000000000000000000000001508 Inexact Rounded +dqdiv4069 divide 3632000327285743997976431109416500 3632000327285743997976431109408107 -> 1.000000000000000000000000000002311 Inexact Rounded +dqdiv4070 divide 1145827237315430089388953838561450 1145827237315430089388953838527332 -> 1.000000000000000000000000000029776 Inexact Rounded +dqdiv4071 divide 8874431010357691869725372317350380 8874431010357691869725372317316472 -> 1.000000000000000000000000000003821 Inexact Rounded +dqdiv4072 divide 992948718902804648119753141202196 992948718902804648119753141235222 -> 0.9999999999999999999999999999667395 Inexact Rounded +dqdiv4073 divide 2522735183374218505142417265439989 2522735183374218505142417265453779 -> 0.9999999999999999999999999999945337 Inexact Rounded +dqdiv4074 divide 2668419161912936508006872303501052 2668419161912936508006872303471036 -> 1.000000000000000000000000000011249 Inexact Rounded +dqdiv4075 divide 3036169085665186712590941111775092 3036169085665186712590941111808846 -> 0.9999999999999999999999999999888827 Inexact Rounded +dqdiv4076 divide 9441634604917231638508898934006147 9441634604917231638508898934000288 -> 1.000000000000000000000000000000621 Inexact Rounded +dqdiv4077 divide 2677301353164377091111458811839190 2677301353164377091111458811867722 -> 0.9999999999999999999999999999893430 Inexact Rounded +dqdiv4078 divide 6844979203112066166583765857171426 6844979203112066166583765857189682 -> 0.9999999999999999999999999999973329 Inexact Rounded +dqdiv4079 divide 2220337435141796724323783960231661 2220337435141796724323783960208778 -> 1.000000000000000000000000000010306 Inexact Rounded +dqdiv4080 divide 6447424700019783931569996989561380 6447424700019783931569996989572454 -> 0.9999999999999999999999999999982824 Inexact Rounded +dqdiv4081 divide 7512856762696607119847092195587180 7512856762696607119847092195557346 -> 1.000000000000000000000000000003971 Inexact Rounded +dqdiv4082 divide 7395261981193960399087819077237482 7395261981193960399087819077242487 -> 0.9999999999999999999999999999993232 Inexact Rounded +dqdiv4083 divide 2253442467682584035792724884376735 2253442467682584035792724884407178 -> 0.9999999999999999999999999999864904 Inexact Rounded +dqdiv4084 divide 8153138680300213135577336466190997 8153138680300213135577336466220607 -> 0.9999999999999999999999999999963683 Inexact Rounded +dqdiv4085 divide 4668731252254148074041022681801390 4668731252254148074041022681778101 -> 1.000000000000000000000000000004988 Inexact Rounded +dqdiv4086 divide 6078404557993669696040425501815056 6078404557993669696040425501797612 -> 1.000000000000000000000000000002870 Inexact Rounded +dqdiv4087 divide 2306352359874261623223356878316278 2306352359874261623223356878335612 -> 0.9999999999999999999999999999916171 Inexact Rounded +dqdiv4088 divide 3264842186668480362900909564091908 3264842186668480362900909564058658 -> 1.000000000000000000000000000010184 Inexact Rounded +dqdiv4089 divide 6971985047279636878957959608612204 6971985047279636878957959608615088 -> 0.9999999999999999999999999999995863 Inexact Rounded +dqdiv4090 divide 5262810889952721235466445973816257 5262810889952721235466445973783077 -> 1.000000000000000000000000000006305 Inexact Rounded +dqdiv4091 divide 7947944731035267178548357070080288 7947944731035267178548357070061339 -> 1.000000000000000000000000000002384 Inexact Rounded +dqdiv4092 divide 5071808908395375108383035800443229 5071808908395375108383035800412429 -> 1.000000000000000000000000000006073 Inexact Rounded +dqdiv4093 divide 2043146542084503655511507209262969 2043146542084503655511507209249263 -> 1.000000000000000000000000000006708 Inexact Rounded +dqdiv4094 divide 4097632735384534181661959731264802 4097632735384534181661959731234499 -> 1.000000000000000000000000000007395 Inexact Rounded +dqdiv4095 divide 3061477642831387489729464587044430 3061477642831387489729464587059452 -> 0.9999999999999999999999999999950932 Inexact Rounded +dqdiv4096 divide 3429854941039776159498802936252638 3429854941039776159498802936246415 -> 1.000000000000000000000000000001814 Inexact Rounded +dqdiv4097 divide 4874324979578599700024133278284545 4874324979578599700024133278262131 -> 1.000000000000000000000000000004598 Inexact Rounded +dqdiv4098 divide 5701652369691833541455978515820882 5701652369691833541455978515834854 -> 0.9999999999999999999999999999975495 Inexact Rounded +dqdiv4099 divide 2928205728402945266953255632343113 2928205728402945266953255632373794 -> 0.9999999999999999999999999999895223 Inexact Rounded + -- Null tests dqdiv9998 divide 10 # -> NaN Invalid_operation dqdiv9999 divide # 10 -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivideInt.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivideInt.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivideInt.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 @@ -445,6 +445,9 @@ dqdvi678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation dqdvi679 divideint NaN sNaN89 -> NaN89 Invalid_operation +-- Gyuris example +dqdvi700 divideint 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0 + -- Null tests dqdvi900 divideint 10 # -> NaN Invalid_operation dqdvi901 divideint # 10 -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqEncode.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqEncode.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqEncode.decTest Wed Sep 12 19:37:16 2007 @@ -18,7 +18,7 @@ -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -- [Previously called decimal128.decTest] -version: 2.55 +version: 2.56 -- This set of tests is for the sixteen-byte concrete representation. -- Its characteristics are: Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqFMA.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqFMA.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqFMA.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 @@ -1561,6 +1561,9 @@ -- exact zeros from non-zeros dqadd371611 fma 1 -11 11 -> 0 dqadd371612 fma 1 11 -11 -> 0 +-- overflow +dqadd371613 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371614 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded rounding: half_down -- exact zeros from zeros @@ -1571,6 +1574,9 @@ -- exact zeros from non-zeros dqadd371631 fma 1 -11 11 -> 0 dqadd371632 fma 1 11 -11 -> 0 +-- overflow +dqadd371633 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371634 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded rounding: half_even -- exact zeros from zeros @@ -1581,6 +1587,9 @@ -- exact zeros from non-zeros dqadd371651 fma 1 -11 11 -> 0 dqadd371652 fma 1 11 -11 -> 0 +-- overflow +dqadd371653 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371654 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded rounding: up -- exact zeros from zeros @@ -1591,6 +1600,9 @@ -- exact zeros from non-zeros dqadd371671 fma 1 -11 11 -> 0 dqadd371672 fma 1 11 -11 -> 0 +-- overflow +dqadd371673 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371674 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded rounding: down -- exact zeros from zeros @@ -1601,6 +1613,9 @@ -- exact zeros from non-zeros dqadd371691 fma 1 -11 11 -> 0 dqadd371692 fma 1 11 -11 -> 0 +-- overflow +dqadd371693 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +dqadd371694 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded rounding: ceiling -- exact zeros from zeros @@ -1611,6 +1626,9 @@ -- exact zeros from non-zeros dqadd371711 fma 1 -11 11 -> 0 dqadd371712 fma 1 11 -11 -> 0 +-- overflow +dqadd371713 fma 9E6144 10 1 -> Infinity Overflow Inexact Rounded +dqadd371714 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -- and the extra-special ugly case; unusual minuses marked by -- * rounding: floor @@ -1622,16 +1640,32 @@ -- exact zeros from non-zeros dqadd371731 fma 1 -11 11 -> -0 -- * dqadd371732 fma 1 11 -11 -> -0 -- * +-- overflow +dqadd371733 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +dqadd371734 fma -9E6144 10 1 -> -Infinity Overflow Inexact Rounded + +rounding: 05up +-- exact zeros from zeros +dqadd371740 fma 1 0 0E-19 -> 0E-19 +dqadd371741 fma 1 -0 0E-19 -> 0E-19 +dqadd371742 fma 1 0 -0E-19 -> 0E-19 +dqadd371743 fma 1 -0 -0E-19 -> -0E-19 +-- exact zeros from non-zeros +dqadd371751 fma 1 -11 11 -> 0 +dqadd371752 fma 1 11 -11 -> 0 +-- overflow +dqadd371753 fma 9E6144 10 1 -> 9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded +dqadd371754 fma -9E6144 10 1 -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded -- Examples from SQL proposal (Krishna Kulkarni) -dqadd371741 fma 1 130E-2 120E-2 -> 2.50 -dqadd371742 fma 1 130E-2 12E-1 -> 2.50 -dqadd371743 fma 1 130E-2 1E0 -> 2.30 -dqadd371744 fma 1 1E2 1E4 -> 1.01E+4 -dqadd371745 fma 1 130E-2 -120E-2 -> 0.10 -dqadd371746 fma 1 130E-2 -12E-1 -> 0.10 -dqadd371747 fma 1 130E-2 -1E0 -> 0.30 -dqadd371748 fma 1 1E2 -1E4 -> -9.9E+3 +dqadd371761 fma 1 130E-2 120E-2 -> 2.50 +dqadd371762 fma 1 130E-2 12E-1 -> 2.50 +dqadd371763 fma 1 130E-2 1E0 -> 2.30 +dqadd371764 fma 1 1E2 1E4 -> 1.01E+4 +dqadd371765 fma 1 130E-2 -120E-2 -> 0.10 +dqadd371766 fma 1 130E-2 -12E-1 -> 0.10 +dqadd371767 fma 1 130E-2 -1E0 -> 0.30 +dqadd371768 fma 1 1E2 -1E4 -> -9.9E+3 -- Gappy coefficients; check residue handling even with full coefficient gap rounding: half_even Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqInvert.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqInvert.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqInvert.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqLogB.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqLogB.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqLogB.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqMax.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqMax.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqMax.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqMaxMag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqMaxMag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqMaxMag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqMin.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqMin.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqMin.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinMag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinMag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinMag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqMultiply.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqMultiply.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqMultiply.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests are for decQuads only; all arguments are -- representable in a decQuad Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextMinus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextMinus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextMinus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextPlus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextPlus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextPlus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextToward.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextToward.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextToward.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqOr.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqOr.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqOr.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqPlus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqPlus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqPlus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqQuantize.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqQuantize.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqQuantize.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Most of the tests here assume a "regular pattern", where the -- sign and coefficient are +1. Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqReduce.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqReduce.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqReduce.decTest Wed Sep 12 19:37:16 2007 @@ -18,7 +18,7 @@ -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainder.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainder.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainder.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 @@ -334,6 +334,17 @@ dqrem444 remainder 100E-6175 21E-6176 -> 1.3E-6175 Subnormal dqrem445 remainder 100E-6175 30E-6176 -> 1.0E-6175 Subnormal +-- zero signs +dqrem650 remainder 1 1 -> 0 +dqrem651 remainder -1 1 -> -0 +dqrem652 remainder 1 -1 -> 0 +dqrem653 remainder -1 -1 -> -0 +dqrem654 remainder 0 1 -> 0 +dqrem655 remainder -0 1 -> -0 +dqrem656 remainder 0 -1 -> 0 +dqrem657 remainder -0 -1 -> -0 +dqrem658 remainder 0.00 1 -> 0.00 +dqrem659 remainder -0.00 1 -> -0.00 -- Specials dqrem680 remainder Inf -Inf -> NaN Invalid_operation @@ -566,6 +577,9 @@ dqrem1057 remainder -1e-277 1e+311 -> -1E-277 dqrem1058 remainder -1e-277 -1e+311 -> -1E-277 +-- Gyuris example +dqrem1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143 + -- Null tests dqrem1000 remainder 10 # -> NaN Invalid_operation dqrem1001 remainder # 10 -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainderNear.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainderNear.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainderNear.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 @@ -366,6 +366,18 @@ dqrmn444 remaindernear 100E-6175 21E-6176 -> -8E-6176 Subnormal dqrmn445 remaindernear 100E-6175 30E-6176 -> 1.0E-6175 Subnormal +-- zero signs +dqrmn650 remaindernear 1 1 -> 0 +dqrmn651 remaindernear -1 1 -> -0 +dqrmn652 remaindernear 1 -1 -> 0 +dqrmn653 remaindernear -1 -1 -> -0 +dqrmn654 remaindernear 0 1 -> 0 +dqrmn655 remaindernear -0 1 -> -0 +dqrmn656 remaindernear 0 -1 -> 0 +dqrmn657 remaindernear -0 -1 -> -0 +dqrmn658 remaindernear 0.00 1 -> 0.00 +dqrmn659 remaindernear -0.00 1 -> -0.00 + -- Specials dqrmn680 remaindernear Inf -Inf -> NaN Invalid_operation dqrmn681 remaindernear Inf -1000 -> NaN Invalid_operation @@ -597,6 +609,9 @@ dqrmn1057 remaindernear -1e-277 1e+311 -> -1E-277 dqrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277 +-- Gyuris example +dqrmn1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143 + -- Null tests dqrmn1000 remaindernear 10 # -> NaN Invalid_operation dqrmn1001 remaindernear # 10 -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqRotate.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqRotate.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqRotate.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqSameQuantum.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqSameQuantum.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqSameQuantum.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- All operands and results are decQuads. extended: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqScaleB.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqScaleB.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqScaleB.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqShift.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqShift.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqShift.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqSubtract.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqSubtract.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqSubtract.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests are for decQuads only; all arguments are -- representable in a decQuad Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqToIntegral.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqToIntegral.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqToIntegral.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests tests the extended specification 'round-to-integral -- value-exact' operations (from IEEE 854, later modified in 754r). Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dqXor.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dqXor.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dqXor.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 clamp: 1 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dsBase.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dsBase.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dsBase.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This file tests base conversions from string to a decimal number -- and back to a string (in Scientific form) Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/dsEncode.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/dsEncode.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/dsEncode.decTest Wed Sep 12 19:37:16 2007 @@ -18,7 +18,7 @@ -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -- [Previously called decimal32.decTest] -version: 2.55 +version: 2.56 -- This set of tests is for the four-byte concrete representation. -- Its characteristics are: Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/exp.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/exp.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/exp.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Tests of the exponential funtion. Currently all testcases here -- show results which are correctly rounded (within <= 0.5 ulp). Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/fma.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/fma.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/fma.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 @@ -107,6 +107,8 @@ fmax0805 fma -Inf Inf -Inf -> -Infinity fmax0806 fma -Inf -Inf Inf -> Infinity fmax0807 fma -Inf -Inf -Inf -> NaN Invalid_operation +fmax0808 fma -Inf 0 1 -> NaN Invalid_operation +fmax0809 fma -Inf 0 NaN -> NaN Invalid_operation -- Triple NaN propagation fmax0900 fma NaN2 NaN3 NaN5 -> NaN2 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/inexact.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/inexact.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/inexact.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/invert.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/invert.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/invert.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/ln.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/ln.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/ln.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 16 @@ -476,9 +476,10 @@ lnx114 ln 0.9999999100000040500 -> -8.999999999999987850E-8 Inexact Rounded precision: 18 lnx115 ln 0.999999910000004050 -> -8.99999999999998785E-8 Inexact Rounded --- next is a > 0.5ulp case +-- next may be a > 0.5ulp case; a more precise answer is: +-- -8.99999999999998784999918E-8 precision: 17 -lnx116 ln 0.99999991000000405 -> -8.9999999999999879E-8 Inexact Rounded +lnx116 ln 0.99999991000000405 -> -8.9999999999999878E-8 Inexact Rounded precision: 16 lnx117 ln 0.9999999100000040 -> -9.000000004999988E-8 Inexact Rounded precision: 15 @@ -545,7 +546,9 @@ maxExponent: 999 minExponent: -999 lnx731 ln 9.99999999999999E+999 -> 2302.58509299405 Inexact Rounded -lnx732 ln 9.99999999999266E+999 -> 2302.58509299405 Inexact Rounded +-- next may be a > 0.5ulp case; a more precise answer is: +-- 2302.58509299404495001799145442 +lnx732 ln 9.99999999999266E+999 -> 2302.58509299404 Inexact Rounded lnx733 ln 9.99999999999265E+999 -> 2302.58509299404 Inexact Rounded lnx734 ln 9.99999999999264E+999 -> 2302.58509299404 Inexact Rounded Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/log10.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/log10.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/log10.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This emphasises the testing of notable cases, as they will often -- have unusual paths (especially the 10**n results). Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/logb.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/logb.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/logb.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This emphasises the testing of notable cases, as they will often -- have unusual paths (especially the 10**n results). Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/max.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/max.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/max.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/maxmag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/maxmag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/maxmag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/min.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/min.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/min.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/minmag.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/minmag.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/minmag.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/minus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/minus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/minus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests primarily tests the existence of the operator. -- Subtraction, rounding, and more overflows are tested elsewhere. Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/multiply.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/multiply.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/multiply.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/nextminus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/nextminus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/nextminus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/nextplus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/nextplus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/nextplus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/nexttoward.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/nexttoward.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/nexttoward.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/or.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/or.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/or.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/plus.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/plus.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/plus.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests primarily tests the existence of the operator. -- Addition and rounding, and most overflows, are tested elsewhere. Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/power.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/power.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/power.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- In addition to the power operator testcases here, see also the file -- powersqrt.decTest which includes all the tests from Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/powersqrt.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/powersqrt.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/powersqrt.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- These testcases are taken from squareroot.decTest but are -- evaluated using the power operator. The differences in results Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/quantize.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/quantize.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/quantize.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- Most of the tests here assume a "regular pattern", where the -- sign and coefficient are +1. Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/randoms.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/randoms.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/randoms.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 maxexponent: 999999999 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/reduce.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/reduce.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/reduce.decTest Wed Sep 12 19:37:16 2007 @@ -19,7 +19,7 @@ ------------------------------------------------------------------------ -- [This used to be called normalize.] -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/remainder.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/remainder.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/remainder.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 @@ -351,6 +351,17 @@ remx408 remainder 0.55555555 1 -> 0.55555555 remx409 remainder 0.555555555 1 -> 0.555555555 +-- zero signs +remx650 remainder 1 1 -> 0 +remx651 remainder -1 1 -> -0 +remx652 remainder 1 -1 -> 0 +remx653 remainder -1 -1 -> -0 +remx654 remainder 0 1 -> 0 +remx655 remainder -0 1 -> -0 +remx656 remainder 0 -1 -> 0 +remx657 remainder -0 -1 -> -0 +remx658 remainder 0.00 1 -> 0.00 +remx659 remainder -0.00 1 -> -0.00 -- Specials remx680 remainder Inf -Inf -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/rescale.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/rescale.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/rescale.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- [obsolete] Quantize.decTest has the improved version Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/rotate.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/rotate.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/rotate.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/rounding.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/rounding.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/rounding.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- These tests require that implementations take account of residues in -- order to get correct results for some rounding modes. Rather than @@ -1290,14 +1290,14 @@ maxexponent: 999999999 minexponent: -999999999 -- [round down gives Nmax on first two and .0E... on the next two] -r0ovx100 multiply 10 9E+999999999 -> Infinity Overflow Inexact Rounded -r0ovx101 multiply -10 9E+999999999 -> -Infinity Overflow Inexact Rounded +r0ovx100 multiply 10 9E+999999999 -> 9.9999E+999999999 Overflow Inexact Rounded +r0ovx101 multiply -10 9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded r0ovx102 divide 1E-9 9E+999999999 -> 1E-1000000003 Underflow Subnormal Inexact Rounded r0ovx104 divide -1E-9 9E+999999999 -> -1E-1000000003 Underflow Subnormal Inexact Rounded -- reprise rounding mode effect (using multiplies so precision directive used) precision: 9 maxexponent: 999999999 -r0mex412 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded -r0mex413 multiply 9.999E+999999999 10 -> Infinity Overflow Inexact Rounded +r0mex412 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded +r0mex413 multiply 9.999E+999999999 10 -> 9.99999999E+999999999 Overflow Inexact Rounded Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/samequantum.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/samequantum.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/samequantum.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/scaleb.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/scaleb.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/scaleb.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/shift.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/shift.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/shift.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 @@ -2967,5 +2967,838 @@ precision: 5 sqtx840 squareroot -sNaN1234567890 -> -NaN67890 Invalid_operation +------------------------------------------------------------------------ +-- +-- Special thanks to Mark Dickinson for tests in the range 8000-8999. +-- +-- Extra tests for the square root function, dealing with a variety of +-- corner cases. In particular, these tests concentrate on +-- (1) cases where the input precision exceeds the context precision, and +-- (2) cases where the input exponent is outside the current context, +-- and in particular when the result is subnormal +-- +-- maxexponent and minexponent are set to 9 and -9 for most of these +-- cases; only the precision changes. The rounding also does not +-- change, because it is ignored for this operation. +maxexponent: 9 +minexponent: -9 + +-- exact results, input precision > context precision +precision: 1 +sqtx8000 squareroot 0 -> 0 +sqtx8001 squareroot 1 -> 1 +sqtx8002 squareroot 4 -> 2 +sqtx8003 squareroot 9 -> 3 +sqtx8004 squareroot 16 -> 4 +sqtx8005 squareroot 25 -> 5 +sqtx8006 squareroot 36 -> 6 +sqtx8007 squareroot 49 -> 7 +sqtx8008 squareroot 64 -> 8 +sqtx8009 squareroot 81 -> 9 +sqtx8010 squareroot 100 -> 1E+1 Rounded +sqtx8011 squareroot 121 -> 1E+1 Inexact Rounded + +precision: 2 +sqtx8012 squareroot 0 -> 0 +sqtx8013 squareroot 1 -> 1 +sqtx8014 squareroot 4 -> 2 +sqtx8015 squareroot 9 -> 3 +sqtx8016 squareroot 16 -> 4 +sqtx8017 squareroot 25 -> 5 +sqtx8018 squareroot 36 -> 6 +sqtx8019 squareroot 49 -> 7 +sqtx8020 squareroot 64 -> 8 +sqtx8021 squareroot 81 -> 9 +sqtx8022 squareroot 100 -> 10 +sqtx8023 squareroot 121 -> 11 +sqtx8024 squareroot 144 -> 12 +sqtx8025 squareroot 169 -> 13 +sqtx8026 squareroot 196 -> 14 +sqtx8027 squareroot 225 -> 15 +sqtx8028 squareroot 256 -> 16 +sqtx8029 squareroot 289 -> 17 +sqtx8030 squareroot 324 -> 18 +sqtx8031 squareroot 361 -> 19 +sqtx8032 squareroot 400 -> 20 +sqtx8033 squareroot 441 -> 21 +sqtx8034 squareroot 484 -> 22 +sqtx8035 squareroot 529 -> 23 +sqtx8036 squareroot 576 -> 24 +sqtx8037 squareroot 625 -> 25 +sqtx8038 squareroot 676 -> 26 +sqtx8039 squareroot 729 -> 27 +sqtx8040 squareroot 784 -> 28 +sqtx8041 squareroot 841 -> 29 +sqtx8042 squareroot 900 -> 30 +sqtx8043 squareroot 961 -> 31 +sqtx8044 squareroot 1024 -> 32 +sqtx8045 squareroot 1089 -> 33 +sqtx8046 squareroot 1156 -> 34 +sqtx8047 squareroot 1225 -> 35 +sqtx8048 squareroot 1296 -> 36 +sqtx8049 squareroot 1369 -> 37 +sqtx8050 squareroot 1444 -> 38 +sqtx8051 squareroot 1521 -> 39 +sqtx8052 squareroot 1600 -> 40 +sqtx8053 squareroot 1681 -> 41 +sqtx8054 squareroot 1764 -> 42 +sqtx8055 squareroot 1849 -> 43 +sqtx8056 squareroot 1936 -> 44 +sqtx8057 squareroot 2025 -> 45 +sqtx8058 squareroot 2116 -> 46 +sqtx8059 squareroot 2209 -> 47 +sqtx8060 squareroot 2304 -> 48 +sqtx8061 squareroot 2401 -> 49 +sqtx8062 squareroot 2500 -> 50 +sqtx8063 squareroot 2601 -> 51 +sqtx8064 squareroot 2704 -> 52 +sqtx8065 squareroot 2809 -> 53 +sqtx8066 squareroot 2916 -> 54 +sqtx8067 squareroot 3025 -> 55 +sqtx8068 squareroot 3136 -> 56 +sqtx8069 squareroot 3249 -> 57 +sqtx8070 squareroot 3364 -> 58 +sqtx8071 squareroot 3481 -> 59 +sqtx8072 squareroot 3600 -> 60 +sqtx8073 squareroot 3721 -> 61 +sqtx8074 squareroot 3844 -> 62 +sqtx8075 squareroot 3969 -> 63 +sqtx8076 squareroot 4096 -> 64 +sqtx8077 squareroot 4225 -> 65 +sqtx8078 squareroot 4356 -> 66 +sqtx8079 squareroot 4489 -> 67 +sqtx8080 squareroot 4624 -> 68 +sqtx8081 squareroot 4761 -> 69 +sqtx8082 squareroot 4900 -> 70 +sqtx8083 squareroot 5041 -> 71 +sqtx8084 squareroot 5184 -> 72 +sqtx8085 squareroot 5329 -> 73 +sqtx8086 squareroot 5476 -> 74 +sqtx8087 squareroot 5625 -> 75 +sqtx8088 squareroot 5776 -> 76 +sqtx8089 squareroot 5929 -> 77 +sqtx8090 squareroot 6084 -> 78 +sqtx8091 squareroot 6241 -> 79 +sqtx8092 squareroot 6400 -> 80 +sqtx8093 squareroot 6561 -> 81 +sqtx8094 squareroot 6724 -> 82 +sqtx8095 squareroot 6889 -> 83 +sqtx8096 squareroot 7056 -> 84 +sqtx8097 squareroot 7225 -> 85 +sqtx8098 squareroot 7396 -> 86 +sqtx8099 squareroot 7569 -> 87 +sqtx8100 squareroot 7744 -> 88 +sqtx8101 squareroot 7921 -> 89 +sqtx8102 squareroot 8100 -> 90 +sqtx8103 squareroot 8281 -> 91 +sqtx8104 squareroot 8464 -> 92 +sqtx8105 squareroot 8649 -> 93 +sqtx8106 squareroot 8836 -> 94 +sqtx8107 squareroot 9025 -> 95 +sqtx8108 squareroot 9216 -> 96 +sqtx8109 squareroot 9409 -> 97 +sqtx8110 squareroot 9604 -> 98 +sqtx8111 squareroot 9801 -> 99 +sqtx8112 squareroot 10000 -> 1.0E+2 Rounded +sqtx8113 squareroot 10201 -> 1.0E+2 Inexact Rounded + +precision: 3 +sqtx8114 squareroot 841 -> 29 +sqtx8115 squareroot 1600 -> 40 +sqtx8116 squareroot 2209 -> 47 +sqtx8117 squareroot 9604 -> 98 +sqtx8118 squareroot 21316 -> 146 +sqtx8119 squareroot 52441 -> 229 +sqtx8120 squareroot 68644 -> 262 +sqtx8121 squareroot 69696 -> 264 +sqtx8122 squareroot 70225 -> 265 +sqtx8123 squareroot 76729 -> 277 +sqtx8124 squareroot 130321 -> 361 +sqtx8125 squareroot 171396 -> 414 +sqtx8126 squareroot 270400 -> 520 +sqtx8127 squareroot 279841 -> 529 +sqtx8128 squareroot 407044 -> 638 +sqtx8129 squareroot 408321 -> 639 +sqtx8130 squareroot 480249 -> 693 +sqtx8131 squareroot 516961 -> 719 +sqtx8132 squareroot 692224 -> 832 +sqtx8133 squareroot 829921 -> 911 + +-- selection of random exact results +precision: 6 +sqtx8134 squareroot 2.25E-12 -> 0.0000015 +sqtx8135 squareroot 8.41E-14 -> 2.9E-7 +sqtx8136 squareroot 6.241E-15 -> 7.9E-8 +sqtx8137 squareroot 5.041E+13 -> 7.1E+6 +sqtx8138 squareroot 4761 -> 69 +sqtx8139 squareroot 1.369E+17 -> 3.7E+8 +sqtx8140 squareroot 0.00002116 -> 0.0046 +sqtx8141 squareroot 7.29E+4 -> 2.7E+2 +sqtx8142 squareroot 4.624E-13 -> 6.8E-7 +sqtx8143 squareroot 3.969E+5 -> 6.3E+2 +sqtx8144 squareroot 3.73321E-11 -> 0.00000611 +sqtx8145 squareroot 5.61001E+17 -> 7.49E+8 +sqtx8146 squareroot 2.30400E-11 -> 0.00000480 +sqtx8147 squareroot 4.30336E+17 -> 6.56E+8 +sqtx8148 squareroot 0.057121 -> 0.239 +sqtx8149 squareroot 7.225E+17 -> 8.5E+8 +sqtx8150 squareroot 3.14721E+13 -> 5.61E+6 +sqtx8151 squareroot 4.61041E+17 -> 6.79E+8 +sqtx8152 squareroot 1.39876E-15 -> 3.74E-8 +sqtx8153 squareroot 6.19369E-9 -> 0.0000787 +sqtx8154 squareroot 1.620529E-10 -> 0.00001273 +sqtx8155 squareroot 1177.1761 -> 34.31 +sqtx8156 squareroot 67043344 -> 8188 +sqtx8157 squareroot 4.84E+6 -> 2.2E+3 +sqtx8158 squareroot 1.23904E+11 -> 3.52E+5 +sqtx8159 squareroot 32604100 -> 5710 +sqtx8160 squareroot 2.9757025E-11 -> 0.000005455 +sqtx8161 squareroot 6.3760225E-9 -> 0.00007985 +sqtx8162 squareroot 4.5198729E-11 -> 0.000006723 +sqtx8163 squareroot 1.4745600E-11 -> 0.000003840 +sqtx8164 squareroot 18964283.04 -> 4354.8 +sqtx8165 squareroot 3.308895529E+13 -> 5.7523E+6 +sqtx8166 squareroot 0.0028590409 -> 0.05347 +sqtx8167 squareroot 3572.213824 -> 59.768 +sqtx8168 squareroot 4.274021376E+15 -> 6.5376E+7 +sqtx8169 squareroot 4455476.64 -> 2110.8 +sqtx8170 squareroot 38.44 -> 6.2 +sqtx8171 squareroot 68.558400 -> 8.280 +sqtx8172 squareroot 715402009 -> 26747 +sqtx8173 squareroot 93.373569 -> 9.663 +sqtx8174 squareroot 2.62144000000E+15 -> 5.12000E+7 +sqtx8175 squareroot 7.48225000000E+15 -> 8.65000E+7 +sqtx8176 squareroot 3.38724000000E-9 -> 0.0000582000 +sqtx8177 squareroot 5.64001000000E-13 -> 7.51000E-7 +sqtx8178 squareroot 5.06944000000E-15 -> 7.12000E-8 +sqtx8179 squareroot 4.95616000000E+17 -> 7.04000E+8 +sqtx8180 squareroot 0.0000242064000000 -> 0.00492000 +sqtx8181 squareroot 1.48996000000E-15 -> 3.86000E-8 +sqtx8182 squareroot 9.37024000000E+17 -> 9.68000E+8 +sqtx8183 squareroot 7128900.0000 -> 2670.00 +sqtx8184 squareroot 8.2311610000E-10 -> 0.0000286900 +sqtx8185 squareroot 482747040000 -> 694800 +sqtx8186 squareroot 4.14478440000E+17 -> 6.43800E+8 +sqtx8187 squareroot 5.10510250000E-7 -> 0.000714500 +sqtx8188 squareroot 355096.810000 -> 595.900 +sqtx8189 squareroot 14288400.0000 -> 3780.00 +sqtx8190 squareroot 3.36168040000E-15 -> 5.79800E-8 +sqtx8191 squareroot 1.70899560000E-13 -> 4.13400E-7 +sqtx8192 squareroot 0.0000378348010000 -> 0.00615100 +sqtx8193 squareroot 2.00972890000E-13 -> 4.48300E-7 +sqtx8194 squareroot 4.07222659600E-13 -> 6.38140E-7 +sqtx8195 squareroot 131486012100 -> 362610 +sqtx8196 squareroot 818192611600 -> 904540 +sqtx8197 squareroot 9.8558323600E+16 -> 3.13940E+8 +sqtx8198 squareroot 5641.06144900 -> 75.1070 +sqtx8199 squareroot 4.58789475600E+17 -> 6.77340E+8 +sqtx8200 squareroot 3.21386948100E-9 -> 0.0000566910 +sqtx8201 squareroot 3.9441960000E-8 -> 0.000198600 +sqtx8202 squareroot 242723.728900 -> 492.670 +sqtx8203 squareroot 1874.89000000 -> 43.3000 +sqtx8204 squareroot 2.56722595684E+15 -> 5.06678E+7 +sqtx8205 squareroot 3.96437714689E-17 -> 6.29633E-9 +sqtx8206 squareroot 3.80106774784E-17 -> 6.16528E-9 +sqtx8207 squareroot 1.42403588496E-13 -> 3.77364E-7 +sqtx8208 squareroot 4604.84388100 -> 67.8590 +sqtx8209 squareroot 2157100869.16 -> 46444.6 +sqtx8210 squareroot 355288570.81 -> 18849.1 +sqtx8211 squareroot 4.69775901604E-11 -> 0.00000685402 +sqtx8212 squareroot 8.22115770436E+17 -> 9.06706E+8 +sqtx8213 squareroot 7.16443744900E+15 -> 8.46430E+7 +sqtx8214 squareroot 9.48995498896E+15 -> 9.74164E+7 +sqtx8215 squareroot 0.0000419091801129 -> 0.00647373 +sqtx8216 squareroot 5862627996.84 -> 76567.8 +sqtx8217 squareroot 9369537.3409 -> 3060.97 +sqtx8218 squareroot 7.74792529729E+17 -> 8.80223E+8 +sqtx8219 squareroot 1.08626931396E+17 -> 3.29586E+8 +sqtx8220 squareroot 8.89584739684E-7 -> 0.000943178 +sqtx8221 squareroot 4.0266040896E-18 -> 2.00664E-9 +sqtx8222 squareroot 9.27669480336E-7 -> 0.000963156 +sqtx8223 squareroot 0.00225497717956 -> 0.0474866 + +-- test use of round-half-even for ties +precision: 1 +sqtx8224 squareroot 225 -> 2E+1 Inexact Rounded +sqtx8225 squareroot 625 -> 2E+1 Inexact Rounded +sqtx8226 squareroot 1225 -> 4E+1 Inexact Rounded +sqtx8227 squareroot 2025 -> 4E+1 Inexact Rounded +sqtx8228 squareroot 3025 -> 6E+1 Inexact Rounded +sqtx8229 squareroot 4225 -> 6E+1 Inexact Rounded +sqtx8230 squareroot 5625 -> 8E+1 Inexact Rounded +sqtx8231 squareroot 7225 -> 8E+1 Inexact Rounded +sqtx8232 squareroot 9025 -> 1E+2 Inexact Rounded + +precision: 2 +sqtx8233 squareroot 11025 -> 1.0E+2 Inexact Rounded +sqtx8234 squareroot 13225 -> 1.2E+2 Inexact Rounded +sqtx8235 squareroot 15625 -> 1.2E+2 Inexact Rounded +sqtx8236 squareroot 18225 -> 1.4E+2 Inexact Rounded +sqtx8237 squareroot 21025 -> 1.4E+2 Inexact Rounded +sqtx8238 squareroot 24025 -> 1.6E+2 Inexact Rounded +sqtx8239 squareroot 27225 -> 1.6E+2 Inexact Rounded +sqtx8240 squareroot 30625 -> 1.8E+2 Inexact Rounded +sqtx8241 squareroot 34225 -> 1.8E+2 Inexact Rounded +sqtx8242 squareroot 38025 -> 2.0E+2 Inexact Rounded +sqtx8243 squareroot 42025 -> 2.0E+2 Inexact Rounded +sqtx8244 squareroot 46225 -> 2.2E+2 Inexact Rounded +sqtx8245 squareroot 50625 -> 2.2E+2 Inexact Rounded +sqtx8246 squareroot 55225 -> 2.4E+2 Inexact Rounded +sqtx8247 squareroot 60025 -> 2.4E+2 Inexact Rounded +sqtx8248 squareroot 65025 -> 2.6E+2 Inexact Rounded +sqtx8249 squareroot 70225 -> 2.6E+2 Inexact Rounded +sqtx8250 squareroot 75625 -> 2.8E+2 Inexact Rounded +sqtx8251 squareroot 81225 -> 2.8E+2 Inexact Rounded +sqtx8252 squareroot 87025 -> 3.0E+2 Inexact Rounded +sqtx8253 squareroot 93025 -> 3.0E+2 Inexact Rounded +sqtx8254 squareroot 99225 -> 3.2E+2 Inexact Rounded +sqtx8255 squareroot 105625 -> 3.2E+2 Inexact Rounded +sqtx8256 squareroot 112225 -> 3.4E+2 Inexact Rounded +sqtx8257 squareroot 119025 -> 3.4E+2 Inexact Rounded +sqtx8258 squareroot 126025 -> 3.6E+2 Inexact Rounded +sqtx8259 squareroot 133225 -> 3.6E+2 Inexact Rounded +sqtx8260 squareroot 140625 -> 3.8E+2 Inexact Rounded +sqtx8261 squareroot 148225 -> 3.8E+2 Inexact Rounded +sqtx8262 squareroot 156025 -> 4.0E+2 Inexact Rounded +sqtx8263 squareroot 164025 -> 4.0E+2 Inexact Rounded +sqtx8264 squareroot 172225 -> 4.2E+2 Inexact Rounded +sqtx8265 squareroot 180625 -> 4.2E+2 Inexact Rounded +sqtx8266 squareroot 189225 -> 4.4E+2 Inexact Rounded +sqtx8267 squareroot 198025 -> 4.4E+2 Inexact Rounded +sqtx8268 squareroot 207025 -> 4.6E+2 Inexact Rounded +sqtx8269 squareroot 216225 -> 4.6E+2 Inexact Rounded +sqtx8270 squareroot 225625 -> 4.8E+2 Inexact Rounded +sqtx8271 squareroot 235225 -> 4.8E+2 Inexact Rounded +sqtx8272 squareroot 245025 -> 5.0E+2 Inexact Rounded +sqtx8273 squareroot 255025 -> 5.0E+2 Inexact Rounded +sqtx8274 squareroot 265225 -> 5.2E+2 Inexact Rounded +sqtx8275 squareroot 275625 -> 5.2E+2 Inexact Rounded +sqtx8276 squareroot 286225 -> 5.4E+2 Inexact Rounded +sqtx8277 squareroot 297025 -> 5.4E+2 Inexact Rounded +sqtx8278 squareroot 308025 -> 5.6E+2 Inexact Rounded +sqtx8279 squareroot 319225 -> 5.6E+2 Inexact Rounded +sqtx8280 squareroot 330625 -> 5.8E+2 Inexact Rounded +sqtx8281 squareroot 342225 -> 5.8E+2 Inexact Rounded +sqtx8282 squareroot 354025 -> 6.0E+2 Inexact Rounded +sqtx8283 squareroot 366025 -> 6.0E+2 Inexact Rounded +sqtx8284 squareroot 378225 -> 6.2E+2 Inexact Rounded +sqtx8285 squareroot 390625 -> 6.2E+2 Inexact Rounded +sqtx8286 squareroot 403225 -> 6.4E+2 Inexact Rounded +sqtx8287 squareroot 416025 -> 6.4E+2 Inexact Rounded +sqtx8288 squareroot 429025 -> 6.6E+2 Inexact Rounded +sqtx8289 squareroot 442225 -> 6.6E+2 Inexact Rounded +sqtx8290 squareroot 455625 -> 6.8E+2 Inexact Rounded +sqtx8291 squareroot 469225 -> 6.8E+2 Inexact Rounded +sqtx8292 squareroot 483025 -> 7.0E+2 Inexact Rounded +sqtx8293 squareroot 497025 -> 7.0E+2 Inexact Rounded +sqtx8294 squareroot 511225 -> 7.2E+2 Inexact Rounded +sqtx8295 squareroot 525625 -> 7.2E+2 Inexact Rounded +sqtx8296 squareroot 540225 -> 7.4E+2 Inexact Rounded +sqtx8297 squareroot 555025 -> 7.4E+2 Inexact Rounded +sqtx8298 squareroot 570025 -> 7.6E+2 Inexact Rounded +sqtx8299 squareroot 585225 -> 7.6E+2 Inexact Rounded +sqtx8300 squareroot 600625 -> 7.8E+2 Inexact Rounded +sqtx8301 squareroot 616225 -> 7.8E+2 Inexact Rounded +sqtx8302 squareroot 632025 -> 8.0E+2 Inexact Rounded +sqtx8303 squareroot 648025 -> 8.0E+2 Inexact Rounded +sqtx8304 squareroot 664225 -> 8.2E+2 Inexact Rounded +sqtx8305 squareroot 680625 -> 8.2E+2 Inexact Rounded +sqtx8306 squareroot 697225 -> 8.4E+2 Inexact Rounded +sqtx8307 squareroot 714025 -> 8.4E+2 Inexact Rounded +sqtx8308 squareroot 731025 -> 8.6E+2 Inexact Rounded +sqtx8309 squareroot 748225 -> 8.6E+2 Inexact Rounded +sqtx8310 squareroot 765625 -> 8.8E+2 Inexact Rounded +sqtx8311 squareroot 783225 -> 8.8E+2 Inexact Rounded +sqtx8312 squareroot 801025 -> 9.0E+2 Inexact Rounded +sqtx8313 squareroot 819025 -> 9.0E+2 Inexact Rounded +sqtx8314 squareroot 837225 -> 9.2E+2 Inexact Rounded +sqtx8315 squareroot 855625 -> 9.2E+2 Inexact Rounded +sqtx8316 squareroot 874225 -> 9.4E+2 Inexact Rounded +sqtx8317 squareroot 893025 -> 9.4E+2 Inexact Rounded +sqtx8318 squareroot 912025 -> 9.6E+2 Inexact Rounded +sqtx8319 squareroot 931225 -> 9.6E+2 Inexact Rounded +sqtx8320 squareroot 950625 -> 9.8E+2 Inexact Rounded +sqtx8321 squareroot 970225 -> 9.8E+2 Inexact Rounded +sqtx8322 squareroot 990025 -> 1.0E+3 Inexact Rounded + +precision: 6 +sqtx8323 squareroot 88975734963025 -> 9.43270E+6 Inexact Rounded +sqtx8324 squareroot 71085555000625 -> 8.43122E+6 Inexact Rounded +sqtx8325 squareroot 39994304.051025 -> 6324.10 Inexact Rounded +sqtx8326 squareroot 0.000007327172265625 -> 0.00270688 Inexact Rounded +sqtx8327 squareroot 1.0258600439025E-13 -> 3.20290E-7 Inexact Rounded +sqtx8328 squareroot 0.0034580574275625 -> 0.0588052 Inexact Rounded +sqtx8329 squareroot 7.6842317700625E-7 -> 0.000876598 Inexact Rounded +sqtx8330 squareroot 1263834495.2025 -> 35550.4 Inexact Rounded +sqtx8331 squareroot 433970666460.25 -> 658764 Inexact Rounded +sqtx8332 squareroot 4.5879286230625E-7 -> 0.000677342 Inexact Rounded +sqtx8333 squareroot 0.0029305603306225 -> 0.0541346 Inexact Rounded +sqtx8334 squareroot 70218282.733225 -> 8379.64 Inexact Rounded +sqtx8335 squareroot 11942519.082025 -> 3455.80 Inexact Rounded +sqtx8336 squareroot 0.0021230668905625 -> 0.0460768 Inexact Rounded +sqtx8337 squareroot 0.90081833411025 -> 0.949114 Inexact Rounded +sqtx8338 squareroot 5.5104120936225E-17 -> 7.42322E-9 Inexact Rounded +sqtx8339 squareroot 0.10530446854225 -> 0.324506 Inexact Rounded +sqtx8340 squareroot 8.706069866025E-14 -> 2.95060E-7 Inexact Rounded +sqtx8341 squareroot 23838.58800625 -> 154.398 Inexact Rounded +sqtx8342 squareroot 0.0013426911275625 -> 0.0366428 Inexact Rounded + +-- test use of round-half-even in underflow situations + +-- precisions 2; all cases where result is both subnormal and a tie +precision: 2 +sqtx8343 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +sqtx8344 squareroot 2.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8345 squareroot 6.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8346 squareroot 1.225E-19 -> 4E-10 Underflow Subnormal Inexact Rounded +sqtx8347 squareroot 2.025E-19 -> 4E-10 Underflow Subnormal Inexact Rounded +sqtx8348 squareroot 3.025E-19 -> 6E-10 Underflow Subnormal Inexact Rounded +sqtx8349 squareroot 4.225E-19 -> 6E-10 Underflow Subnormal Inexact Rounded +sqtx8350 squareroot 5.625E-19 -> 8E-10 Underflow Subnormal Inexact Rounded +sqtx8351 squareroot 7.225E-19 -> 8E-10 Underflow Subnormal Inexact Rounded +sqtx8352 squareroot 9.025E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded + +-- precision 3, input precision <= 5 +precision: 3 +sqtx8353 squareroot 2.5E-23 -> 0E-11 Underflow Subnormal Inexact Rounded Clamped +sqtx8354 squareroot 2.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8355 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8356 squareroot 1.225E-21 -> 4E-11 Underflow Subnormal Inexact Rounded +sqtx8357 squareroot 2.025E-21 -> 4E-11 Underflow Subnormal Inexact Rounded +sqtx8358 squareroot 3.025E-21 -> 6E-11 Underflow Subnormal Inexact Rounded +sqtx8359 squareroot 4.225E-21 -> 6E-11 Underflow Subnormal Inexact Rounded +sqtx8360 squareroot 5.625E-21 -> 8E-11 Underflow Subnormal Inexact Rounded +sqtx8361 squareroot 7.225E-21 -> 8E-11 Underflow Subnormal Inexact Rounded +sqtx8362 squareroot 9.025E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8363 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8364 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded +sqtx8365 squareroot 1.5625E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded +sqtx8366 squareroot 1.8225E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded +sqtx8367 squareroot 2.1025E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded +sqtx8368 squareroot 2.4025E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded +sqtx8369 squareroot 2.7225E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded +sqtx8370 squareroot 3.0625E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded +sqtx8371 squareroot 3.4225E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded +sqtx8372 squareroot 3.8025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded +sqtx8373 squareroot 4.2025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded +sqtx8374 squareroot 4.6225E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded +sqtx8375 squareroot 5.0625E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded +sqtx8376 squareroot 5.5225E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded +sqtx8377 squareroot 6.0025E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded +sqtx8378 squareroot 6.5025E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded +sqtx8379 squareroot 7.0225E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded +sqtx8380 squareroot 7.5625E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded +sqtx8381 squareroot 8.1225E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded +sqtx8382 squareroot 8.7025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded +sqtx8383 squareroot 9.3025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded +sqtx8384 squareroot 9.9225E-20 -> 3.2E-10 Underflow Subnormal Inexact Rounded + +--precision 4, input precision <= 4 +precision: 4 +sqtx8385 squareroot 2.5E-25 -> 0E-12 Underflow Subnormal Inexact Rounded Clamped +sqtx8386 squareroot 2.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded +sqtx8387 squareroot 6.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded +sqtx8388 squareroot 1.225E-23 -> 4E-12 Underflow Subnormal Inexact Rounded +sqtx8389 squareroot 2.025E-23 -> 4E-12 Underflow Subnormal Inexact Rounded +sqtx8390 squareroot 3.025E-23 -> 6E-12 Underflow Subnormal Inexact Rounded +sqtx8391 squareroot 4.225E-23 -> 6E-12 Underflow Subnormal Inexact Rounded +sqtx8392 squareroot 5.625E-23 -> 8E-12 Underflow Subnormal Inexact Rounded +sqtx8393 squareroot 7.225E-23 -> 8E-12 Underflow Subnormal Inexact Rounded +sqtx8394 squareroot 9.025E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded + +--precision 5, input precision <= 5 +precision: 5 +sqtx8395 squareroot 2.5E-27 -> 0E-13 Underflow Subnormal Inexact Rounded Clamped +sqtx8396 squareroot 2.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded +sqtx8397 squareroot 6.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded +sqtx8398 squareroot 1.225E-25 -> 4E-13 Underflow Subnormal Inexact Rounded +sqtx8399 squareroot 2.025E-25 -> 4E-13 Underflow Subnormal Inexact Rounded +sqtx8400 squareroot 3.025E-25 -> 6E-13 Underflow Subnormal Inexact Rounded +sqtx8401 squareroot 4.225E-25 -> 6E-13 Underflow Subnormal Inexact Rounded +sqtx8402 squareroot 5.625E-25 -> 8E-13 Underflow Subnormal Inexact Rounded +sqtx8403 squareroot 7.225E-25 -> 8E-13 Underflow Subnormal Inexact Rounded +sqtx8404 squareroot 9.025E-25 -> 1.0E-12 Underflow Subnormal Inexact Rounded +sqtx8405 squareroot 1.1025E-24 -> 1.0E-12 Underflow Subnormal Inexact Rounded +sqtx8406 squareroot 1.3225E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded +sqtx8407 squareroot 1.5625E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded +sqtx8408 squareroot 1.8225E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded +sqtx8409 squareroot 2.1025E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded +sqtx8410 squareroot 2.4025E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded +sqtx8411 squareroot 2.7225E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded +sqtx8412 squareroot 3.0625E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded +sqtx8413 squareroot 3.4225E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded +sqtx8414 squareroot 3.8025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded +sqtx8415 squareroot 4.2025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded +sqtx8416 squareroot 4.6225E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded +sqtx8417 squareroot 5.0625E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded +sqtx8418 squareroot 5.5225E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded +sqtx8419 squareroot 6.0025E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded +sqtx8420 squareroot 6.5025E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded +sqtx8421 squareroot 7.0225E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded +sqtx8422 squareroot 7.5625E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded +sqtx8423 squareroot 8.1225E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded +sqtx8424 squareroot 8.7025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded +sqtx8425 squareroot 9.3025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded +sqtx8426 squareroot 9.9225E-24 -> 3.2E-12 Underflow Subnormal Inexact Rounded + +-- a random selection of values that Python2.5.1 rounds incorrectly +precision: 1 +sqtx8427 squareroot 227 -> 2E+1 Inexact Rounded +sqtx8428 squareroot 625 -> 2E+1 Inexact Rounded +sqtx8429 squareroot 1215 -> 3E+1 Inexact Rounded +sqtx8430 squareroot 2008 -> 4E+1 Inexact Rounded +sqtx8431 squareroot 2020 -> 4E+1 Inexact Rounded +sqtx8432 squareroot 2026 -> 5E+1 Inexact Rounded +sqtx8433 squareroot 2027 -> 5E+1 Inexact Rounded +sqtx8434 squareroot 2065 -> 5E+1 Inexact Rounded +sqtx8435 squareroot 2075 -> 5E+1 Inexact Rounded +sqtx8436 squareroot 2088 -> 5E+1 Inexact Rounded +sqtx8437 squareroot 3049 -> 6E+1 Inexact Rounded +sqtx8438 squareroot 3057 -> 6E+1 Inexact Rounded +sqtx8439 squareroot 3061 -> 6E+1 Inexact Rounded +sqtx8440 squareroot 3092 -> 6E+1 Inexact Rounded +sqtx8441 squareroot 4222 -> 6E+1 Inexact Rounded +sqtx8442 squareroot 5676 -> 8E+1 Inexact Rounded +sqtx8443 squareroot 5686 -> 8E+1 Inexact Rounded +sqtx8444 squareroot 7215 -> 8E+1 Inexact Rounded +sqtx8445 squareroot 9086 -> 1E+2 Inexact Rounded +sqtx8446 squareroot 9095 -> 1E+2 Inexact Rounded + +precision: 2 +sqtx8447 squareroot 1266 -> 36 Inexact Rounded +sqtx8448 squareroot 2552 -> 51 Inexact Rounded +sqtx8449 squareroot 5554 -> 75 Inexact Rounded +sqtx8450 squareroot 7832 -> 88 Inexact Rounded +sqtx8451 squareroot 13201 -> 1.1E+2 Inexact Rounded +sqtx8452 squareroot 15695 -> 1.3E+2 Inexact Rounded +sqtx8453 squareroot 18272 -> 1.4E+2 Inexact Rounded +sqtx8454 squareroot 21026 -> 1.5E+2 Inexact Rounded +sqtx8455 squareroot 24069 -> 1.6E+2 Inexact Rounded +sqtx8456 squareroot 34277 -> 1.9E+2 Inexact Rounded +sqtx8457 squareroot 46233 -> 2.2E+2 Inexact Rounded +sqtx8458 squareroot 46251 -> 2.2E+2 Inexact Rounded +sqtx8459 squareroot 46276 -> 2.2E+2 Inexact Rounded +sqtx8460 squareroot 70214 -> 2.6E+2 Inexact Rounded +sqtx8461 squareroot 81249 -> 2.9E+2 Inexact Rounded +sqtx8462 squareroot 81266 -> 2.9E+2 Inexact Rounded +sqtx8463 squareroot 93065 -> 3.1E+2 Inexact Rounded +sqtx8464 squareroot 93083 -> 3.1E+2 Inexact Rounded +sqtx8465 squareroot 99230 -> 3.2E+2 Inexact Rounded +sqtx8466 squareroot 99271 -> 3.2E+2 Inexact Rounded + +precision: 3 +sqtx8467 squareroot 11349 -> 107 Inexact Rounded +sqtx8468 squareroot 26738 -> 164 Inexact Rounded +sqtx8469 squareroot 31508 -> 178 Inexact Rounded +sqtx8470 squareroot 44734 -> 212 Inexact Rounded +sqtx8471 squareroot 44738 -> 212 Inexact Rounded +sqtx8472 squareroot 51307 -> 227 Inexact Rounded +sqtx8473 squareroot 62259 -> 250 Inexact Rounded +sqtx8474 squareroot 75901 -> 276 Inexact Rounded +sqtx8475 squareroot 76457 -> 277 Inexact Rounded +sqtx8476 squareroot 180287 -> 425 Inexact Rounded +sqtx8477 squareroot 202053 -> 450 Inexact Rounded +sqtx8478 squareroot 235747 -> 486 Inexact Rounded +sqtx8479 squareroot 256537 -> 506 Inexact Rounded +sqtx8480 squareroot 299772 -> 548 Inexact Rounded +sqtx8481 squareroot 415337 -> 644 Inexact Rounded +sqtx8482 squareroot 617067 -> 786 Inexact Rounded +sqtx8483 squareroot 628022 -> 792 Inexact Rounded +sqtx8484 squareroot 645629 -> 804 Inexact Rounded +sqtx8485 squareroot 785836 -> 886 Inexact Rounded +sqtx8486 squareroot 993066 -> 997 Inexact Rounded + +precision: 6 +sqtx8487 squareroot 14917781 -> 3862.35 Inexact Rounded +sqtx8488 squareroot 17237238 -> 4151.78 Inexact Rounded +sqtx8489 squareroot 18054463 -> 4249.05 Inexact Rounded +sqtx8490 squareroot 19990694 -> 4471.10 Inexact Rounded +sqtx8491 squareroot 29061855 -> 5390.90 Inexact Rounded +sqtx8492 squareroot 49166257 -> 7011.87 Inexact Rounded +sqtx8493 squareroot 53082086 -> 7285.75 Inexact Rounded +sqtx8494 squareroot 56787909 -> 7535.78 Inexact Rounded +sqtx8495 squareroot 81140019 -> 9007.78 Inexact Rounded +sqtx8496 squareroot 87977554 -> 9379.64 Inexact Rounded +sqtx8497 squareroot 93624683 -> 9675.98 Inexact Rounded +sqtx8498 squareroot 98732747 -> 9936.44 Inexact Rounded +sqtx8499 squareroot 99222813 -> 9961.06 Inexact Rounded +sqtx8500 squareroot 143883626 -> 11995.2 Inexact Rounded +sqtx8501 squareroot 180433301 -> 13432.5 Inexact Rounded +sqtx8502 squareroot 227034020 -> 15067.6 Inexact Rounded +sqtx8503 squareroot 283253992 -> 16830.2 Inexact Rounded +sqtx8504 squareroot 617047954 -> 24840.4 Inexact Rounded +sqtx8505 squareroot 736870094 -> 27145.4 Inexact Rounded +sqtx8506 squareroot 897322915 -> 29955.3 Inexact Rounded + +-- results close to minimum normal +precision: 1 +sqtx8507 squareroot 1E-20 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped +sqtx8508 squareroot 1E-19 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped +sqtx8509 squareroot 1E-18 -> 1E-9 + +precision: 2 +sqtx8510 squareroot 8.1E-19 -> 9E-10 Subnormal +sqtx8511 squareroot 8.10E-19 -> 9E-10 Subnormal Rounded +sqtx8512 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded +sqtx8513 squareroot 9.02E-19 -> 9E-10 Underflow Subnormal Inexact Rounded +sqtx8514 squareroot 9.03E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8515 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8516 squareroot 9.9E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8517 squareroot 9.91E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8518 squareroot 9.92E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8519 squareroot 9.95E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8520 squareroot 9.98E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8521 squareroot 9.99E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8522 squareroot 1E-18 -> 1E-9 +sqtx8523 squareroot 1.0E-18 -> 1.0E-9 +sqtx8524 squareroot 1.00E-18 -> 1.0E-9 +sqtx8525 squareroot 1.000E-18 -> 1.0E-9 Rounded +sqtx8526 squareroot 1.0000E-18 -> 1.0E-9 Rounded +sqtx8527 squareroot 1.01E-18 -> 1.0E-9 Inexact Rounded +sqtx8528 squareroot 1.02E-18 -> 1.0E-9 Inexact Rounded +sqtx8529 squareroot 1.1E-18 -> 1.0E-9 Inexact Rounded + +precision: 3 +sqtx8530 squareroot 8.1E-19 -> 9E-10 Subnormal +sqtx8531 squareroot 8.10E-19 -> 9.0E-10 Subnormal +sqtx8532 squareroot 8.100E-19 -> 9.0E-10 Subnormal +sqtx8533 squareroot 8.1000E-19 -> 9.0E-10 Subnormal Rounded +sqtx8534 squareroot 9.9E-19 -> 9.9E-10 Underflow Subnormal Inexact Rounded +sqtx8535 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded +sqtx8536 squareroot 9.99E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded +sqtx8537 squareroot 9.998E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded +sqtx8538 squareroot 1E-18 -> 1E-9 +sqtx8539 squareroot 1.0E-18 -> 1.0E-9 +sqtx8540 squareroot 1.00E-18 -> 1.0E-9 +sqtx8541 squareroot 1.000E-18 -> 1.00E-9 +sqtx8542 squareroot 1.0000E-18 -> 1.00E-9 +sqtx8543 squareroot 1.00000E-18 -> 1.00E-9 Rounded +sqtx8544 squareroot 1.000000E-18 -> 1.00E-9 Rounded +sqtx8545 squareroot 1.01E-18 -> 1.00E-9 Inexact Rounded +sqtx8546 squareroot 1.02E-18 -> 1.01E-9 Inexact Rounded + +-- result exactly representable with precision p, but not necessarily +-- exactly representable as a subnormal; check the correct flags are raised +precision: 2 +sqtx8547 squareroot 1.21E-20 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8548 squareroot 1.44E-20 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8549 squareroot 9.61E-20 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8550 squareroot 8.836E-19 -> 9E-10 Underflow Subnormal Inexact Rounded +sqtx8551 squareroot 9.216E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded + +precision: 3 +sqtx8552 squareroot 1.21E-22 -> 1E-11 Underflow Subnormal Inexact Rounded +sqtx8553 squareroot 1.21E-20 -> 1.1E-10 Subnormal +sqtx8554 squareroot 1.96E-22 -> 1E-11 Underflow Subnormal Inexact Rounded +sqtx8555 squareroot 1.96E-20 -> 1.4E-10 Subnormal +sqtx8556 squareroot 2.56E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8557 squareroot 4.00E-22 -> 2E-11 Subnormal Rounded +sqtx8558 squareroot 7.84E-22 -> 3E-11 Underflow Subnormal Inexact Rounded +sqtx8559 squareroot 9.801E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8560 squareroot 9.801E-19 -> 9.9E-10 Subnormal +sqtx8561 squareroot 1.0201E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8562 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8563 squareroot 1.1236E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded +sqtx8564 squareroot 1.2996E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded +sqtx8565 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded + +-- A selection of subnormal results prone to double rounding errors +precision: 2 +sqtx8566 squareroot 2.3E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +sqtx8567 squareroot 2.4E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +sqtx8568 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +sqtx8569 squareroot 2.6E-21 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8570 squareroot 2.7E-21 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8571 squareroot 2.8E-21 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8572 squareroot 2.2E-20 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8573 squareroot 2.3E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8574 squareroot 2.4E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8575 squareroot 6.2E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8576 squareroot 6.3E-20 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8577 squareroot 6.4E-20 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8578 squareroot 6.5E-20 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8579 squareroot 1.2E-19 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8580 squareroot 2.0E-19 -> 4E-10 Underflow Subnormal Inexact Rounded +sqtx8581 squareroot 4.2E-19 -> 6E-10 Underflow Subnormal Inexact Rounded +sqtx8582 squareroot 5.6E-19 -> 7E-10 Underflow Subnormal Inexact Rounded +sqtx8583 squareroot 5.7E-19 -> 8E-10 Underflow Subnormal Inexact Rounded +sqtx8584 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded +sqtx8585 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +precision: 3 +sqtx8586 squareroot 2.6E-23 -> 1E-11 Underflow Subnormal Inexact Rounded +sqtx8587 squareroot 2.22E-22 -> 1E-11 Underflow Subnormal Inexact Rounded +sqtx8588 squareroot 6.07E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8589 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8590 squareroot 6.45E-22 -> 3E-11 Underflow Subnormal Inexact Rounded +sqtx8591 squareroot 6.50E-22 -> 3E-11 Underflow Subnormal Inexact Rounded +sqtx8592 squareroot 1.22E-21 -> 3E-11 Underflow Subnormal Inexact Rounded +sqtx8593 squareroot 1.24E-21 -> 4E-11 Underflow Subnormal Inexact Rounded +sqtx8594 squareroot 4.18E-21 -> 6E-11 Underflow Subnormal Inexact Rounded +sqtx8595 squareroot 7.19E-21 -> 8E-11 Underflow Subnormal Inexact Rounded +sqtx8596 squareroot 8.94E-21 -> 9E-11 Underflow Subnormal Inexact Rounded +sqtx8597 squareroot 1.81E-20 -> 1.3E-10 Underflow Subnormal Inexact Rounded +sqtx8598 squareroot 4.64E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded +sqtx8599 squareroot 5.06E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded +sqtx8600 squareroot 5.08E-20 -> 2.3E-10 Underflow Subnormal Inexact Rounded +sqtx8601 squareroot 7.00E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded +sqtx8602 squareroot 1.81E-19 -> 4.3E-10 Underflow Subnormal Inexact Rounded +sqtx8603 squareroot 6.64E-19 -> 8.1E-10 Underflow Subnormal Inexact Rounded +sqtx8604 squareroot 7.48E-19 -> 8.6E-10 Underflow Subnormal Inexact Rounded +sqtx8605 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded +precision: 4 +sqtx8606 squareroot 6.24E-24 -> 2E-12 Underflow Subnormal Inexact Rounded +sqtx8607 squareroot 7.162E-23 -> 8E-12 Underflow Subnormal Inexact Rounded +sqtx8608 squareroot 7.243E-23 -> 9E-12 Underflow Subnormal Inexact Rounded +sqtx8609 squareroot 8.961E-23 -> 9E-12 Underflow Subnormal Inexact Rounded +sqtx8610 squareroot 9.029E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded +sqtx8611 squareroot 4.624E-22 -> 2.2E-11 Underflow Subnormal Inexact Rounded +sqtx8612 squareroot 5.980E-22 -> 2.4E-11 Underflow Subnormal Inexact Rounded +sqtx8613 squareroot 6.507E-22 -> 2.6E-11 Underflow Subnormal Inexact Rounded +sqtx8614 squareroot 1.483E-21 -> 3.9E-11 Underflow Subnormal Inexact Rounded +sqtx8615 squareroot 3.903E-21 -> 6.2E-11 Underflow Subnormal Inexact Rounded +sqtx8616 squareroot 8.733E-21 -> 9.3E-11 Underflow Subnormal Inexact Rounded +sqtx8617 squareroot 1.781E-20 -> 1.33E-10 Underflow Subnormal Inexact Rounded +sqtx8618 squareroot 6.426E-20 -> 2.53E-10 Underflow Subnormal Inexact Rounded +sqtx8619 squareroot 7.102E-20 -> 2.66E-10 Underflow Subnormal Inexact Rounded +sqtx8620 squareroot 7.535E-20 -> 2.74E-10 Underflow Subnormal Inexact Rounded +sqtx8621 squareroot 9.892E-20 -> 3.15E-10 Underflow Subnormal Inexact Rounded +sqtx8622 squareroot 1.612E-19 -> 4.01E-10 Underflow Subnormal Inexact Rounded +sqtx8623 squareroot 1.726E-19 -> 4.15E-10 Underflow Subnormal Inexact Rounded +sqtx8624 squareroot 1.853E-19 -> 4.30E-10 Underflow Subnormal Inexact Rounded +sqtx8625 squareroot 4.245E-19 -> 6.52E-10 Underflow Subnormal Inexact Rounded + +-- clamping and overflow for large exponents +precision: 1 +sqtx8626 squareroot 1E+18 -> 1E+9 +sqtx8627 squareroot 1E+19 -> 3E+9 Inexact Rounded +sqtx8628 squareroot 9E+19 -> 9E+9 Inexact Rounded +sqtx8629 squareroot 9.1E+19 -> Infinity Overflow Inexact Rounded +sqtx8630 squareroot 1E+20 -> Infinity Overflow Inexact Rounded + +precision: 2 +sqtx8631 squareroot 1E+18 -> 1E+9 +sqtx8632 squareroot 1.0E+18 -> 1.0E+9 +sqtx8633 squareroot 1.00E+18 -> 1.0E+9 +sqtx8634 squareroot 1.000E+18 -> 1.0E+9 Rounded +sqtx8635 squareroot 1E+20 -> Infinity Overflow Inexact Rounded +clamp: 1 +sqtx8636 squareroot 1E+18 -> 1.0E+9 Clamped +sqtx8637 squareroot 1.0E+18 -> 1.0E+9 +sqtx8638 squareroot 1E+20 -> Infinity Overflow Inexact Rounded +clamp: 0 + +precision: 6 +sqtx8639 squareroot 1E+18 -> 1E+9 +sqtx8640 squareroot 1.0000000000E+18 -> 1.00000E+9 +sqtx8641 squareroot 1.00000000000E+18 -> 1.00000E+9 Rounded +sqtx8642 squareroot 1E+20 -> Infinity Overflow Inexact Rounded +clamp: 1 +sqtx8643 squareroot 1E+8 -> 1E+4 +sqtx8644 squareroot 1E+10 -> 1.0E+5 Clamped +sqtx8645 squareroot 1.0E+10 -> 1.0E+5 +sqtx8646 squareroot 1E+12 -> 1.00E+6 Clamped +sqtx8647 squareroot 1.0E+12 -> 1.00E+6 Clamped +sqtx8648 squareroot 1.00E+12 -> 1.00E+6 Clamped +sqtx8649 squareroot 1.000E+12 -> 1.00E+6 +sqtx8650 squareroot 1E+18 -> 1.00000E+9 Clamped +sqtx8651 squareroot 1.00000000E+18 -> 1.00000E+9 Clamped +sqtx8652 squareroot 1.000000000E+18 -> 1.00000E+9 +sqtx8653 squareroot 1E+20 -> Infinity Overflow Inexact Rounded +clamp: 0 + +-- The following example causes a TypeError in Python 2.5.1 +precision: 3 +maxexponent: 9 +minexponent: -9 +sqtx8654 squareroot 10000000000 -> 1.00E+5 Rounded + +-- Additional tricky cases of underflown subnormals +rounding: half_even +precision: 5 +maxexponent: 999 +minexponent: -999 +sqtx8700 squareroot 2.8073E-2000 -> 1.675E-1000 Underflow Subnormal Inexact Rounded +sqtx8701 squareroot 2.8883E-2000 -> 1.699E-1000 Underflow Subnormal Inexact Rounded +sqtx8702 squareroot 3.1524E-2000 -> 1.775E-1000 Underflow Subnormal Inexact Rounded +sqtx8703 squareroot 3.2382E-2000 -> 1.799E-1000 Underflow Subnormal Inexact Rounded +sqtx8704 squareroot 3.5175E-2000 -> 1.875E-1000 Underflow Subnormal Inexact Rounded +sqtx8705 squareroot 3.6081E-2000 -> 1.899E-1000 Underflow Subnormal Inexact Rounded +sqtx8706 squareroot 3.9026E-2000 -> 1.975E-1000 Underflow Subnormal Inexact Rounded +sqtx8707 squareroot 3.9980E-2000 -> 1.999E-1000 Underflow Subnormal Inexact Rounded +sqtx8708 squareroot 4.3077E-2000 -> 2.075E-1000 Underflow Subnormal Inexact Rounded +sqtx8709 squareroot 4.4079E-2000 -> 2.099E-1000 Underflow Subnormal Inexact Rounded +sqtx8710 squareroot 4.7328E-2000 -> 2.175E-1000 Underflow Subnormal Inexact Rounded +sqtx8711 squareroot 4.8378E-2000 -> 2.199E-1000 Underflow Subnormal Inexact Rounded +sqtx8712 squareroot 5.1779E-2000 -> 2.275E-1000 Underflow Subnormal Inexact Rounded +sqtx8713 squareroot 5.2877E-2000 -> 2.299E-1000 Underflow Subnormal Inexact Rounded +sqtx8714 squareroot 5.6430E-2000 -> 2.375E-1000 Underflow Subnormal Inexact Rounded +sqtx8715 squareroot 5.7576E-2000 -> 2.399E-1000 Underflow Subnormal Inexact Rounded +sqtx8716 squareroot 6.1281E-2000 -> 2.475E-1000 Underflow Subnormal Inexact Rounded +sqtx8717 squareroot 6.2475E-2000 -> 2.499E-1000 Underflow Subnormal Inexact Rounded +sqtx8718 squareroot 6.6332E-2000 -> 2.575E-1000 Underflow Subnormal Inexact Rounded +sqtx8719 squareroot 6.7574E-2000 -> 2.599E-1000 Underflow Subnormal Inexact Rounded +sqtx8720 squareroot 7.1583E-2000 -> 2.675E-1000 Underflow Subnormal Inexact Rounded +sqtx8721 squareroot 7.2873E-2000 -> 2.699E-1000 Underflow Subnormal Inexact Rounded +sqtx8722 squareroot 7.7034E-2000 -> 2.775E-1000 Underflow Subnormal Inexact Rounded +sqtx8723 squareroot 7.8372E-2000 -> 2.799E-1000 Underflow Subnormal Inexact Rounded +sqtx8724 squareroot 8.2685E-2000 -> 2.875E-1000 Underflow Subnormal Inexact Rounded +sqtx8725 squareroot 8.4071E-2000 -> 2.899E-1000 Underflow Subnormal Inexact Rounded +sqtx8726 squareroot 8.8536E-2000 -> 2.975E-1000 Underflow Subnormal Inexact Rounded +sqtx8727 squareroot 8.9970E-2000 -> 2.999E-1000 Underflow Subnormal Inexact Rounded +sqtx8728 squareroot 9.4587E-2000 -> 3.075E-1000 Underflow Subnormal Inexact Rounded +sqtx8729 squareroot 9.6069E-2000 -> 3.099E-1000 Underflow Subnormal Inexact Rounded +-- (End of Mark Dickinson's testcases.) + + +-- Some additional edge cases +maxexponent: 9 +minexponent: -9 +precision: 2 +sqtx9000 squareroot 9980.01 -> 1.0E+2 Inexact Rounded +precision: 3 +sqtx9001 squareroot 9980.01 -> 99.9 +precision: 4 +sqtx9002 squareroot 9980.01 -> 99.9 + +-- Exact from over-precise +precision: 4 +sqtx9003 squareroot 11025 -> 105 +precision: 3 +sqtx9004 squareroot 11025 -> 105 +precision: 2 +sqtx9005 squareroot 11025 -> 1.0E+2 Inexact Rounded +precision: 1 +sqtx9006 squareroot 11025 -> 1E+2 Inexact Rounded + +-- Out-of-bounds zeros +precision: 4 +sqtx9010 squareroot 0E-9 -> 0.00000 +sqtx9011 squareroot 0E-10 -> 0.00000 +sqtx9012 squareroot 0E-11 -> 0.000000 +sqtx9013 squareroot 0E-12 -> 0.000000 +sqtx9014 squareroot 0E-13 -> 0E-7 +sqtx9015 squareroot 0E-14 -> 0E-7 +sqtx9020 squareroot 0E-17 -> 0E-9 +sqtx9021 squareroot 0E-20 -> 0E-10 +sqtx9022 squareroot 0E-22 -> 0E-11 +sqtx9023 squareroot 0E-24 -> 0E-12 +sqtx9024 squareroot 0E-25 -> 0E-12 Clamped +sqtx9025 squareroot 0E-26 -> 0E-12 Clamped +sqtx9026 squareroot 0E-27 -> 0E-12 Clamped +sqtx9027 squareroot 0E-28 -> 0E-12 Clamped + +sqtx9030 squareroot 0E+8 -> 0E+4 +sqtx9031 squareroot 0E+10 -> 0E+5 +sqtx9032 squareroot 0E+12 -> 0E+6 +sqtx9033 squareroot 0E+14 -> 0E+7 +sqtx9034 squareroot 0E+15 -> 0E+7 +sqtx9035 squareroot 0E+16 -> 0E+8 +sqtx9036 squareroot 0E+18 -> 0E+9 +sqtx9037 squareroot 0E+19 -> 0E+9 +sqtx9038 squareroot 0E+20 -> 0E+9 Clamped +sqtx9039 squareroot 0E+21 -> 0E+9 Clamped +sqtx9040 squareroot 0E+22 -> 0E+9 Clamped + + -- Null test -sqtx900 squareroot # -> NaN Invalid_operation +sqtx9900 squareroot # -> NaN Invalid_operation Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/subtract.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/subtract.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/subtract.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/testall.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/testall.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/testall.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- core tests (using Extended: 1) -------------------------------------- dectest: base Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/tointegral.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/tointegral.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/tointegral.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests tests the extended specification 'round-to-integral -- value' operation (from IEEE 854, later modified in 754r). Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/tointegralx.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/tointegralx.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/tointegralx.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 -- This set of tests tests the extended specification 'round-to-integral -- value' operation (from IEEE 854, later modified in 754r). Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/xor.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/xor.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/xor.decTest Wed Sep 12 19:37:16 2007 @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.55 +version: 2.56 extended: 1 precision: 9 From python-checkins at python.org Wed Sep 12 20:03:15 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:03:15 +0200 (CEST) Subject: [Python-checkins] r58111 - doctools/trunk/sphinx/directives.py Message-ID: <20070912180315.ADAA71E4005@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:03:15 2007 New Revision: 58111 Modified: doctools/trunk/sphinx/directives.py Log: Don't append module names for methods. Modified: doctools/trunk/sphinx/directives.py ============================================================================== --- doctools/trunk/sphinx/directives.py (original) +++ doctools/trunk/sphinx/directives.py Wed Sep 12 20:03:15 2007 @@ -141,16 +141,14 @@ else: fullname = classname + name if classname else name + if classname: + signode += addnodes.desc_classname(classname, classname) # exceptions are a special case, since they are documented in the # 'exceptions' module. - if env.config.get('add_module_names', True) and \ + elif env.config.get('add_module_names', True) and \ env.currmodule and env.currmodule != 'exceptions': nodetext = env.currmodule + '.' - if classname: - nodetext += classname signode += addnodes.desc_classname(nodetext, nodetext) - elif classname: - signode += addnodes.desc_classname(classname, classname) signode += addnodes.desc_name(name, name) if not arglist: From python-checkins at python.org Wed Sep 12 20:03:51 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:03:51 +0200 (CEST) Subject: [Python-checkins] r58112 - python/trunk/Doc/library/bdb.rst python/trunk/Doc/library/debug.rst python/trunk/Doc/library/index.rst python/trunk/Doc/library/pdb.rst Message-ID: <20070912180351.D08071E401A@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:03:51 2007 New Revision: 58112 Added: python/trunk/Doc/library/bdb.rst python/trunk/Doc/library/debug.rst Modified: python/trunk/Doc/library/index.rst python/trunk/Doc/library/pdb.rst Log: New documentation page for the bdb module. (This doesn't need to be merged to Py3k.) Added: python/trunk/Doc/library/bdb.rst ============================================================================== --- (empty file) +++ python/trunk/Doc/library/bdb.rst Wed Sep 12 20:03:51 2007 @@ -0,0 +1,337 @@ +:mod:`bdb` --- Debugger framework +================================= + +.. module:: bdb + :synopsis: Debugger framework. + +The :mod:`bdb` module handles basic debugger functions, like setting breakpoints +or managing execution via the debugger. + +The following exception is defined: + +.. exception:: BdbQuit + + Exception raised by the :class:`Bdb` class for quitting the debugger. + + +The :mod:`bdb` module also defines two classes: + +.. class:: Breakpoint(self, file, line[, temporary=0[, cond=None [, funcname=None]]]) + + This class implements temporary breakpoints, ignore counts, disabling and + (re-)enabling, and conditionals. + + Breakpoints are indexed by number through a list called :attr:`bpbynumber` + and by ``(file, line)`` pairs through :attr:`bplist`. The former points to a + single instance of class :class:`Breakpoint`. The latter points to a list of + such instances since there may be more than one breakpoint per line. + + When creating a breakpoint, its associated filename should be in canonical + form. If a *funcname* is defined, a breakpoint hit will be counted when the + first line of that function is executed. A conditional breakpoint always + counts a hit. + +:class:`Breakpoint` instances have the following methods: + +.. method:: Breakpoint.deleteMe() + + Delete the breakpoint from the list associated to a file/line. If it is the + last breakpoint in that position, it also deletes the entry for the + file/line. + +.. method:: Breakpoint.enable() + + Mark the breakpoint as enabled. + +.. method:: Breakpoint.disable() + + Mark the breakpoint as disabled. + +.. method:: Breakpoint.bpprint([out]) + + Print all the information about the breakpoint: + + * The breakpoint number. + * If it is temporary or not. + * Its file,line position. + * The condition that causes a break. + * If it must be ignored the next N times. + * The breakpoint hit count. + + +.. class:: Bdb() + + The :class:`Bdb` acts as a generic Python debugger base class. + + This class takes care of the details of the trace facility; a derived class + should implement user interaction. The standard debugger class + (:class:`pdb.Pdb`) is an example. + + +The following methods of :class:`Bdb` normally don't need to be overridden. + +.. method:: Bdb.canonic(filename) + + Auxiliary method for getting a filename in a canonical form, that is, as a + case-normalized (on case-insensitive filesystems) absolute path, stripped + of surrounding angle brackets. + +.. method:: Bdb.reset() + + Set the :attr:`botframe`, :attr:`stopframe`, :attr:`returnframe` and + :attr:`quitting` attributes with values ready to start debugging. + + +.. method:: Bdb.trace_dispatch(frame, event, arg) + + This function is installed as the trace function of debugged frames. Its + return value is the new trace function (in most cases, that is, itself). + + The default implementation decides how to dispatch a frame, depending on the + type of event (passed as a string) that is about to be executed. *event* can + be one of the following: + + * ``"line"``: A new line of code is going to be executed. + * ``"call"``: A function is about to be called, or another code block + entered. + * ``"return"``: A function or other code block is about to return. + * ``"exception"``: An exception has occurred. + * ``"c_call"``: A C function is about to be called. + * ``"c_return"``: A C function has returned. + * ``"c_exception"``: A C function has thrown an exception. + + For the Python events, specialized functions (see below) are called. For the + C events, no action is taken. + + The *arg* parameter depends on the previous event. + + For more information on trace functions, see :ref:`debugger-hooks`. For more + information on code and frame objects, refer to :ref:`types`. + +.. method:: Bdb.dispatch_line(frame) + + If the debugger should stop on the current line, invoke the :meth:`user_line` + method (which should be overridden in subclasses). Raise a :exc:`BdbQuit` + exception if the :attr:`Bdb.quitting` flag is set (which can be set from + :meth:`user_line`). Return a reference to the :meth:`trace_dispatch` method + for further tracing in that scope. + +.. method:: Bdb.dispatch_call(frame, arg) + + If the debugger should stop on this function call, invoke the + :meth:`user_call` method (which should be overridden in subclasses). Raise a + :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set (which can + be set from :meth:`user_call`). Return a reference to the + :meth:`trace_dispatch` method for further tracing in that scope. + +.. method:: Bdb.dispatch_return(frame, arg) + + If the debugger should stop on this function return, invoke the + :meth:`user_return` method (which should be overridden in subclasses). Raise + a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set (which can + be set from :meth:`user_return`). Return a reference to the + :meth:`trace_dispatch` method for further tracing in that scope. + +.. method:: Bdb.dispatch_exception(frame, arg) + + If the debugger should stop at this exception, invokes the + :meth:`user_exception` method (which should be overridden in subclasses). + Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set + (which can be set from :meth:`user_exception`). Return a reference to the + :meth:`trace_dispatch` method for further tracing in that scope. + +Normally derived classes don't override the following methods, but they may if +they want to redefine the definition of stopping and breakpoints. + +.. method:: Bdb.stop_here(frame) + + This method checks if the *frame* is somewhere below :attr:`botframe` in the + call stack. :attr:`botframe` is the frame in which debugging started. + +.. method:: Bdb.break_here(frame) + + This method checks if there is a breakpoint in the filename and line + belonging to *frame* or, at least, in the current function. If the + breakpoint is a temporary one, this method deletes it. + +.. method:: Bdb.break_anywhere(frame) + + This method checks if there is a breakpoint in the filename of the current + frame. + +Derived classes should override these methods to gain control over debugger +operation. + +.. method:: Bdb.user_call(frame, argument_list) + + This method is called from :meth:`dispatch_call` when there is the + possibility that a break might be necessary anywhere inside the called + function. + +.. method:: Bdb.user_line(frame) + + This method is called from :meth:`dispatch_line` when either + :meth:`stop_here` or :meth:`break_here` yields True. + +.. method:: Bdb.user_return(frame, return_value) + + This method is called from :meth:`dispatch_return` when :meth:`stop_here` + yields True. + +.. method:: Bdb.user_exception(frame, exc_info) + + This method is called from :meth:`dispatch_exception` when :meth:`stop_here` + yields True. + +.. method:: Bdb.do_clear(arg) + + Handle how a breakpoint must be removed when it is a temporary one. + + This method must be implemented by derived classes. + + +Derived classes and clients can call the following methods to affect the +stepping state. + +.. method:: Bdb.set_step() + + Stop after one line of code. + +.. method:: Bdb.set_next(frame) + + Stop on the next line in or below the given frame. + +.. method:: Bdb.set_return(frame) + + Stop when returning from the given frame. + +.. method:: Bdb.set_trace([frame]) + + Start debugging from *frame*. If *frame* is not specified, debugging starts + from caller's frame. + +.. method:: Bdb.set_continue() + + Stop only at breakpoints or when finished. If there are no breakpoints, set + the system trace function to None. + +.. method:: Bdb.set_quit() + + Set the :attr:`quitting` attribute to True. This raises :exc:`BdbQuit` in + the next call to one of the :meth:`dispatch_\*` methods. + + +Derived classes and clients can call the following methods to manipulate +breakpoints. These methods return a string containing an error message if +something went wrong, or ``None`` if all is well. + +.. method:: Bdb.set_break(filename, lineno[, temporary=0[, cond[, funcname]]]) + + Set a new breakpoint. If the *lineno* line doesn't exist for the *filename* + passed as argument, return an error message. The *filename* should be in + canonical form, as described in the :meth:`canonic` method. + +.. method:: Bdb.clear_break(filename, lineno) + + Delete the breakpoints in *filename* and *lineno*. If none were set, an + error message is returned. + +.. method:: Bdb.clear_bpbynumber(arg) + + Delete the breakpoint which has the index *arg* in the + :attr:`Breakpoint.bpbynumber`. If `arg` is not numeric or out of range, + return an error message. + +.. method:: Bdb.clear_all_file_breaks(filename) + + Delete all breakpoints in *filename*. If none were set, an error message is + returned. + +.. method:: Bdb.clear_all_breaks() + + Delete all existing breakpoints. + +.. method:: Bdb.get_break(filename, lineno) + + Check if there is a breakpoint for *lineno* of *filename*. + +.. method:: Bdb.get_breaks(filename, lineno) + + Return all breakpoints for *lineno* in *filename*, or an empty list if none + are set. + +.. method:: Bdb.get_file_breaks(filename) + + Return all breakpoints in *filename*, or an empty list if none are set. + +.. method:: Bdb.get_all_breaks() + + Return all breakpoints that are set. + + +Derived classes and clients can call the following methods to get a data +structure representing a stack trace. + +.. method:: Bdb.get_stack(f, t) + + Get a list of records for a frame and all higher (calling) and lower frames, + and the size of the higher part. + +.. method:: Bdb.format_stack_entry(frame_lineno, [lprefix=': ']) + + Return a string with information about a stack entry, identified by a + ``(frame, lineno)`` tuple: + + * The canonical form of the filename which contains the frame. + * The function name, or ``""``. + * The input arguments. + * The return value. + * The line of code (if it exists). + + +The following two methods can be called by clients to use a debugger to debug a +statement, given as a string. + +.. method:: Bdb.run(cmd, [globals, [locals]]) + + Debug a statement executed via the :keyword:`exec` statement. *globals* + defaults to :attr:`__main__.__dict__`, *locals* defaults to *globals*. + +.. method:: Bdb.runeval(expr, [globals, [locals]]) + + Debug an expression executed via the :func:`eval` function. *globals* and + *locals* have the same meaning as in :meth:`run`. + +.. method:: Bdb.runctx(cmd, globals, locals) + + For backwards compatibility. Calls the :meth:`run` method. + +.. method:: Bdb.runcall(func, *args, **kwds) + + Debug a single function call, and return its result. + + +Finally, the module defines the following functions: + +.. function:: checkfuncname(b, frame) + + Check whether we should break here, depending on the way the breakpoint *b* + was set. + + If it was set via line number, it checks if ``b.line`` is the same as the one + in the frame also passed as argument. If the breakpoint was set via function + name, we have to check we are in the right frame (the right function) and if + we are in its first executable line. + +.. function:: effective(file, line, frame) + + Determine if there is an effective (active) breakpoint at this line of code. + Return breakpoint number or 0 if none. + + Called only if we know there is a breakpoint at this location. Returns the + breakpoint that was triggered and a flag that indicates if it is ok to delete + a temporary breakpoint. + +.. function:: set_trace() + + Starts debugging with a :class:`Bdb` instance from caller's frame. Added: python/trunk/Doc/library/debug.rst ============================================================================== --- (empty file) +++ python/trunk/Doc/library/debug.rst Wed Sep 12 20:03:51 2007 @@ -0,0 +1,17 @@ +*********************** +Debugging and Profiling +*********************** + +These libraries help you with Python development: the debugger enables you to +step through code, analyze stack frames and set breakpoints etc., and the +profilers run code and give you a detailed breakdown of execution times, +allowing you to identify bottlenecks in your programs. + +.. toctree:: + + bdb.rst + pdb.rst + profile.rst + hotshot.rst + timeit.rst + trace.rst \ No newline at end of file Modified: python/trunk/Doc/library/index.rst ============================================================================== --- python/trunk/Doc/library/index.rst (original) +++ python/trunk/Doc/library/index.rst Wed Sep 12 20:03:51 2007 @@ -64,11 +64,7 @@ frameworks.rst tk.rst development.rst - pdb.rst - profile.rst - hotshot.rst - timeit.rst - trace.rst + debug.rst python.rst custominterp.rst restricted.rst Modified: python/trunk/Doc/library/pdb.rst ============================================================================== --- python/trunk/Doc/library/pdb.rst (original) +++ python/trunk/Doc/library/pdb.rst Wed Sep 12 20:03:51 2007 @@ -1,9 +1,8 @@ .. _debugger: -******************* -The Python Debugger -******************* +:mod:`pdb` --- The Python Debugger +================================== .. module:: pdb :synopsis: The Python debugger for interactive interpreters. From python-checkins at python.org Wed Sep 12 20:05:58 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:05:58 +0200 (CEST) Subject: [Python-checkins] r58114 - python/trunk/Doc/library/simplexmlrpcserver.rst Message-ID: <20070912180558.10C791E4005@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:05:57 2007 New Revision: 58114 Modified: python/trunk/Doc/library/simplexmlrpcserver.rst Log: Bug #1152: use non-deprecated name in example. Modified: python/trunk/Doc/library/simplexmlrpcserver.rst ============================================================================== --- python/trunk/Doc/library/simplexmlrpcserver.rst (original) +++ python/trunk/Doc/library/simplexmlrpcserver.rst Wed Sep 12 20:05:57 2007 @@ -162,7 +162,7 @@ import xmlrpclib - s = xmlrpclib.Server('http://localhost:8000') + s = xmlrpclib.ServerProxy('http://localhost:8000') print s.pow(2,3) # Returns 2**3 = 8 print s.add(2,3) # Returns 5 print s.div(5,2) # Returns 5//2 = 2 From python-checkins at python.org Wed Sep 12 20:08:34 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:08:34 +0200 (CEST) Subject: [Python-checkins] r58115 - python/trunk/Doc/c-api/concrete.rst Message-ID: <20070912180834.332751E400C@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:08:33 2007 New Revision: 58115 Modified: python/trunk/Doc/c-api/concrete.rst Log: Fix #1122: wrong return type documented for various _Size() functions. Modified: python/trunk/Doc/c-api/concrete.rst ============================================================================== --- python/trunk/Doc/c-api/concrete.rst (original) +++ python/trunk/Doc/c-api/concrete.rst Wed Sep 12 20:08:33 2007 @@ -1933,12 +1933,12 @@ .. versionadded:: 2.4 -.. cfunction:: int PyTuple_Size(PyObject *p) +.. cfunction:: Py_ssize_t PyTuple_Size(PyObject *p) Take a pointer to a tuple object, and return the size of that tuple. -.. cfunction:: int PyTuple_GET_SIZE(PyObject *p) +.. cfunction:: Py_ssize_t PyTuple_GET_SIZE(PyObject *p) Return the size of the tuple *p*, which must be non-*NULL* and point to a tuple; no error checking is performed. @@ -3565,7 +3565,7 @@ or :class:`frozenset` or instances of their subtypes. -.. cfunction:: int PySet_Size(PyObject *anyset) +.. cfunction:: Py_ssize_t PySet_Size(PyObject *anyset) .. index:: builtin: len @@ -3574,7 +3574,7 @@ :class:`set`, :class:`frozenset`, or an instance of a subtype. -.. cfunction:: int PySet_GET_SIZE(PyObject *anyset) +.. cfunction:: Py_ssize_t PySet_GET_SIZE(PyObject *anyset) Macro form of :cfunc:`PySet_Size` without error checking. From python-checkins at python.org Wed Sep 12 20:08:54 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:08:54 +0200 (CEST) Subject: [Python-checkins] r58116 - python/branches/release25-maint/Doc/api/concrete.tex Message-ID: <20070912180854.E9B311E4008@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:08:54 2007 New Revision: 58116 Modified: python/branches/release25-maint/Doc/api/concrete.tex Log: Fix #1122: wrong return type documented for various _Size() functions. (backport from rev. 58115). Modified: python/branches/release25-maint/Doc/api/concrete.tex ============================================================================== --- python/branches/release25-maint/Doc/api/concrete.tex (original) +++ python/branches/release25-maint/Doc/api/concrete.tex Wed Sep 12 20:08:54 2007 @@ -1753,12 +1753,12 @@ \versionadded{2.4} \end{cfuncdesc} -\begin{cfuncdesc}{int}{PyTuple_Size}{PyObject *p} +\begin{cfuncdesc}{Py_ssize_t}{PyTuple_Size}{PyObject *p} Take a pointer to a tuple object, and return the size of that tuple. \end{cfuncdesc} -\begin{cfuncdesc}{int}{PyTuple_GET_SIZE}{PyObject *p} +\begin{cfuncdesc}{Py_ssize_t}{PyTuple_GET_SIZE}{PyObject *p} Return the size of the tuple \var{p}, which must be non-\NULL{} and point to a tuple; no error checking is performed. \end{cfuncdesc} @@ -3148,7 +3148,7 @@ The following functions and macros are available for instances of \class{set} or \class{frozenset} or instances of their subtypes. -\begin{cfuncdesc}{int}{PySet_Size}{PyObject *anyset} +\begin{cfuncdesc}{Py_ssize_t}{PySet_Size}{PyObject *anyset} Return the length of a \class{set} or \class{frozenset} object. Equivalent to \samp{len(\var{anyset})}. Raises a \exception{PyExc_SystemError} if \var{anyset} is not a \class{set}, @@ -3156,7 +3156,7 @@ \bifuncindex{len} \end{cfuncdesc} -\begin{cfuncdesc}{int}{PySet_GET_SIZE}{PyObject *anyset} +\begin{cfuncdesc}{Py_ssize_t}{PySet_GET_SIZE}{PyObject *anyset} Macro form of \cfunction{PySet_Size()} without error checking. \end{cfuncdesc} From python-checkins at python.org Wed Sep 12 20:10:57 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:10:57 +0200 (CEST) Subject: [Python-checkins] r58117 - python/trunk/Doc/c-api/concrete.rst Message-ID: <20070912181057.128571E4005@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:10:56 2007 New Revision: 58117 Modified: python/trunk/Doc/c-api/concrete.rst Log: Fix #1139: PyFile_Encoding really is PyFile_SetEncoding. Modified: python/trunk/Doc/c-api/concrete.rst ============================================================================== --- python/trunk/Doc/c-api/concrete.rst (original) +++ python/trunk/Doc/c-api/concrete.rst Wed Sep 12 20:10:56 2007 @@ -2505,7 +2505,7 @@ immediately after file object creation. -.. cfunction:: int PyFile_Encoding(PyFileObject *p, char *enc) +.. cfunction:: int PyFile_SetEncoding(PyFileObject *p, const char *enc) Set the file's encoding for Unicode output to *enc*. Return 1 on success and 0 on failure. From python-checkins at python.org Wed Sep 12 20:11:03 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:11:03 +0200 (CEST) Subject: [Python-checkins] r58118 - python/branches/release25-maint/Doc/api/concrete.tex Message-ID: <20070912181103.BB7E71E4005@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:11:03 2007 New Revision: 58118 Modified: python/branches/release25-maint/Doc/api/concrete.tex Log: Fix #1139: PyFile_Encoding really is PyFile_SetEncoding. (backport from rev. 58117). Modified: python/branches/release25-maint/Doc/api/concrete.tex ============================================================================== --- python/branches/release25-maint/Doc/api/concrete.tex (original) +++ python/branches/release25-maint/Doc/api/concrete.tex Wed Sep 12 20:11:03 2007 @@ -2233,7 +2233,7 @@ creation. \end{cfuncdesc} -\begin{cfuncdesc}{int}{PyFile_Encoding}{PyFileObject *p, char *enc} +\begin{cfuncdesc}{int}{PyFile_SetEncoding}{PyFileObject *p, const char *enc} Set the file's encoding for Unicode output to \var{enc}. Return 1 on success and 0 on failure. \versionadded{2.3} From python-checkins at python.org Wed Sep 12 20:29:18 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:29:18 +0200 (CEST) Subject: [Python-checkins] r58119 - python/trunk/Mac/Modules/cf/_CFmodule.c python/trunk/Mac/Modules/cf/cfsupport.py python/trunk/Mac/Modules/cf/pycfbridge.c Message-ID: <20070912182918.C26031E4005@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:29:18 2007 New Revision: 58119 Modified: python/trunk/Mac/Modules/cf/_CFmodule.c python/trunk/Mac/Modules/cf/cfsupport.py python/trunk/Mac/Modules/cf/pycfbridge.c Log: bug #1154: release memory allocated by "es" PyArg_ParseTuple format specifier. Modified: python/trunk/Mac/Modules/cf/_CFmodule.c ============================================================================== --- python/trunk/Mac/Modules/cf/_CFmodule.c (original) +++ python/trunk/Mac/Modules/cf/_CFmodule.c Wed Sep 12 20:29:18 2007 @@ -1828,6 +1828,7 @@ if (!PyArg_Parse(v, "es", "ascii", &cStr)) return 0; *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); + PyMem_Free(cStr); return 1; } if (PyUnicode_Check(v)) { Modified: python/trunk/Mac/Modules/cf/cfsupport.py ============================================================================== --- python/trunk/Mac/Modules/cf/cfsupport.py (original) +++ python/trunk/Mac/Modules/cf/cfsupport.py Wed Sep 12 20:29:18 2007 @@ -429,6 +429,7 @@ if (!PyArg_Parse(v, "es", "ascii", &cStr)) return NULL; *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); + PyMem_Free(cStr); return 1; } if (PyUnicode_Check(v)) { Modified: python/trunk/Mac/Modules/cf/pycfbridge.c ============================================================================== --- python/trunk/Mac/Modules/cf/pycfbridge.c (original) +++ python/trunk/Mac/Modules/cf/pycfbridge.c Wed Sep 12 20:29:18 2007 @@ -285,6 +285,7 @@ if (!PyArg_Parse(src, "es", "ascii", &chars)) return 0; /* This error is more descriptive than the general one below */ *dst = CFStringCreateWithCString((CFAllocatorRef)NULL, chars, kCFStringEncodingASCII); + PyMem_Free(chars); return 1; } if (PyUnicode_Check(src)) { From python-checkins at python.org Wed Sep 12 20:29:21 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 20:29:21 +0200 (CEST) Subject: [Python-checkins] r58120 - python/branches/release25-maint/Mac/Modules/cf/_CFmodule.c python/branches/release25-maint/Mac/Modules/cf/cfsupport.py python/branches/release25-maint/Mac/Modules/cf/pycfbridge.c Message-ID: <20070912182921.74E5D1E4010@bag.python.org> Author: georg.brandl Date: Wed Sep 12 20:29:21 2007 New Revision: 58120 Modified: python/branches/release25-maint/Mac/Modules/cf/_CFmodule.c python/branches/release25-maint/Mac/Modules/cf/cfsupport.py python/branches/release25-maint/Mac/Modules/cf/pycfbridge.c Log: bug #1154: release memory allocated by "es" PyArg_ParseTuple format specifier. (backport from rev. 58119) Modified: python/branches/release25-maint/Mac/Modules/cf/_CFmodule.c ============================================================================== --- python/branches/release25-maint/Mac/Modules/cf/_CFmodule.c (original) +++ python/branches/release25-maint/Mac/Modules/cf/_CFmodule.c Wed Sep 12 20:29:21 2007 @@ -1828,6 +1828,7 @@ if (!PyArg_Parse(v, "es", "ascii", &cStr)) return 0; *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); + PyMem_Free(cStr); return 1; } if (PyUnicode_Check(v)) { Modified: python/branches/release25-maint/Mac/Modules/cf/cfsupport.py ============================================================================== --- python/branches/release25-maint/Mac/Modules/cf/cfsupport.py (original) +++ python/branches/release25-maint/Mac/Modules/cf/cfsupport.py Wed Sep 12 20:29:21 2007 @@ -429,6 +429,7 @@ if (!PyArg_Parse(v, "es", "ascii", &cStr)) return NULL; *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); + PyMem_Free(cStr); return 1; } if (PyUnicode_Check(v)) { Modified: python/branches/release25-maint/Mac/Modules/cf/pycfbridge.c ============================================================================== --- python/branches/release25-maint/Mac/Modules/cf/pycfbridge.c (original) +++ python/branches/release25-maint/Mac/Modules/cf/pycfbridge.c Wed Sep 12 20:29:21 2007 @@ -285,6 +285,7 @@ if (!PyArg_Parse(src, "es", "ascii", &chars)) return 0; /* This error is more descriptive than the general one below */ *dst = CFStringCreateWithCString((CFAllocatorRef)NULL, chars, kCFStringEncodingASCII); + PyMem_Free(chars); return 1; } if (PyUnicode_Check(src)) { From python-checkins at python.org Wed Sep 12 20:52:05 2007 From: python-checkins at python.org (bill.janssen) Date: Wed, 12 Sep 2007 20:52:05 +0200 (CEST) Subject: [Python-checkins] r58121 - python/trunk/Lib/test/https_svn_python_org_root.pem Message-ID: <20070912185205.4C6011E4018@bag.python.org> Author: bill.janssen Date: Wed Sep 12 20:52:05 2007 New Revision: 58121 Added: python/trunk/Lib/test/https_svn_python_org_root.pem (contents, props changed) Log: root certificate for https://svn.python.org/, used in test_ssl Added: python/trunk/Lib/test/https_svn_python_org_root.pem ============================================================================== --- (empty file) +++ python/trunk/Lib/test/https_svn_python_org_root.pem Wed Sep 12 20:52:05 2007 @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB +lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt +SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG +A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe +MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v +d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh +cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn +0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ +M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a +MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd +oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI +DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy +oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 +dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy +bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF +BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli +CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE +CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t +3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS +KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== +-----END CERTIFICATE----- \ No newline at end of file From python-checkins at python.org Wed Sep 12 21:00:07 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 21:00:07 +0200 (CEST) Subject: [Python-checkins] r58122 - in python/trunk: Lib/repr.py Lib/test/test_repr.py Misc/NEWS Message-ID: <20070912190007.9F7361E4005@bag.python.org> Author: georg.brandl Date: Wed Sep 12 21:00:07 2007 New Revision: 58122 Modified: python/trunk/Lib/repr.py python/trunk/Lib/test/test_repr.py python/trunk/Misc/NEWS Log: Bug #1153: repr.repr() now doesn't require set and dictionary items to be orderable to properly represent them. Modified: python/trunk/Lib/repr.py ============================================================================== --- python/trunk/Lib/repr.py (original) +++ python/trunk/Lib/repr.py Wed Sep 12 21:00:07 2007 @@ -1,4 +1,4 @@ -"""Redo the `...` (representation) but with limits on most sizes.""" +"""Redo the builtin repr() (representation) but with limits on most sizes.""" __all__ = ["Repr","repr"] @@ -62,11 +62,11 @@ return self._repr_iterable(x, level, header, '])', self.maxarray) def repr_set(self, x, level): - x = sorted(x) + x = _possibly_sorted(x) return self._repr_iterable(x, level, 'set([', '])', self.maxset) def repr_frozenset(self, x, level): - x = sorted(x) + x = _possibly_sorted(x) return self._repr_iterable(x, level, 'frozenset([', '])', self.maxfrozenset) @@ -80,7 +80,7 @@ newlevel = level - 1 repr1 = self.repr1 pieces = [] - for key in islice(sorted(x), self.maxdict): + for key in islice(_possibly_sorted(x), self.maxdict): keyrepr = repr1(key, newlevel) valrepr = repr1(x[key], newlevel) pieces.append('%s: %s' % (keyrepr, valrepr)) @@ -110,7 +110,7 @@ s = __builtin__.repr(x) # Bugs in x.__repr__() can cause arbitrary # exceptions -- then make up something - except: + except Exception: return '<%s instance at %x>' % (x.__class__.__name__, id(x)) if len(s) > self.maxstring: i = max(0, (self.maxstring-3)//2) @@ -118,5 +118,15 @@ s = s[:i] + '...' + s[len(s)-j:] return s + +def _possibly_sorted(x): + # Since not all sequences of items can be sorted and comparison + # functions may raise arbitrary exceptions, return an unsorted + # sequence in that case. + try: + return sorted(x) + except Exception: + return list(x) + aRepr = Repr() repr = aRepr.repr Modified: python/trunk/Lib/test/test_repr.py ============================================================================== --- python/trunk/Lib/test/test_repr.py (original) +++ python/trunk/Lib/test/test_repr.py Wed Sep 12 21:00:07 2007 @@ -196,6 +196,16 @@ x = classmethod(C.foo) self.failUnless(repr(x).startswith(' Author: georg.brandl Date: Wed Sep 12 21:00:10 2007 New Revision: 58123 Modified: python/branches/release25-maint/Lib/repr.py python/branches/release25-maint/Lib/test/test_repr.py python/branches/release25-maint/Misc/NEWS Log: Bug #1153: repr.repr() now doesn't require set and dictionary items to be orderable to properly represent them. (backport from rev. 58122) Modified: python/branches/release25-maint/Lib/repr.py ============================================================================== --- python/branches/release25-maint/Lib/repr.py (original) +++ python/branches/release25-maint/Lib/repr.py Wed Sep 12 21:00:10 2007 @@ -1,4 +1,4 @@ -"""Redo the `...` (representation) but with limits on most sizes.""" +"""Redo the builtin repr() (representation) but with limits on most sizes.""" __all__ = ["Repr","repr"] @@ -62,11 +62,11 @@ return self._repr_iterable(x, level, header, '])', self.maxarray) def repr_set(self, x, level): - x = sorted(x) + x = _possibly_sorted(x) return self._repr_iterable(x, level, 'set([', '])', self.maxset) def repr_frozenset(self, x, level): - x = sorted(x) + x = _possibly_sorted(x) return self._repr_iterable(x, level, 'frozenset([', '])', self.maxfrozenset) @@ -80,7 +80,7 @@ newlevel = level - 1 repr1 = self.repr1 pieces = [] - for key in islice(sorted(x), self.maxdict): + for key in islice(_possibly_sorted(x), self.maxdict): keyrepr = repr1(key, newlevel) valrepr = repr1(x[key], newlevel) pieces.append('%s: %s' % (keyrepr, valrepr)) @@ -110,7 +110,7 @@ s = __builtin__.repr(x) # Bugs in x.__repr__() can cause arbitrary # exceptions -- then make up something - except: + except Exception: return '<%s instance at %x>' % (x.__class__.__name__, id(x)) if len(s) > self.maxstring: i = max(0, (self.maxstring-3)//2) @@ -118,5 +118,15 @@ s = s[:i] + '...' + s[len(s)-j:] return s + +def _possibly_sorted(x): + # Since not all sequences of items can be sorted and comparison + # functions may raise arbitrary exceptions, return an unsorted + # sequence in that case. + try: + return sorted(x) + except Exception: + return list(x) + aRepr = Repr() repr = aRepr.repr Modified: python/branches/release25-maint/Lib/test/test_repr.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_repr.py (original) +++ python/branches/release25-maint/Lib/test/test_repr.py Wed Sep 12 21:00:10 2007 @@ -197,6 +197,16 @@ x = classmethod(C.foo) self.failUnless(repr(x).startswith(' Author: georg.brandl Date: Wed Sep 12 21:29:28 2007 New Revision: 58125 Modified: python/trunk/Lib/distutils/command/build_scripts.py Log: #1120: put explicit version in the shebang lines of pydoc, idle and smtpd.py scripts that are installed by setup.py. That way, they work when only "make altinstall" is used. Modified: python/trunk/Lib/distutils/command/build_scripts.py ============================================================================== --- python/trunk/Lib/distutils/command/build_scripts.py (original) +++ python/trunk/Lib/distutils/command/build_scripts.py Wed Sep 12 21:29:28 2007 @@ -104,7 +104,8 @@ outf.write("#!%s%s\n" % (os.path.join( sysconfig.get_config_var("BINDIR"), - "python" + sysconfig.get_config_var("EXE")), + "python" + sysconfig.get_config_var("VERSION") + + sysconfig.get_config_var("EXE")), post_interp)) outf.writelines(f.readlines()) outf.close() From python-checkins at python.org Wed Sep 12 21:51:20 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 12 Sep 2007 21:51:20 +0200 (CEST) Subject: [Python-checkins] r58128 - doctools/trunk/TODO Message-ID: <20070912195120.84FEA1E4013@bag.python.org> Author: georg.brandl Date: Wed Sep 12 21:51:20 2007 New Revision: 58128 Modified: doctools/trunk/TODO Log: Add todo items. Modified: doctools/trunk/TODO ============================================================================== --- doctools/trunk/TODO (original) +++ doctools/trunk/TODO Wed Sep 12 21:51:20 2007 @@ -1,14 +1,21 @@ Global TODO =========== +Sphinx +****** + +- section numbers +- split the general index - add OpenSearch - "seealso" links to external examples, see http://svn.python.org/projects/sandbox/trunk/seealso/ and http://effbot.org/zone/idea-seealso.htm +- write a "printable" builder (export to latex, most probably) - "often used" combo box in sidebar +- source file cross-references? + +Web App +******* + - discuss and debug comments system -- write new Makefile, handle automatic checkout -- write a "printable" builder (export to latex, most probably) - prepare for databases other than sqlite for comments -- look at the old tools/ scripts, what functionality should be rewritten -- source file cross-references? - add search via Xapian? - optionally have a contents tree view in the sidebar (AJAX based)? From buildbot at python.org Wed Sep 12 21:52:10 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 12 Sep 2007 19:52:10 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20070912195210.6B1D11E400A@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/240 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_timeout sincerely, -The Buildbot From buildbot at python.org Wed Sep 12 22:11:29 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 12 Sep 2007 20:11:29 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20070912201129.8C8F11E4023@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/149 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_urllibnet make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Wed Sep 12 22:49:07 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 12 Sep 2007 20:49:07 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070912204907.336921E4005@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/42 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_xmlrpc sincerely, -The Buildbot From buildbot at python.org Thu Sep 13 07:49:07 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 13 Sep 2007 05:49:07 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20070913054907.853E31E4005@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/206 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Thu Sep 13 11:59:00 2007 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 13 Sep 2007 11:59:00 +0200 (CEST) Subject: [Python-checkins] r58133 - python/trunk/Tools/buildbot/buildmsi.bat Message-ID: <20070913095900.751FB1E4029@bag.python.org> Author: martin.v.loewis Date: Thu Sep 13 11:59:00 2007 New Revision: 58133 Modified: python/trunk/Tools/buildbot/buildmsi.bat Log: Add more automated actions. Modified: python/trunk/Tools/buildbot/buildmsi.bat ============================================================================== --- python/trunk/Tools/buildbot/buildmsi.bat (original) +++ python/trunk/Tools/buildbot/buildmsi.bat Thu Sep 13 11:59:00 2007 @@ -1,10 +1,24 @@ @rem Used by the buildbot "buildmsi" step. + cmd /c Tools\buildbot\external.bat + at rem build release versions of things call "%VS71COMNTOOLS%vsvars32.bat" +if not exist db-4.4.20\build_win32\release\libdb44s.lib ( + devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static +) + + at rem build Python cmd /q/c Tools\buildbot\kill_python.bat devenv.com /useenv /build Release PCbuild\pcbuild.sln + + at rem build the documentation bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp' -"%ProgramFiles%\HTML Help Workshop\hhc.exe Doc\build\htmlhelp\pydoc.hhp -cd Tools\msi +"%ProgramFiles%\HTML Help Workshop\hhc.exe" Doc\build\htmlhelp\pydoc.hhp + + at rem buold the MSI file +cd PC +nmake /f icons.mak +cd ..\Tools\msi del *.msi +nmake /f msisupport.mak %HOST_PYTHON% msi.py From buildbot at python.org Thu Sep 13 12:12:11 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 13 Sep 2007 10:12:11 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 trunk Message-ID: <20070913101211.AB5961E4017@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%20trunk/builds/43 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Thu Sep 13 12:38:43 2007 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 13 Sep 2007 12:38:43 +0200 (CEST) Subject: [Python-checkins] r58134 - python/trunk/Tools/buildbot/buildmsi.bat Message-ID: <20070913103843.263081E4008@bag.python.org> Author: martin.v.loewis Date: Thu Sep 13 12:38:42 2007 New Revision: 58134 Modified: python/trunk/Tools/buildbot/buildmsi.bat Log: Fix path. Modified: python/trunk/Tools/buildbot/buildmsi.bat ============================================================================== --- python/trunk/Tools/buildbot/buildmsi.bat (original) +++ python/trunk/Tools/buildbot/buildmsi.bat Thu Sep 13 12:38:42 2007 @@ -4,7 +4,7 @@ @rem build release versions of things call "%VS71COMNTOOLS%vsvars32.bat" if not exist db-4.4.20\build_win32\release\libdb44s.lib ( - devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static + devenv ..\db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static ) @rem build Python From python-checkins at python.org Thu Sep 13 15:27:27 2007 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 13 Sep 2007 15:27:27 +0200 (CEST) Subject: [Python-checkins] r58135 - python/trunk/Tools/buildbot/buildmsi.bat Message-ID: <20070913132727.AA4C71E4013@bag.python.org> Author: martin.v.loewis Date: Thu Sep 13 15:27:27 2007 New Revision: 58135 Modified: python/trunk/Tools/buildbot/buildmsi.bat Log: More path fixes. Modified: python/trunk/Tools/buildbot/buildmsi.bat ============================================================================== --- python/trunk/Tools/buildbot/buildmsi.bat (original) +++ python/trunk/Tools/buildbot/buildmsi.bat Thu Sep 13 15:27:27 2007 @@ -3,7 +3,7 @@ cmd /c Tools\buildbot\external.bat @rem build release versions of things call "%VS71COMNTOOLS%vsvars32.bat" -if not exist db-4.4.20\build_win32\release\libdb44s.lib ( +if not exist ..\db-4.4.20\build_win32\release\libdb44s.lib ( devenv ..\db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static ) From python-checkins at python.org Thu Sep 13 15:38:10 2007 From: python-checkins at python.org (facundo.batista) Date: Thu, 13 Sep 2007 15:38:10 +0200 (CEST) Subject: [Python-checkins] r58137 - python/branches/decimal-branch/Lib/test/test_decimal.py Message-ID: <20070913133810.4E3A71E4025@bag.python.org> Author: facundo.batista Date: Thu Sep 13 15:38:09 2007 New Revision: 58137 Modified: python/branches/decimal-branch/Lib/test/test_decimal.py Log: Cowlishaw fixed some tests where he was testing 1ulp error but against to the non more accurate result. Modified: python/branches/decimal-branch/Lib/test/test_decimal.py ============================================================================== --- python/branches/decimal-branch/Lib/test/test_decimal.py (original) +++ python/branches/decimal-branch/Lib/test/test_decimal.py Thu Sep 13 15:38:09 2007 @@ -65,12 +65,7 @@ # Slower, since it runs some things several times. EXTENDEDERRORTEST = False -# These are the decimal functions where is allowed to have an error of -# 1 in the last position -F1ULP = ('exp', 'ln', 'log10', 'power') - #Map the test cases' error names to the actual errors - ErrorNames = {'clamped' : Clamped, 'conversion_syntax' : InvalidOperation, 'division_by_zero' : DivisionByZero, @@ -340,23 +335,7 @@ myexceptions.sort() theirexceptions.sort() - if result != ans and fname in F1ULP and Inexact in theirexceptions: - # For transcendental functions we're allowed an error of - # up to 1ulp in an inexact result, so either ans+1ulp or - # ans-1ulp (but never both) may also be an acceptable - # result. Unfortunately there's no way of telling which - # one of these two numbers is the one that's within 1ulp, - # so we have to compare with both. - # We need specifically to support this, as in the Cowlishaw's - # files are tests that try not for the exact result, but - # with the error considered. - ans_as_decimal = Decimal(ans) - ans_plus_1ulp = str(ans_as_decimal.next_plus(self.context)) - ans_minus_1ulp = str(ans_as_decimal.next_minus(self.context)) - self.assert_(result in (ans_plus_1ulp, ans_minus_1ulp), - 'Incorrect answer for ' + s + ' -- got ' + result) - else: - self.assertEqual(result, ans, + self.assertEqual(result, ans, 'Incorrect answer for ' + s + ' -- got ' + result) self.assertEqual(myexceptions, theirexceptions, 'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions)) From python-checkins at python.org Thu Sep 13 16:53:40 2007 From: python-checkins at python.org (facundo.batista) Date: Thu, 13 Sep 2007 16:53:40 +0200 (CEST) Subject: [Python-checkins] r58138 - in python/branches/decimal-branch/Lib: decimal.py test/decimaltestdata/extra.decTest Message-ID: <20070913145340.26CEE1E4008@bag.python.org> Author: facundo.batista Date: Thu Sep 13 16:53:39 2007 New Revision: 58138 Modified: python/branches/decimal-branch/Lib/decimal.py python/branches/decimal-branch/Lib/test/decimaltestdata/extra.decTest Log: Now raises TypeError instead returning NotImplemented when the function is not __xxx__. Changed _convert_other() to be able to return a better message and at the same time be more concise. Modified: python/branches/decimal-branch/Lib/decimal.py ============================================================================== --- python/branches/decimal-branch/Lib/decimal.py (original) +++ python/branches/decimal-branch/Lib/decimal.py Thu Sep 13 16:53:39 2007 @@ -752,9 +752,7 @@ NaN => one is NaN Like __cmp__, but returns Decimal instances. """ - other = _convert_other(other) - if other is NotImplemented: - return other + other = _convert_other(other, raiseit=True) # Compare(NaN, NaN) = NaN if (self._is_special or other and other._is_special): @@ -1359,9 +1357,7 @@ if context is None: context = getcontext() - other = _convert_other(other) - if other is NotImplemented: - raise TypeError("Unable to convert %s to Decimal" % other) + other = _convert_other(other, raiseit=True) ans = self._check_nans(other, context) if ans: @@ -1638,42 +1634,25 @@ and a single final rounding is performed. """ + other = _convert_other(other, raiseit=True) + third = _convert_other(third, raiseit=True) + if context is None: context = getcontext() - other = _convert_other(other) - if other is NotImplemented: - return other + # do self*other in fresh context with no traps and no rounding + mul_context = Context(traps=[], flags=[], + _rounding_decision=NEVER_ROUND) + product = self.__mul__(other, mul_context) - third = _convert_other(third) - if third is NotImplemented: - return third - - # deal correctly with NaNs: - self_is_nan = self._isnan() - other_is_nan = other._isnan() - third_is_nan = third._isnan() - if self_is_nan or other_is_nan or third_is_nan: - if self_is_nan == 2: - return context._raise_error(InvalidOperation, 'sNaN', - 1, self) - if other_is_nan == 2: - return context._raise_error(InvalidOperation, 'sNaN', - 1, other) - if third_is_nan == 2: - return context._raise_error(InvalidOperation, 'sNaN', - 1, third) - if self_is_nan: - return self - if other_is_nan: - return other - return third + if mul_context.flags[InvalidOperation]: + # reraise in current context + return context._raise_error(InvalidOperation, + 'invalid multiplication in fma', + 1, product) - context = context._shallow_copy() - rounding_decision = context._set_rounding_decision(NEVER_ROUND) - product = self.__mul__(other, context) - context._set_rounding_decision(rounding_decision) - return product.__add__(third, context) + ans = product.__add__(third, context) + return ans def _power_modulo(self, other, modulo, context=None): """Three argument version of __pow__""" @@ -1681,17 +1660,8 @@ # if can't convert other and modulo to Decimal, raise # TypeError; there's no point returning NotImplemented (no # equivalent of __rpow__ for three argument pow) - other = _convert_other(other) - if other is NotImplemented: - raise TypeError("The second argument to pow should be " + - "an integer or an instance of Decimal. Got " + - str(other)) - - modulo = _convert_other(modulo) - if modulo is NotImplemented: - raise TypeError("The third argument to pow should be " + - "an integer or an instance of Decimal. Got " + - str(modulo)) + other = _convert_other(other, raiseit=True) + modulo = _convert_other(modulo, raiseit=True) if context is None: context = getcontext() @@ -2447,9 +2417,7 @@ Like max(self, other) except if one is not a number, returns NaN (and signals if one is sNaN). Also rounds. """ - other = _convert_other(other) - if other is NotImplemented: - return other + other = _convert_other(other, raiseit=True) if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the @@ -2492,9 +2460,7 @@ Like min(self, other) except if one is not a number, returns NaN (and signals if one is sNaN). Also rounds. """ - other = _convert_other(other) - if other is NotImplemented: - return other + other = _convert_other(other, raiseit=True) if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the @@ -3112,9 +3078,7 @@ def max_mag(self, other, context=None): """Compares the values numerically with their sign ignored.""" - other = _convert_other(other) - if other is NotImplemented: - return other + other = _convert_other(other, raiseit=True) if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the @@ -3145,9 +3109,7 @@ def min_mag(self, other, context=None): """Compares the values numerically with their sign ignored.""" - other = _convert_other(other) - if other is NotImplemented: - return other + other = _convert_other(other, raiseit=True) if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the @@ -3229,11 +3191,7 @@ numerically equal, then the result is a copy of self with the sign set to be the same as the sign of other. """ - other = _convert_other(other) - if other is NotImplemented: - raise TypeError("The second argument to next_toward should be " + - "an integer or an instance of Decimal. Got " + - str(other)) + other = _convert_other(other, raiseit=True) if context is None: context = getcontext() @@ -5154,7 +5112,7 @@ ##### Helper Functions #################################################### -def _convert_other(other): +def _convert_other(other, raiseit=False): """Convert other to Decimal. Verifies that it's ok to use in an implicit construction. @@ -5163,6 +5121,8 @@ return other if isinstance(other, (int, long)): return Decimal(other) + if raiseit: + raise TypeError("Unable to convert %s to Decimal" % other) return NotImplemented _infinity_map = { Modified: python/branches/decimal-branch/Lib/test/decimaltestdata/extra.decTest ============================================================================== --- python/branches/decimal-branch/Lib/test/decimaltestdata/extra.decTest (original) +++ python/branches/decimal-branch/Lib/test/decimaltestdata/extra.decTest Thu Sep 13 16:53:39 2007 @@ -147,6 +147,13 @@ extr1201 scaleb 5678 0 -> 5.68E+3 Inexact Rounded extr1202 scaleb -9105 -1 -> -910 Inexact Rounded +-- Invalid operation from 0 * infinity in fma +-- takes precedence over a third-argument sNaN +extr1300 fma 0 Inf sNaN123 -> NaN Invalid_operation +extr1301 fma Inf 0 sNaN456 -> NaN Invalid_operation +extr1302 fma 0E123 -Inf sNaN789 -> NaN Invalid_operation +extr1302 fma -Inf 0E-456 sNaN148 -> NaN Invalid_operation + ------------------------------------------------------------------------ -- The following tests (pwmx0 through pwmx440) are for the -- -- three-argument version of power: -- From python-checkins at python.org Thu Sep 13 16:54:30 2007 From: python-checkins at python.org (mark.summerfield) Date: Thu, 13 Sep 2007 16:54:30 +0200 (CEST) Subject: [Python-checkins] r58139 - python/trunk/Doc/library/fileinput.rst python/trunk/Doc/library/functions.rst python/trunk/Doc/library/operator.rst python/trunk/Doc/library/os.rst Message-ID: <20070913145431.000BB1E401E@bag.python.org> Author: mark.summerfield Date: Thu Sep 13 16:54:30 2007 New Revision: 58139 Modified: python/trunk/Doc/library/fileinput.rst python/trunk/Doc/library/functions.rst python/trunk/Doc/library/operator.rst python/trunk/Doc/library/os.rst Log: Replaced variable o with obj in operator.rst because o is easy to confuse. Added a note about Python 3's collections.Mapping etc., above section that describes isMappingType() etc. Added xrefs between os, os.path, fileinput, and open(). Modified: python/trunk/Doc/library/fileinput.rst ============================================================================== --- python/trunk/Doc/library/fileinput.rst (original) +++ python/trunk/Doc/library/fileinput.rst Thu Sep 13 16:54:30 2007 @@ -7,8 +7,9 @@ .. sectionauthor:: Fred L. Drake, Jr. -This module implements a helper class and functions to quickly write a loop over -standard input or a list of files. +This module implements a helper class and functions to quickly write a +loop over standard input or a list of files. If you just want to read or +write one file see :func:`open`. The typical use is:: Modified: python/trunk/Doc/library/functions.rst ============================================================================== --- python/trunk/Doc/library/functions.rst (original) +++ python/trunk/Doc/library/functions.rst Thu Sep 13 16:54:30 2007 @@ -765,7 +765,8 @@ Python enforces that the mode, after stripping ``'U'``, begins with ``'r'``, ``'w'`` or ``'a'``. - See also the :mod:`fileinput` module. + See also the :mod:`fileinput` module, the :mod:`os` module, and the + :mod:`os.path` module. .. versionchanged:: 2.5 Restriction on first letter of mode string introduced. Modified: python/trunk/Doc/library/operator.rst ============================================================================== --- python/trunk/Doc/library/operator.rst (original) +++ python/trunk/Doc/library/operator.rst Thu Sep 13 16:54:30 2007 @@ -48,18 +48,18 @@ truth tests, identity tests, and boolean operations: -.. function:: not_(o) - __not__(o) +.. function:: not_(obj) + __not__(obj) - Return the outcome of :keyword:`not` *o*. (Note that there is no + Return the outcome of :keyword:`not` *obj*. (Note that there is no :meth:`__not__` method for object instances; only the interpreter core defines this operation. The result is affected by the :meth:`__nonzero__` and :meth:`__len__` methods.) -.. function:: truth(o) +.. function:: truth(obj) - Return :const:`True` if *o* is true, and :const:`False` otherwise. This is + Return :const:`True` if *obj* is true, and :const:`False` otherwise. This is equivalent to using the :class:`bool` constructor. @@ -79,10 +79,10 @@ The mathematical and bitwise operations are the most numerous: -.. function:: abs(o) - __abs__(o) +.. function:: abs(obj) + __abs__(obj) - Return the absolute value of *o*. + Return the absolute value of *obj*. .. function:: add(a, b) @@ -112,12 +112,12 @@ .. versionadded:: 2.2 -.. function:: inv(o) - invert(o) - __inv__(o) - __invert__(o) +.. function:: inv(obj) + invert(obj) + __inv__(obj) + __invert__(obj) - Return the bitwise inverse of the number *o*. This is equivalent to ``~o``. + Return the bitwise inverse of the number *obj*. This is equivalent to ``~obj``. .. versionadded:: 2.0 The names :func:`invert` and :func:`__invert__`. @@ -141,10 +141,10 @@ Return ``a * b``, for *a* and *b* numbers. -.. function:: neg(o) - __neg__(o) +.. function:: neg(obj) + __neg__(obj) - Return *o* negated. + Return *obj* negated. .. function:: or_(a, b) @@ -153,10 +153,10 @@ Return the bitwise or of *a* and *b*. -.. function:: pos(o) - __pos__(o) +.. function:: pos(obj) + __pos__(obj) - Return *o* positive. + Return *obj* positive. .. function:: pow(a, b) @@ -421,24 +421,30 @@ ... pass ... >>> import operator - >>> o = C() - >>> operator.isMappingType(o) + >>> obj = C() + >>> operator.isMappingType(obj) True +.. note:: + + Python 3 is expected to introduce abstract base classes for + collection types, so it should be possible to write, for example, + ``isinstance(obj, collections.Mapping)`` and ``isinstance(obj, + collections.Sequence)``. -.. function:: isCallable(o) +.. function:: isCallable(obj) .. deprecated:: 2.0 Use the :func:`callable` built-in function instead. - Returns true if the object *o* can be called like a function, otherwise it + Returns true if the object *obj* can be called like a function, otherwise it returns false. True is returned for functions, bound and unbound methods, class objects, and instance objects which support the :meth:`__call__` method. -.. function:: isMappingType(o) +.. function:: isMappingType(obj) - Returns true if the object *o* supports the mapping interface. This is true for + Returns true if the object *obj* supports the mapping interface. This is true for dictionaries and all instance objects defining :meth:`__getitem__`. .. warning:: @@ -448,9 +454,9 @@ useful than it otherwise might be. -.. function:: isNumberType(o) +.. function:: isNumberType(obj) - Returns true if the object *o* represents a number. This is true for all + Returns true if the object *obj* represents a number. This is true for all numeric types implemented in C. .. warning:: @@ -460,9 +466,9 @@ useful than it otherwise might be. -.. function:: isSequenceType(o) +.. function:: isSequenceType(obj) - Returns true if the object *o* supports the sequence protocol. This returns true + Returns true if the object *obj* supports the sequence protocol. This returns true for all objects which define sequence methods in C, and for all instance objects defining :meth:`__getitem__`. @@ -541,7 +547,7 @@ +-----------------------+-------------------------+---------------------------------+ | Concatenation | ``seq1 + seq2`` | ``concat(seq1, seq2)`` | +-----------------------+-------------------------+---------------------------------+ -| Containment Test | ``o in seq`` | ``contains(seq, o)`` | +| Containment Test | ``obj in seq`` | ``contains(seq, obj)`` | +-----------------------+-------------------------+---------------------------------+ | Division | ``a / b`` | ``div(a, b)`` (without | | | | ``__future__.division``) | @@ -565,11 +571,11 @@ +-----------------------+-------------------------+---------------------------------+ | Identity | ``a is not b`` | ``is_not(a, b)`` | +-----------------------+-------------------------+---------------------------------+ -| Indexed Assignment | ``o[k] = v`` | ``setitem(o, k, v)`` | +| Indexed Assignment | ``obj[k] = v`` | ``setitem(obj, k, v)`` | +-----------------------+-------------------------+---------------------------------+ -| Indexed Deletion | ``del o[k]`` | ``delitem(o, k)`` | +| Indexed Deletion | ``del obj[k]`` | ``delitem(obj, k)`` | +-----------------------+-------------------------+---------------------------------+ -| Indexing | ``o[k]`` | ``getitem(o, k)`` | +| Indexing | ``obj[k]`` | ``getitem(obj, k)`` | +-----------------------+-------------------------+---------------------------------+ | Left Shift | ``a << b`` | ``lshift(a, b)`` | +-----------------------+-------------------------+---------------------------------+ @@ -591,11 +597,11 @@ +-----------------------+-------------------------+---------------------------------+ | Slicing | ``seq[i:j]`` | ``getslice(seq, i, j)`` | +-----------------------+-------------------------+---------------------------------+ -| String Formatting | ``s % o`` | ``mod(s, o)`` | +| String Formatting | ``s % obj`` | ``mod(s, obj)`` | +-----------------------+-------------------------+---------------------------------+ | Subtraction | ``a - b`` | ``sub(a, b)`` | +-----------------------+-------------------------+---------------------------------+ -| Truth Test | ``o`` | ``truth(o)`` | +| Truth Test | ``obj`` | ``truth(obj)`` | +-----------------------+-------------------------+---------------------------------+ | Ordering | ``a < b`` | ``lt(a, b)`` | +-----------------------+-------------------------+---------------------------------+ Modified: python/trunk/Doc/library/os.rst ============================================================================== --- python/trunk/Doc/library/os.rst (original) +++ python/trunk/Doc/library/os.rst Thu Sep 13 16:54:30 2007 @@ -8,9 +8,10 @@ This module provides a more portable way of using operating system dependent functionality than importing a operating system dependent built-in module like -:mod:`posix` or :mod:`nt`. (If you just want to read or write a file see -:func:`open`, and if you want to manipulate paths, see the :mod:`os.path` -module.) +:mod:`posix` or :mod:`nt`. If you just want to read or write a file see +:func:`open`, if you want to manipulate paths, see the :mod:`os.path` +module, and if you want to read all the lines in all the files on the +command line see the :mod:`fileinput` module. This module searches for an operating system dependent built-in module like :mod:`mac` or :mod:`posix` and exports the same functions and data as found From buildbot at python.org Thu Sep 13 18:16:40 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 13 Sep 2007 16:16:40 +0000 Subject: [Python-checkins] buildbot failure in 3.0.msi Message-ID: <20070913161640.679A01E4008@bag.python.org> The Buildbot has detected a new failure of 3.0.msi. Full details are available at: http://www.python.org/dev/buildbot/all/3.0.msi/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The web-page 'force build' button was pressed by 'Martin von Loewis': Test the installation Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Thu Sep 13 18:37:32 2007 From: python-checkins at python.org (facundo.batista) Date: Thu, 13 Sep 2007 18:37:32 +0200 (CEST) Subject: [Python-checkins] r58140 - python/branches/decimal-branch/Lib/decimal.py Message-ID: <20070913163732.E5A4E1E401E@bag.python.org> Author: facundo.batista Date: Thu Sep 13 18:37:32 2007 New Revision: 58140 Modified: python/branches/decimal-branch/Lib/decimal.py Log: Changed the overflow behaviour in the round_05up rounding mode to match the new tests. Thanks Mark Dickinson. Modified: python/branches/decimal-branch/Lib/decimal.py ============================================================================== --- python/branches/decimal-branch/Lib/decimal.py (original) +++ python/branches/decimal-branch/Lib/decimal.py Thu Sep 13 18:37:32 2007 @@ -349,8 +349,7 @@ def handle(self, context, sign, *args): if context.rounding in (ROUND_HALF_UP, ROUND_HALF_EVEN, - ROUND_HALF_DOWN, ROUND_UP, - ROUND_05UP): + ROUND_HALF_DOWN, ROUND_UP): return Infsign[sign] if sign == 0: if context.rounding == ROUND_CEILING: From python-checkins at python.org Thu Sep 13 18:40:56 2007 From: python-checkins at python.org (facundo.batista) Date: Thu, 13 Sep 2007 18:40:56 +0200 (CEST) Subject: [Python-checkins] r58141 - python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot_extra.decTest Message-ID: <20070913164057.1A4281E400C@bag.python.org> Author: facundo.batista Date: Thu Sep 13 18:40:56 2007 New Revision: 58141 Removed: python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot_extra.decTest Log: In the new tests from Cowlishaw, these tests are in the main squareroot.decTest file. Deleted: /python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot_extra.decTest ============================================================================== --- /python/branches/decimal-branch/Lib/test/decimaltestdata/squareroot_extra.decTest Thu Sep 13 18:40:56 2007 +++ (empty file) @@ -1,800 +0,0 @@ ------------------------------------------------------------------------- --- --- Special thanks to Mark Dickinson for tests in the range 1000-1999. --- --- Extra tests for the square root function, dealing with a variety of --- corner cases. In particular, these tests concentrate on --- (1) cases where the input precision exceeds the context precision, and --- (2) cases where the input exponent is outside the current context, --- and in particular when the result is subnormal --- --- maxexponent and minexponent are set to 9 and -9 throughout these --- cases; only the precision changes. The rounding also does not --- change, and should be irrelevant. Ideally these tests could be --- run with all rounding modes to check that the rounding mode does --- not affect any of the results. - -version: 2.xx - -extended: 1 -rounding: down -maxexponent: 9 -minexponent: -9 - --- exact results, input precision > context precision -precision: 1 -sqtx1000 squareroot 0 -> 0 -sqtx1001 squareroot 1 -> 1 -sqtx1002 squareroot 4 -> 2 -sqtx1003 squareroot 9 -> 3 -sqtx1004 squareroot 16 -> 4 -sqtx1005 squareroot 25 -> 5 -sqtx1006 squareroot 36 -> 6 -sqtx1007 squareroot 49 -> 7 -sqtx1008 squareroot 64 -> 8 -sqtx1009 squareroot 81 -> 9 -sqtx1010 squareroot 100 -> 1E+1 Rounded -sqtx1011 squareroot 121 -> 1E+1 Inexact Rounded - -precision: 2 -sqtx1012 squareroot 0 -> 0 -sqtx1013 squareroot 1 -> 1 -sqtx1014 squareroot 4 -> 2 -sqtx1015 squareroot 9 -> 3 -sqtx1016 squareroot 16 -> 4 -sqtx1017 squareroot 25 -> 5 -sqtx1018 squareroot 36 -> 6 -sqtx1019 squareroot 49 -> 7 -sqtx1020 squareroot 64 -> 8 -sqtx1021 squareroot 81 -> 9 -sqtx1022 squareroot 100 -> 10 -sqtx1023 squareroot 121 -> 11 -sqtx1024 squareroot 144 -> 12 -sqtx1025 squareroot 169 -> 13 -sqtx1026 squareroot 196 -> 14 -sqtx1027 squareroot 225 -> 15 -sqtx1028 squareroot 256 -> 16 -sqtx1029 squareroot 289 -> 17 -sqtx1030 squareroot 324 -> 18 -sqtx1031 squareroot 361 -> 19 -sqtx1032 squareroot 400 -> 20 -sqtx1033 squareroot 441 -> 21 -sqtx1034 squareroot 484 -> 22 -sqtx1035 squareroot 529 -> 23 -sqtx1036 squareroot 576 -> 24 -sqtx1037 squareroot 625 -> 25 -sqtx1038 squareroot 676 -> 26 -sqtx1039 squareroot 729 -> 27 -sqtx1040 squareroot 784 -> 28 -sqtx1041 squareroot 841 -> 29 -sqtx1042 squareroot 900 -> 30 -sqtx1043 squareroot 961 -> 31 -sqtx1044 squareroot 1024 -> 32 -sqtx1045 squareroot 1089 -> 33 -sqtx1046 squareroot 1156 -> 34 -sqtx1047 squareroot 1225 -> 35 -sqtx1048 squareroot 1296 -> 36 -sqtx1049 squareroot 1369 -> 37 -sqtx1050 squareroot 1444 -> 38 -sqtx1051 squareroot 1521 -> 39 -sqtx1052 squareroot 1600 -> 40 -sqtx1053 squareroot 1681 -> 41 -sqtx1054 squareroot 1764 -> 42 -sqtx1055 squareroot 1849 -> 43 -sqtx1056 squareroot 1936 -> 44 -sqtx1057 squareroot 2025 -> 45 -sqtx1058 squareroot 2116 -> 46 -sqtx1059 squareroot 2209 -> 47 -sqtx1060 squareroot 2304 -> 48 -sqtx1061 squareroot 2401 -> 49 -sqtx1062 squareroot 2500 -> 50 -sqtx1063 squareroot 2601 -> 51 -sqtx1064 squareroot 2704 -> 52 -sqtx1065 squareroot 2809 -> 53 -sqtx1066 squareroot 2916 -> 54 -sqtx1067 squareroot 3025 -> 55 -sqtx1068 squareroot 3136 -> 56 -sqtx1069 squareroot 3249 -> 57 -sqtx1070 squareroot 3364 -> 58 -sqtx1071 squareroot 3481 -> 59 -sqtx1072 squareroot 3600 -> 60 -sqtx1073 squareroot 3721 -> 61 -sqtx1074 squareroot 3844 -> 62 -sqtx1075 squareroot 3969 -> 63 -sqtx1076 squareroot 4096 -> 64 -sqtx1077 squareroot 4225 -> 65 -sqtx1078 squareroot 4356 -> 66 -sqtx1079 squareroot 4489 -> 67 -sqtx1080 squareroot 4624 -> 68 -sqtx1081 squareroot 4761 -> 69 -sqtx1082 squareroot 4900 -> 70 -sqtx1083 squareroot 5041 -> 71 -sqtx1084 squareroot 5184 -> 72 -sqtx1085 squareroot 5329 -> 73 -sqtx1086 squareroot 5476 -> 74 -sqtx1087 squareroot 5625 -> 75 -sqtx1088 squareroot 5776 -> 76 -sqtx1089 squareroot 5929 -> 77 -sqtx1090 squareroot 6084 -> 78 -sqtx1091 squareroot 6241 -> 79 -sqtx1092 squareroot 6400 -> 80 -sqtx1093 squareroot 6561 -> 81 -sqtx1094 squareroot 6724 -> 82 -sqtx1095 squareroot 6889 -> 83 -sqtx1096 squareroot 7056 -> 84 -sqtx1097 squareroot 7225 -> 85 -sqtx1098 squareroot 7396 -> 86 -sqtx1099 squareroot 7569 -> 87 -sqtx1100 squareroot 7744 -> 88 -sqtx1101 squareroot 7921 -> 89 -sqtx1102 squareroot 8100 -> 90 -sqtx1103 squareroot 8281 -> 91 -sqtx1104 squareroot 8464 -> 92 -sqtx1105 squareroot 8649 -> 93 -sqtx1106 squareroot 8836 -> 94 -sqtx1107 squareroot 9025 -> 95 -sqtx1108 squareroot 9216 -> 96 -sqtx1109 squareroot 9409 -> 97 -sqtx1110 squareroot 9604 -> 98 -sqtx1111 squareroot 9801 -> 99 -sqtx1112 squareroot 10000 -> 1.0E+2 Rounded -sqtx1113 squareroot 10201 -> 1.0E+2 Inexact Rounded - -precision: 3 -sqtx1114 squareroot 841 -> 29 -sqtx1115 squareroot 1600 -> 40 -sqtx1116 squareroot 2209 -> 47 -sqtx1117 squareroot 9604 -> 98 -sqtx1118 squareroot 21316 -> 146 -sqtx1119 squareroot 52441 -> 229 -sqtx1120 squareroot 68644 -> 262 -sqtx1121 squareroot 69696 -> 264 -sqtx1122 squareroot 70225 -> 265 -sqtx1123 squareroot 76729 -> 277 -sqtx1124 squareroot 130321 -> 361 -sqtx1125 squareroot 171396 -> 414 -sqtx1126 squareroot 270400 -> 520 -sqtx1127 squareroot 279841 -> 529 -sqtx1128 squareroot 407044 -> 638 -sqtx1129 squareroot 408321 -> 639 -sqtx1130 squareroot 480249 -> 693 -sqtx1131 squareroot 516961 -> 719 -sqtx1132 squareroot 692224 -> 832 -sqtx1133 squareroot 829921 -> 911 - --- selection of random exact results -precision: 6 -sqtx1134 squareroot 2.25E-12 -> 0.0000015 -sqtx1135 squareroot 8.41E-14 -> 2.9E-7 -sqtx1136 squareroot 6.241E-15 -> 7.9E-8 -sqtx1137 squareroot 5.041E+13 -> 7.1E+6 -sqtx1138 squareroot 4761 -> 69 -sqtx1139 squareroot 1.369E+17 -> 3.7E+8 -sqtx1140 squareroot 0.00002116 -> 0.0046 -sqtx1141 squareroot 7.29E+4 -> 2.7E+2 -sqtx1142 squareroot 4.624E-13 -> 6.8E-7 -sqtx1143 squareroot 3.969E+5 -> 6.3E+2 -sqtx1144 squareroot 3.73321E-11 -> 0.00000611 -sqtx1145 squareroot 5.61001E+17 -> 7.49E+8 -sqtx1146 squareroot 2.30400E-11 -> 0.00000480 -sqtx1147 squareroot 4.30336E+17 -> 6.56E+8 -sqtx1148 squareroot 0.057121 -> 0.239 -sqtx1149 squareroot 7.225E+17 -> 8.5E+8 -sqtx1150 squareroot 3.14721E+13 -> 5.61E+6 -sqtx1151 squareroot 4.61041E+17 -> 6.79E+8 -sqtx1152 squareroot 1.39876E-15 -> 3.74E-8 -sqtx1153 squareroot 6.19369E-9 -> 0.0000787 -sqtx1154 squareroot 1.620529E-10 -> 0.00001273 -sqtx1155 squareroot 1177.1761 -> 34.31 -sqtx1156 squareroot 67043344 -> 8188 -sqtx1157 squareroot 4.84E+6 -> 2.2E+3 -sqtx1158 squareroot 1.23904E+11 -> 3.52E+5 -sqtx1159 squareroot 32604100 -> 5710 -sqtx1160 squareroot 2.9757025E-11 -> 0.000005455 -sqtx1161 squareroot 6.3760225E-9 -> 0.00007985 -sqtx1162 squareroot 4.5198729E-11 -> 0.000006723 -sqtx1163 squareroot 1.4745600E-11 -> 0.000003840 -sqtx1164 squareroot 18964283.04 -> 4354.8 -sqtx1165 squareroot 3.308895529E+13 -> 5.7523E+6 -sqtx1166 squareroot 0.0028590409 -> 0.05347 -sqtx1167 squareroot 3572.213824 -> 59.768 -sqtx1168 squareroot 4.274021376E+15 -> 6.5376E+7 -sqtx1169 squareroot 4455476.64 -> 2110.8 -sqtx1170 squareroot 38.44 -> 6.2 -sqtx1171 squareroot 68.558400 -> 8.280 -sqtx1172 squareroot 715402009 -> 26747 -sqtx1173 squareroot 93.373569 -> 9.663 -sqtx1174 squareroot 2.62144000000E+15 -> 5.12000E+7 -sqtx1175 squareroot 7.48225000000E+15 -> 8.65000E+7 -sqtx1176 squareroot 3.38724000000E-9 -> 0.0000582000 -sqtx1177 squareroot 5.64001000000E-13 -> 7.51000E-7 -sqtx1178 squareroot 5.06944000000E-15 -> 7.12000E-8 -sqtx1179 squareroot 4.95616000000E+17 -> 7.04000E+8 -sqtx1180 squareroot 0.0000242064000000 -> 0.00492000 -sqtx1181 squareroot 1.48996000000E-15 -> 3.86000E-8 -sqtx1182 squareroot 9.37024000000E+17 -> 9.68000E+8 -sqtx1183 squareroot 7128900.0000 -> 2670.00 -sqtx1184 squareroot 8.2311610000E-10 -> 0.0000286900 -sqtx1185 squareroot 482747040000 -> 694800 -sqtx1186 squareroot 4.14478440000E+17 -> 6.43800E+8 -sqtx1187 squareroot 5.10510250000E-7 -> 0.000714500 -sqtx1188 squareroot 355096.810000 -> 595.900 -sqtx1189 squareroot 14288400.0000 -> 3780.00 -sqtx1190 squareroot 3.36168040000E-15 -> 5.79800E-8 -sqtx1191 squareroot 1.70899560000E-13 -> 4.13400E-7 -sqtx1192 squareroot 0.0000378348010000 -> 0.00615100 -sqtx1193 squareroot 2.00972890000E-13 -> 4.48300E-7 -sqtx1194 squareroot 4.07222659600E-13 -> 6.38140E-7 -sqtx1195 squareroot 131486012100 -> 362610 -sqtx1196 squareroot 818192611600 -> 904540 -sqtx1197 squareroot 9.8558323600E+16 -> 3.13940E+8 -sqtx1198 squareroot 5641.06144900 -> 75.1070 -sqtx1199 squareroot 4.58789475600E+17 -> 6.77340E+8 -sqtx1200 squareroot 3.21386948100E-9 -> 0.0000566910 -sqtx1201 squareroot 3.9441960000E-8 -> 0.000198600 -sqtx1202 squareroot 242723.728900 -> 492.670 -sqtx1203 squareroot 1874.89000000 -> 43.3000 -sqtx1204 squareroot 2.56722595684E+15 -> 5.06678E+7 -sqtx1205 squareroot 3.96437714689E-17 -> 6.29633E-9 -sqtx1206 squareroot 3.80106774784E-17 -> 6.16528E-9 -sqtx1207 squareroot 1.42403588496E-13 -> 3.77364E-7 -sqtx1208 squareroot 4604.84388100 -> 67.8590 -sqtx1209 squareroot 2157100869.16 -> 46444.6 -sqtx1210 squareroot 355288570.81 -> 18849.1 -sqtx1211 squareroot 4.69775901604E-11 -> 0.00000685402 -sqtx1212 squareroot 8.22115770436E+17 -> 9.06706E+8 -sqtx1213 squareroot 7.16443744900E+15 -> 8.46430E+7 -sqtx1214 squareroot 9.48995498896E+15 -> 9.74164E+7 -sqtx1215 squareroot 0.0000419091801129 -> 0.00647373 -sqtx1216 squareroot 5862627996.84 -> 76567.8 -sqtx1217 squareroot 9369537.3409 -> 3060.97 -sqtx1218 squareroot 7.74792529729E+17 -> 8.80223E+8 -sqtx1219 squareroot 1.08626931396E+17 -> 3.29586E+8 -sqtx1220 squareroot 8.89584739684E-7 -> 0.000943178 -sqtx1221 squareroot 4.0266040896E-18 -> 2.00664E-9 -sqtx1222 squareroot 9.27669480336E-7 -> 0.000963156 -sqtx1223 squareroot 0.00225497717956 -> 0.0474866 - --- test use of round-half-even for ties -precision: 1 -sqtx1224 squareroot 225 -> 2E+1 Inexact Rounded -sqtx1225 squareroot 625 -> 2E+1 Inexact Rounded -sqtx1226 squareroot 1225 -> 4E+1 Inexact Rounded -sqtx1227 squareroot 2025 -> 4E+1 Inexact Rounded -sqtx1228 squareroot 3025 -> 6E+1 Inexact Rounded -sqtx1229 squareroot 4225 -> 6E+1 Inexact Rounded -sqtx1230 squareroot 5625 -> 8E+1 Inexact Rounded -sqtx1231 squareroot 7225 -> 8E+1 Inexact Rounded -sqtx1232 squareroot 9025 -> 1E+2 Inexact Rounded - -precision: 2 -sqtx1233 squareroot 11025 -> 1.0E+2 Inexact Rounded -sqtx1234 squareroot 13225 -> 1.2E+2 Inexact Rounded -sqtx1235 squareroot 15625 -> 1.2E+2 Inexact Rounded -sqtx1236 squareroot 18225 -> 1.4E+2 Inexact Rounded -sqtx1237 squareroot 21025 -> 1.4E+2 Inexact Rounded -sqtx1238 squareroot 24025 -> 1.6E+2 Inexact Rounded -sqtx1239 squareroot 27225 -> 1.6E+2 Inexact Rounded -sqtx1240 squareroot 30625 -> 1.8E+2 Inexact Rounded -sqtx1241 squareroot 34225 -> 1.8E+2 Inexact Rounded -sqtx1242 squareroot 38025 -> 2.0E+2 Inexact Rounded -sqtx1243 squareroot 42025 -> 2.0E+2 Inexact Rounded -sqtx1244 squareroot 46225 -> 2.2E+2 Inexact Rounded -sqtx1245 squareroot 50625 -> 2.2E+2 Inexact Rounded -sqtx1246 squareroot 55225 -> 2.4E+2 Inexact Rounded -sqtx1247 squareroot 60025 -> 2.4E+2 Inexact Rounded -sqtx1248 squareroot 65025 -> 2.6E+2 Inexact Rounded -sqtx1249 squareroot 70225 -> 2.6E+2 Inexact Rounded -sqtx1250 squareroot 75625 -> 2.8E+2 Inexact Rounded -sqtx1251 squareroot 81225 -> 2.8E+2 Inexact Rounded -sqtx1252 squareroot 87025 -> 3.0E+2 Inexact Rounded -sqtx1253 squareroot 93025 -> 3.0E+2 Inexact Rounded -sqtx1254 squareroot 99225 -> 3.2E+2 Inexact Rounded -sqtx1255 squareroot 105625 -> 3.2E+2 Inexact Rounded -sqtx1256 squareroot 112225 -> 3.4E+2 Inexact Rounded -sqtx1257 squareroot 119025 -> 3.4E+2 Inexact Rounded -sqtx1258 squareroot 126025 -> 3.6E+2 Inexact Rounded -sqtx1259 squareroot 133225 -> 3.6E+2 Inexact Rounded -sqtx1260 squareroot 140625 -> 3.8E+2 Inexact Rounded -sqtx1261 squareroot 148225 -> 3.8E+2 Inexact Rounded -sqtx1262 squareroot 156025 -> 4.0E+2 Inexact Rounded -sqtx1263 squareroot 164025 -> 4.0E+2 Inexact Rounded -sqtx1264 squareroot 172225 -> 4.2E+2 Inexact Rounded -sqtx1265 squareroot 180625 -> 4.2E+2 Inexact Rounded -sqtx1266 squareroot 189225 -> 4.4E+2 Inexact Rounded -sqtx1267 squareroot 198025 -> 4.4E+2 Inexact Rounded -sqtx1268 squareroot 207025 -> 4.6E+2 Inexact Rounded -sqtx1269 squareroot 216225 -> 4.6E+2 Inexact Rounded -sqtx1270 squareroot 225625 -> 4.8E+2 Inexact Rounded -sqtx1271 squareroot 235225 -> 4.8E+2 Inexact Rounded -sqtx1272 squareroot 245025 -> 5.0E+2 Inexact Rounded -sqtx1273 squareroot 255025 -> 5.0E+2 Inexact Rounded -sqtx1274 squareroot 265225 -> 5.2E+2 Inexact Rounded -sqtx1275 squareroot 275625 -> 5.2E+2 Inexact Rounded -sqtx1276 squareroot 286225 -> 5.4E+2 Inexact Rounded -sqtx1277 squareroot 297025 -> 5.4E+2 Inexact Rounded -sqtx1278 squareroot 308025 -> 5.6E+2 Inexact Rounded -sqtx1279 squareroot 319225 -> 5.6E+2 Inexact Rounded -sqtx1280 squareroot 330625 -> 5.8E+2 Inexact Rounded -sqtx1281 squareroot 342225 -> 5.8E+2 Inexact Rounded -sqtx1282 squareroot 354025 -> 6.0E+2 Inexact Rounded -sqtx1283 squareroot 366025 -> 6.0E+2 Inexact Rounded -sqtx1284 squareroot 378225 -> 6.2E+2 Inexact Rounded -sqtx1285 squareroot 390625 -> 6.2E+2 Inexact Rounded -sqtx1286 squareroot 403225 -> 6.4E+2 Inexact Rounded -sqtx1287 squareroot 416025 -> 6.4E+2 Inexact Rounded -sqtx1288 squareroot 429025 -> 6.6E+2 Inexact Rounded -sqtx1289 squareroot 442225 -> 6.6E+2 Inexact Rounded -sqtx1290 squareroot 455625 -> 6.8E+2 Inexact Rounded -sqtx1291 squareroot 469225 -> 6.8E+2 Inexact Rounded -sqtx1292 squareroot 483025 -> 7.0E+2 Inexact Rounded -sqtx1293 squareroot 497025 -> 7.0E+2 Inexact Rounded -sqtx1294 squareroot 511225 -> 7.2E+2 Inexact Rounded -sqtx1295 squareroot 525625 -> 7.2E+2 Inexact Rounded -sqtx1296 squareroot 540225 -> 7.4E+2 Inexact Rounded -sqtx1297 squareroot 555025 -> 7.4E+2 Inexact Rounded -sqtx1298 squareroot 570025 -> 7.6E+2 Inexact Rounded -sqtx1299 squareroot 585225 -> 7.6E+2 Inexact Rounded -sqtx1300 squareroot 600625 -> 7.8E+2 Inexact Rounded -sqtx1301 squareroot 616225 -> 7.8E+2 Inexact Rounded -sqtx1302 squareroot 632025 -> 8.0E+2 Inexact Rounded -sqtx1303 squareroot 648025 -> 8.0E+2 Inexact Rounded -sqtx1304 squareroot 664225 -> 8.2E+2 Inexact Rounded -sqtx1305 squareroot 680625 -> 8.2E+2 Inexact Rounded -sqtx1306 squareroot 697225 -> 8.4E+2 Inexact Rounded -sqtx1307 squareroot 714025 -> 8.4E+2 Inexact Rounded -sqtx1308 squareroot 731025 -> 8.6E+2 Inexact Rounded -sqtx1309 squareroot 748225 -> 8.6E+2 Inexact Rounded -sqtx1310 squareroot 765625 -> 8.8E+2 Inexact Rounded -sqtx1311 squareroot 783225 -> 8.8E+2 Inexact Rounded -sqtx1312 squareroot 801025 -> 9.0E+2 Inexact Rounded -sqtx1313 squareroot 819025 -> 9.0E+2 Inexact Rounded -sqtx1314 squareroot 837225 -> 9.2E+2 Inexact Rounded -sqtx1315 squareroot 855625 -> 9.2E+2 Inexact Rounded -sqtx1316 squareroot 874225 -> 9.4E+2 Inexact Rounded -sqtx1317 squareroot 893025 -> 9.4E+2 Inexact Rounded -sqtx1318 squareroot 912025 -> 9.6E+2 Inexact Rounded -sqtx1319 squareroot 931225 -> 9.6E+2 Inexact Rounded -sqtx1320 squareroot 950625 -> 9.8E+2 Inexact Rounded -sqtx1321 squareroot 970225 -> 9.8E+2 Inexact Rounded -sqtx1322 squareroot 990025 -> 1.0E+3 Inexact Rounded - -precision: 6 -sqtx1323 squareroot 88975734963025 -> 9.43270E+6 Inexact Rounded -sqtx1324 squareroot 71085555000625 -> 8.43122E+6 Inexact Rounded -sqtx1325 squareroot 39994304.051025 -> 6324.10 Inexact Rounded -sqtx1326 squareroot 0.000007327172265625 -> 0.00270688 Inexact Rounded -sqtx1327 squareroot 1.0258600439025E-13 -> 3.20290E-7 Inexact Rounded -sqtx1328 squareroot 0.0034580574275625 -> 0.0588052 Inexact Rounded -sqtx1329 squareroot 7.6842317700625E-7 -> 0.000876598 Inexact Rounded -sqtx1330 squareroot 1263834495.2025 -> 35550.4 Inexact Rounded -sqtx1331 squareroot 433970666460.25 -> 658764 Inexact Rounded -sqtx1332 squareroot 4.5879286230625E-7 -> 0.000677342 Inexact Rounded -sqtx1333 squareroot 0.0029305603306225 -> 0.0541346 Inexact Rounded -sqtx1334 squareroot 70218282.733225 -> 8379.64 Inexact Rounded -sqtx1335 squareroot 11942519.082025 -> 3455.80 Inexact Rounded -sqtx1336 squareroot 0.0021230668905625 -> 0.0460768 Inexact Rounded -sqtx1337 squareroot 0.90081833411025 -> 0.949114 Inexact Rounded -sqtx1338 squareroot 5.5104120936225E-17 -> 7.42322E-9 Inexact Rounded -sqtx1339 squareroot 0.10530446854225 -> 0.324506 Inexact Rounded -sqtx1340 squareroot 8.706069866025E-14 -> 2.95060E-7 Inexact Rounded -sqtx1341 squareroot 23838.58800625 -> 154.398 Inexact Rounded -sqtx1342 squareroot 0.0013426911275625 -> 0.0366428 Inexact Rounded - --- test use of round-half-even in underflow situations - --- precisions 2; all cases where result is both subnormal and a tie -precision: 2 -sqtx1343 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped -sqtx1344 squareroot 2.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded -sqtx1345 squareroot 6.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded -sqtx1346 squareroot 1.225E-19 -> 4E-10 Underflow Subnormal Inexact Rounded -sqtx1347 squareroot 2.025E-19 -> 4E-10 Underflow Subnormal Inexact Rounded -sqtx1348 squareroot 3.025E-19 -> 6E-10 Underflow Subnormal Inexact Rounded -sqtx1349 squareroot 4.225E-19 -> 6E-10 Underflow Subnormal Inexact Rounded -sqtx1350 squareroot 5.625E-19 -> 8E-10 Underflow Subnormal Inexact Rounded -sqtx1351 squareroot 7.225E-19 -> 8E-10 Underflow Subnormal Inexact Rounded -sqtx1352 squareroot 9.025E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded - --- precision 3, input precision <= 5 -precision: 3 -sqtx1353 squareroot 2.5E-23 -> 0E-11 Underflow Subnormal Inexact Rounded Clamped -sqtx1354 squareroot 2.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded -sqtx1355 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded -sqtx1356 squareroot 1.225E-21 -> 4E-11 Underflow Subnormal Inexact Rounded -sqtx1357 squareroot 2.025E-21 -> 4E-11 Underflow Subnormal Inexact Rounded -sqtx1358 squareroot 3.025E-21 -> 6E-11 Underflow Subnormal Inexact Rounded -sqtx1359 squareroot 4.225E-21 -> 6E-11 Underflow Subnormal Inexact Rounded -sqtx1360 squareroot 5.625E-21 -> 8E-11 Underflow Subnormal Inexact Rounded -sqtx1361 squareroot 7.225E-21 -> 8E-11 Underflow Subnormal Inexact Rounded -sqtx1362 squareroot 9.025E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded -sqtx1363 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded -sqtx1364 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded -sqtx1365 squareroot 1.5625E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded -sqtx1366 squareroot 1.8225E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded -sqtx1367 squareroot 2.1025E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded -sqtx1368 squareroot 2.4025E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded -sqtx1369 squareroot 2.7225E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded -sqtx1370 squareroot 3.0625E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded -sqtx1371 squareroot 3.4225E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded -sqtx1372 squareroot 3.8025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded -sqtx1373 squareroot 4.2025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded -sqtx1374 squareroot 4.6225E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded -sqtx1375 squareroot 5.0625E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded -sqtx1376 squareroot 5.5225E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded -sqtx1377 squareroot 6.0025E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded -sqtx1378 squareroot 6.5025E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded -sqtx1379 squareroot 7.0225E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded -sqtx1380 squareroot 7.5625E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded -sqtx1381 squareroot 8.1225E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded -sqtx1382 squareroot 8.7025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded -sqtx1383 squareroot 9.3025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded -sqtx1384 squareroot 9.9225E-20 -> 3.2E-10 Underflow Subnormal Inexact Rounded - ---precision 4, input precision <= 4 -precision: 4 -sqtx1385 squareroot 2.5E-25 -> 0E-12 Underflow Subnormal Inexact Rounded Clamped -sqtx1386 squareroot 2.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded -sqtx1387 squareroot 6.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded -sqtx1388 squareroot 1.225E-23 -> 4E-12 Underflow Subnormal Inexact Rounded -sqtx1389 squareroot 2.025E-23 -> 4E-12 Underflow Subnormal Inexact Rounded -sqtx1390 squareroot 3.025E-23 -> 6E-12 Underflow Subnormal Inexact Rounded -sqtx1391 squareroot 4.225E-23 -> 6E-12 Underflow Subnormal Inexact Rounded -sqtx1392 squareroot 5.625E-23 -> 8E-12 Underflow Subnormal Inexact Rounded -sqtx1393 squareroot 7.225E-23 -> 8E-12 Underflow Subnormal Inexact Rounded -sqtx1394 squareroot 9.025E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded - ---precision 5, input precision <= 5 -precision: 5 -sqtx1395 squareroot 2.5E-27 -> 0E-13 Underflow Subnormal Inexact Rounded Clamped -sqtx1396 squareroot 2.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded -sqtx1397 squareroot 6.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded -sqtx1398 squareroot 1.225E-25 -> 4E-13 Underflow Subnormal Inexact Rounded -sqtx1399 squareroot 2.025E-25 -> 4E-13 Underflow Subnormal Inexact Rounded -sqtx1400 squareroot 3.025E-25 -> 6E-13 Underflow Subnormal Inexact Rounded -sqtx1401 squareroot 4.225E-25 -> 6E-13 Underflow Subnormal Inexact Rounded -sqtx1402 squareroot 5.625E-25 -> 8E-13 Underflow Subnormal Inexact Rounded -sqtx1403 squareroot 7.225E-25 -> 8E-13 Underflow Subnormal Inexact Rounded -sqtx1404 squareroot 9.025E-25 -> 1.0E-12 Underflow Subnormal Inexact Rounded -sqtx1405 squareroot 1.1025E-24 -> 1.0E-12 Underflow Subnormal Inexact Rounded -sqtx1406 squareroot 1.3225E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded -sqtx1407 squareroot 1.5625E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded -sqtx1408 squareroot 1.8225E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded -sqtx1409 squareroot 2.1025E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded -sqtx1410 squareroot 2.4025E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded -sqtx1411 squareroot 2.7225E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded -sqtx1412 squareroot 3.0625E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded -sqtx1413 squareroot 3.4225E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded -sqtx1414 squareroot 3.8025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded -sqtx1415 squareroot 4.2025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded -sqtx1416 squareroot 4.6225E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded -sqtx1417 squareroot 5.0625E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded -sqtx1418 squareroot 5.5225E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded -sqtx1419 squareroot 6.0025E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded -sqtx1420 squareroot 6.5025E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded -sqtx1421 squareroot 7.0225E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded -sqtx1422 squareroot 7.5625E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded -sqtx1423 squareroot 8.1225E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded -sqtx1424 squareroot 8.7025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded -sqtx1425 squareroot 9.3025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded -sqtx1426 squareroot 9.9225E-24 -> 3.2E-12 Underflow Subnormal Inexact Rounded - --- a random selection of values that Python2.5.1 rounds incorrectly -precision: 1 -sqtx1427 squareroot 227 -> 2E+1 Inexact Rounded -sqtx1428 squareroot 625 -> 2E+1 Inexact Rounded -sqtx1429 squareroot 1215 -> 3E+1 Inexact Rounded -sqtx1430 squareroot 2008 -> 4E+1 Inexact Rounded -sqtx1431 squareroot 2020 -> 4E+1 Inexact Rounded -sqtx1432 squareroot 2026 -> 5E+1 Inexact Rounded -sqtx1433 squareroot 2027 -> 5E+1 Inexact Rounded -sqtx1434 squareroot 2065 -> 5E+1 Inexact Rounded -sqtx1435 squareroot 2075 -> 5E+1 Inexact Rounded -sqtx1436 squareroot 2088 -> 5E+1 Inexact Rounded -sqtx1437 squareroot 3049 -> 6E+1 Inexact Rounded -sqtx1438 squareroot 3057 -> 6E+1 Inexact Rounded -sqtx1439 squareroot 3061 -> 6E+1 Inexact Rounded -sqtx1440 squareroot 3092 -> 6E+1 Inexact Rounded -sqtx1441 squareroot 4222 -> 6E+1 Inexact Rounded -sqtx1442 squareroot 5676 -> 8E+1 Inexact Rounded -sqtx1443 squareroot 5686 -> 8E+1 Inexact Rounded -sqtx1444 squareroot 7215 -> 8E+1 Inexact Rounded -sqtx1445 squareroot 9086 -> 1E+2 Inexact Rounded -sqtx1446 squareroot 9095 -> 1E+2 Inexact Rounded - -precision: 2 -sqtx1447 squareroot 1266 -> 36 Inexact Rounded -sqtx1448 squareroot 2552 -> 51 Inexact Rounded -sqtx1449 squareroot 5554 -> 75 Inexact Rounded -sqtx1450 squareroot 7832 -> 88 Inexact Rounded -sqtx1451 squareroot 13201 -> 1.1E+2 Inexact Rounded -sqtx1452 squareroot 15695 -> 1.3E+2 Inexact Rounded -sqtx1453 squareroot 18272 -> 1.4E+2 Inexact Rounded -sqtx1454 squareroot 21026 -> 1.5E+2 Inexact Rounded -sqtx1455 squareroot 24069 -> 1.6E+2 Inexact Rounded -sqtx1456 squareroot 34277 -> 1.9E+2 Inexact Rounded -sqtx1457 squareroot 46233 -> 2.2E+2 Inexact Rounded -sqtx1458 squareroot 46251 -> 2.2E+2 Inexact Rounded -sqtx1459 squareroot 46276 -> 2.2E+2 Inexact Rounded -sqtx1460 squareroot 70214 -> 2.6E+2 Inexact Rounded -sqtx1461 squareroot 81249 -> 2.9E+2 Inexact Rounded -sqtx1462 squareroot 81266 -> 2.9E+2 Inexact Rounded -sqtx1463 squareroot 93065 -> 3.1E+2 Inexact Rounded -sqtx1464 squareroot 93083 -> 3.1E+2 Inexact Rounded -sqtx1465 squareroot 99230 -> 3.2E+2 Inexact Rounded -sqtx1466 squareroot 99271 -> 3.2E+2 Inexact Rounded - -precision: 3 -sqtx1467 squareroot 11349 -> 107 Inexact Rounded -sqtx1468 squareroot 26738 -> 164 Inexact Rounded -sqtx1469 squareroot 31508 -> 178 Inexact Rounded -sqtx1470 squareroot 44734 -> 212 Inexact Rounded -sqtx1471 squareroot 44738 -> 212 Inexact Rounded -sqtx1472 squareroot 51307 -> 227 Inexact Rounded -sqtx1473 squareroot 62259 -> 250 Inexact Rounded -sqtx1474 squareroot 75901 -> 276 Inexact Rounded -sqtx1475 squareroot 76457 -> 277 Inexact Rounded -sqtx1476 squareroot 180287 -> 425 Inexact Rounded -sqtx1477 squareroot 202053 -> 450 Inexact Rounded -sqtx1478 squareroot 235747 -> 486 Inexact Rounded -sqtx1479 squareroot 256537 -> 506 Inexact Rounded -sqtx1480 squareroot 299772 -> 548 Inexact Rounded -sqtx1481 squareroot 415337 -> 644 Inexact Rounded -sqtx1482 squareroot 617067 -> 786 Inexact Rounded -sqtx1483 squareroot 628022 -> 792 Inexact Rounded -sqtx1484 squareroot 645629 -> 804 Inexact Rounded -sqtx1485 squareroot 785836 -> 886 Inexact Rounded -sqtx1486 squareroot 993066 -> 997 Inexact Rounded - -precision: 6 -sqtx1487 squareroot 14917781 -> 3862.35 Inexact Rounded -sqtx1488 squareroot 17237238 -> 4151.78 Inexact Rounded -sqtx1489 squareroot 18054463 -> 4249.05 Inexact Rounded -sqtx1490 squareroot 19990694 -> 4471.10 Inexact Rounded -sqtx1491 squareroot 29061855 -> 5390.90 Inexact Rounded -sqtx1492 squareroot 49166257 -> 7011.87 Inexact Rounded -sqtx1493 squareroot 53082086 -> 7285.75 Inexact Rounded -sqtx1494 squareroot 56787909 -> 7535.78 Inexact Rounded -sqtx1495 squareroot 81140019 -> 9007.78 Inexact Rounded -sqtx1496 squareroot 87977554 -> 9379.64 Inexact Rounded -sqtx1497 squareroot 93624683 -> 9675.98 Inexact Rounded -sqtx1498 squareroot 98732747 -> 9936.44 Inexact Rounded -sqtx1499 squareroot 99222813 -> 9961.06 Inexact Rounded -sqtx1500 squareroot 143883626 -> 11995.2 Inexact Rounded -sqtx1501 squareroot 180433301 -> 13432.5 Inexact Rounded -sqtx1502 squareroot 227034020 -> 15067.6 Inexact Rounded -sqtx1503 squareroot 283253992 -> 16830.2 Inexact Rounded -sqtx1504 squareroot 617047954 -> 24840.4 Inexact Rounded -sqtx1505 squareroot 736870094 -> 27145.4 Inexact Rounded -sqtx1506 squareroot 897322915 -> 29955.3 Inexact Rounded - --- results close to minimum normal -precision: 1 -sqtx1507 squareroot 1E-20 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped -sqtx1508 squareroot 1E-19 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped -sqtx1509 squareroot 1E-18 -> 1E-9 - -precision: 2 -sqtx1510 squareroot 8.1E-19 -> 9E-10 Subnormal -sqtx1511 squareroot 8.10E-19 -> 9E-10 Subnormal Rounded -sqtx1512 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded -sqtx1513 squareroot 9.02E-19 -> 9E-10 Underflow Subnormal Inexact Rounded -sqtx1514 squareroot 9.03E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -sqtx1515 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -sqtx1516 squareroot 9.9E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -sqtx1517 squareroot 9.91E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -sqtx1518 squareroot 9.92E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -sqtx1519 squareroot 9.95E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -sqtx1520 squareroot 9.98E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -sqtx1521 squareroot 9.99E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -sqtx1522 squareroot 1E-18 -> 1E-9 -sqtx1523 squareroot 1.0E-18 -> 1.0E-9 -sqtx1524 squareroot 1.00E-18 -> 1.0E-9 -sqtx1525 squareroot 1.000E-18 -> 1.0E-9 Rounded -sqtx1526 squareroot 1.0000E-18 -> 1.0E-9 Rounded -sqtx1527 squareroot 1.01E-18 -> 1.0E-9 Inexact Rounded -sqtx1528 squareroot 1.02E-18 -> 1.0E-9 Inexact Rounded -sqtx1529 squareroot 1.1E-18 -> 1.0E-9 Inexact Rounded - -precision: 3 -sqtx1530 squareroot 8.1E-19 -> 9E-10 Subnormal -sqtx1531 squareroot 8.10E-19 -> 9.0E-10 Subnormal -sqtx1532 squareroot 8.100E-19 -> 9.0E-10 Subnormal -sqtx1533 squareroot 8.1000E-19 -> 9.0E-10 Subnormal Rounded -sqtx1534 squareroot 9.9E-19 -> 9.9E-10 Underflow Subnormal Inexact Rounded -sqtx1535 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded -sqtx1536 squareroot 9.99E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded -sqtx1537 squareroot 9.998E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded -sqtx1538 squareroot 1E-18 -> 1E-9 -sqtx1539 squareroot 1.0E-18 -> 1.0E-9 -sqtx1540 squareroot 1.00E-18 -> 1.0E-9 -sqtx1541 squareroot 1.000E-18 -> 1.00E-9 -sqtx1542 squareroot 1.0000E-18 -> 1.00E-9 -sqtx1543 squareroot 1.00000E-18 -> 1.00E-9 Rounded -sqtx1544 squareroot 1.000000E-18 -> 1.00E-9 Rounded -sqtx1545 squareroot 1.01E-18 -> 1.00E-9 Inexact Rounded -sqtx1546 squareroot 1.02E-18 -> 1.01E-9 Inexact Rounded - --- result exactly representable with precision p, but not necessarily --- exactly representable as a subnormal; check the correct flags are raised -precision: 2 -sqtx1547 squareroot 1.21E-20 -> 1E-10 Underflow Subnormal Inexact Rounded -sqtx1548 squareroot 1.44E-20 -> 1E-10 Underflow Subnormal Inexact Rounded -sqtx1549 squareroot 9.61E-20 -> 3E-10 Underflow Subnormal Inexact Rounded -sqtx1550 squareroot 8.836E-19 -> 9E-10 Underflow Subnormal Inexact Rounded -sqtx1551 squareroot 9.216E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded - -precision: 3 -sqtx1552 squareroot 1.21E-22 -> 1E-11 Underflow Subnormal Inexact Rounded -sqtx1553 squareroot 1.21E-20 -> 1.1E-10 Subnormal -sqtx1554 squareroot 1.96E-22 -> 1E-11 Underflow Subnormal Inexact Rounded -sqtx1555 squareroot 1.96E-20 -> 1.4E-10 Subnormal -sqtx1556 squareroot 2.56E-22 -> 2E-11 Underflow Subnormal Inexact Rounded -sqtx1557 squareroot 4.00E-22 -> 2E-11 Subnormal Rounded -sqtx1558 squareroot 7.84E-22 -> 3E-11 Underflow Subnormal Inexact Rounded -sqtx1559 squareroot 9.801E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded -sqtx1560 squareroot 9.801E-19 -> 9.9E-10 Subnormal -sqtx1561 squareroot 1.0201E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded -sqtx1562 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded -sqtx1563 squareroot 1.1236E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded -sqtx1564 squareroot 1.2996E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded -sqtx1565 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded - --- A selection of subnormal results prone to double rounding errors -precision: 2 -sqtx1566 squareroot 2.3E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped -sqtx1567 squareroot 2.4E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped -sqtx1568 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped -sqtx1569 squareroot 2.6E-21 -> 1E-10 Underflow Subnormal Inexact Rounded -sqtx1570 squareroot 2.7E-21 -> 1E-10 Underflow Subnormal Inexact Rounded -sqtx1571 squareroot 2.8E-21 -> 1E-10 Underflow Subnormal Inexact Rounded -sqtx1572 squareroot 2.2E-20 -> 1E-10 Underflow Subnormal Inexact Rounded -sqtx1573 squareroot 2.3E-20 -> 2E-10 Underflow Subnormal Inexact Rounded -sqtx1574 squareroot 2.4E-20 -> 2E-10 Underflow Subnormal Inexact Rounded -sqtx1575 squareroot 6.2E-20 -> 2E-10 Underflow Subnormal Inexact Rounded -sqtx1576 squareroot 6.3E-20 -> 3E-10 Underflow Subnormal Inexact Rounded -sqtx1577 squareroot 6.4E-20 -> 3E-10 Underflow Subnormal Inexact Rounded -sqtx1578 squareroot 6.5E-20 -> 3E-10 Underflow Subnormal Inexact Rounded -sqtx1579 squareroot 1.2E-19 -> 3E-10 Underflow Subnormal Inexact Rounded -sqtx1580 squareroot 2.0E-19 -> 4E-10 Underflow Subnormal Inexact Rounded -sqtx1581 squareroot 4.2E-19 -> 6E-10 Underflow Subnormal Inexact Rounded -sqtx1582 squareroot 5.6E-19 -> 7E-10 Underflow Subnormal Inexact Rounded -sqtx1583 squareroot 5.7E-19 -> 8E-10 Underflow Subnormal Inexact Rounded -sqtx1584 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded -sqtx1585 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded -precision: 3 -sqtx1586 squareroot 2.6E-23 -> 1E-11 Underflow Subnormal Inexact Rounded -sqtx1587 squareroot 2.22E-22 -> 1E-11 Underflow Subnormal Inexact Rounded -sqtx1588 squareroot 6.07E-22 -> 2E-11 Underflow Subnormal Inexact Rounded -sqtx1589 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded -sqtx1590 squareroot 6.45E-22 -> 3E-11 Underflow Subnormal Inexact Rounded -sqtx1591 squareroot 6.50E-22 -> 3E-11 Underflow Subnormal Inexact Rounded -sqtx1592 squareroot 1.22E-21 -> 3E-11 Underflow Subnormal Inexact Rounded -sqtx1593 squareroot 1.24E-21 -> 4E-11 Underflow Subnormal Inexact Rounded -sqtx1594 squareroot 4.18E-21 -> 6E-11 Underflow Subnormal Inexact Rounded -sqtx1595 squareroot 7.19E-21 -> 8E-11 Underflow Subnormal Inexact Rounded -sqtx1596 squareroot 8.94E-21 -> 9E-11 Underflow Subnormal Inexact Rounded -sqtx1597 squareroot 1.81E-20 -> 1.3E-10 Underflow Subnormal Inexact Rounded -sqtx1598 squareroot 4.64E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded -sqtx1599 squareroot 5.06E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded -sqtx1600 squareroot 5.08E-20 -> 2.3E-10 Underflow Subnormal Inexact Rounded -sqtx1601 squareroot 7.00E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded -sqtx1602 squareroot 1.81E-19 -> 4.3E-10 Underflow Subnormal Inexact Rounded -sqtx1603 squareroot 6.64E-19 -> 8.1E-10 Underflow Subnormal Inexact Rounded -sqtx1604 squareroot 7.48E-19 -> 8.6E-10 Underflow Subnormal Inexact Rounded -sqtx1605 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded -precision: 4 -sqtx1606 squareroot 6.24E-24 -> 2E-12 Underflow Subnormal Inexact Rounded -sqtx1607 squareroot 7.162E-23 -> 8E-12 Underflow Subnormal Inexact Rounded -sqtx1608 squareroot 7.243E-23 -> 9E-12 Underflow Subnormal Inexact Rounded -sqtx1609 squareroot 8.961E-23 -> 9E-12 Underflow Subnormal Inexact Rounded -sqtx1610 squareroot 9.029E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded -sqtx1611 squareroot 4.624E-22 -> 2.2E-11 Underflow Subnormal Inexact Rounded -sqtx1612 squareroot 5.980E-22 -> 2.4E-11 Underflow Subnormal Inexact Rounded -sqtx1613 squareroot 6.507E-22 -> 2.6E-11 Underflow Subnormal Inexact Rounded -sqtx1614 squareroot 1.483E-21 -> 3.9E-11 Underflow Subnormal Inexact Rounded -sqtx1615 squareroot 3.903E-21 -> 6.2E-11 Underflow Subnormal Inexact Rounded -sqtx1616 squareroot 8.733E-21 -> 9.3E-11 Underflow Subnormal Inexact Rounded -sqtx1617 squareroot 1.781E-20 -> 1.33E-10 Underflow Subnormal Inexact Rounded -sqtx1618 squareroot 6.426E-20 -> 2.53E-10 Underflow Subnormal Inexact Rounded -sqtx1619 squareroot 7.102E-20 -> 2.66E-10 Underflow Subnormal Inexact Rounded -sqtx1620 squareroot 7.535E-20 -> 2.74E-10 Underflow Subnormal Inexact Rounded -sqtx1621 squareroot 9.892E-20 -> 3.15E-10 Underflow Subnormal Inexact Rounded -sqtx1622 squareroot 1.612E-19 -> 4.01E-10 Underflow Subnormal Inexact Rounded -sqtx1623 squareroot 1.726E-19 -> 4.15E-10 Underflow Subnormal Inexact Rounded -sqtx1624 squareroot 1.853E-19 -> 4.30E-10 Underflow Subnormal Inexact Rounded -sqtx1625 squareroot 4.245E-19 -> 6.52E-10 Underflow Subnormal Inexact Rounded - --- clamping and overflow for large exponents -precision: 1 -sqtx1626 squareroot 1E+18 -> 1E+9 -sqtx1627 squareroot 1E+19 -> 3E+9 Inexact Rounded -sqtx1628 squareroot 9E+19 -> 9E+9 Inexact Rounded -sqtx1629 squareroot 9.1E+19 -> Infinity Overflow Inexact Rounded -sqtx1630 squareroot 1E+20 -> Infinity Overflow Inexact Rounded - -precision: 2 -sqtx1631 squareroot 1E+18 -> 1E+9 -sqtx1632 squareroot 1.0E+18 -> 1.0E+9 -sqtx1633 squareroot 1.00E+18 -> 1.0E+9 -sqtx1634 squareroot 1.000E+18 -> 1.0E+9 Rounded -sqtx1635 squareroot 1E+20 -> Infinity Overflow Inexact Rounded -clamp: 1 -sqtx1636 squareroot 1E+18 -> 1.0E+9 Clamped -sqtx1637 squareroot 1.0E+18 -> 1.0E+9 -sqtx1638 squareroot 1E+20 -> Infinity Overflow Inexact Rounded -clamp: 0 - -precision: 6 -sqtx1639 squareroot 1E+18 -> 1E+9 -sqtx1640 squareroot 1.0000000000E+18 -> 1.00000E+9 -sqtx1641 squareroot 1.00000000000E+18 -> 1.00000E+9 Rounded -sqtx1642 squareroot 1E+20 -> Infinity Overflow Inexact Rounded -clamp: 1 -sqtx1643 squareroot 1E+8 -> 1E+4 -sqtx1644 squareroot 1E+10 -> 1.0E+5 Clamped -sqtx1645 squareroot 1.0E+10 -> 1.0E+5 -sqtx1646 squareroot 1E+12 -> 1.00E+6 Clamped -sqtx1647 squareroot 1.0E+12 -> 1.00E+6 Clamped -sqtx1648 squareroot 1.00E+12 -> 1.00E+6 Clamped -sqtx1649 squareroot 1.000E+12 -> 1.00E+6 -sqtx1650 squareroot 1E+18 -> 1.00000E+9 Clamped -sqtx1651 squareroot 1.00000000E+18 -> 1.00000E+9 Clamped -sqtx1652 squareroot 1.000000000E+18 -> 1.00000E+9 -sqtx1653 squareroot 1E+20 -> Infinity Overflow Inexact Rounded -clamp: 0 - --- The following example causes a TypeError in Python 2.5.1 -precision: 3 -maxexponent: 9 -minexponent: -9 -sqtx1654 squareroot 10000000000 -> 1.00E+5 Rounded - - --- Some additional edge cases -precision: 2 -sqtx2000 squareroot 9980.01 -> 1.0E+2 Inexact Rounded -precision: 3 -sqtx2001 squareroot 9980.01 -> 99.9 -precision: 4 -sqtx2002 squareroot 9980.01 -> 99.9 - --- Exact from over-precise -precision: 4 -sqtx2003 squareroot 11025 -> 105 -precision: 3 -sqtx2004 squareroot 11025 -> 105 -precision: 2 -sqtx2005 squareroot 11025 -> 1.0E+2 Inexact Rounded -precision: 1 -sqtx2006 squareroot 11025 -> 1E+2 Inexact Rounded - --- Out-of-bounds zeros -precision: 4 -sqtx2010 squareroot 0E-9 -> 0.00000 -sqtx2011 squareroot 0E-10 -> 0.00000 -sqtx2012 squareroot 0E-11 -> 0.000000 -sqtx2013 squareroot 0E-12 -> 0.000000 -sqtx2014 squareroot 0E-13 -> 0E-7 -sqtx2015 squareroot 0E-14 -> 0E-7 -sqtx2020 squareroot 0E-17 -> 0E-9 -sqtx2021 squareroot 0E-20 -> 0E-10 -sqtx2022 squareroot 0E-22 -> 0E-11 -sqtx2023 squareroot 0E-24 -> 0E-12 -sqtx2024 squareroot 0E-25 -> 0E-12 Clamped -sqtx2025 squareroot 0E-26 -> 0E-12 Clamped -sqtx2026 squareroot 0E-27 -> 0E-12 Clamped -sqtx2027 squareroot 0E-28 -> 0E-12 Clamped - -sqtx2030 squareroot 0E+8 -> 0E+4 -sqtx2031 squareroot 0E+10 -> 0E+5 -sqtx2032 squareroot 0E+12 -> 0E+6 -sqtx2033 squareroot 0E+14 -> 0E+7 -sqtx2034 squareroot 0E+15 -> 0E+7 -sqtx2035 squareroot 0E+16 -> 0E+8 -sqtx2036 squareroot 0E+18 -> 0E+9 -sqtx2037 squareroot 0E+19 -> 0E+9 -sqtx2038 squareroot 0E+20 -> 0E+9 Clamped -sqtx2039 squareroot 0E+21 -> 0E+9 Clamped -sqtx2040 squareroot 0E+22 -> 0E+9 Clamped - From python-checkins at python.org Thu Sep 13 18:53:18 2007 From: python-checkins at python.org (facundo.batista) Date: Thu, 13 Sep 2007 18:53:18 +0200 (CEST) Subject: [Python-checkins] r58142 - python/branches/decimal-branch/Lib/decimal.py Message-ID: <20070913165318.67CFE1E4008@bag.python.org> Author: facundo.batista Date: Thu Sep 13 18:53:18 2007 New Revision: 58142 Modified: python/branches/decimal-branch/Lib/decimal.py Log: Speedup of __int__. Thanks Mark Dickinson. Modified: python/branches/decimal-branch/Lib/decimal.py ============================================================================== --- python/branches/decimal-branch/Lib/decimal.py (original) +++ python/branches/decimal-branch/Lib/decimal.py Thu Sep 13 18:53:18 2007 @@ -1447,14 +1447,11 @@ return context._raise_error(InvalidContext) elif self._isinfinity(): raise OverflowError("Cannot convert infinity to long") + s = (-1)**self._sign if self._exp >= 0: - s = ''.join(map(str, self._int)) + '0'*self._exp + return s*int(''.join(map(str, self._int)))*10**self._exp else: - s = ''.join(map(str, self._int))[:self._exp] - if s == '': - s = '0' - sign = '-'*self._sign - return int(sign + s) + return s*int(''.join(map(str, self._int))[:self._exp] or '0') def __long__(self): """Converts to a long. From buildbot at python.org Thu Sep 13 19:13:38 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 13 Sep 2007 17:13:38 +0000 Subject: [Python-checkins] buildbot failure in 3.0.msi Message-ID: <20070913171338.39EED1E4006@bag.python.org> The Buildbot has detected a new failure of 3.0.msi. Full details are available at: http://www.python.org/dev/buildbot/all/3.0.msi/builds/2 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The web-page 'rebuild' button was pressed by 'Martin von Loewis': Retry building the documentation Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed compile sincerely, -The Buildbot From python-checkins at python.org Thu Sep 13 20:13:18 2007 From: python-checkins at python.org (facundo.batista) Date: Thu, 13 Sep 2007 20:13:18 +0200 (CEST) Subject: [Python-checkins] r58143 - in python/trunk/Lib: decimal.py test/decimaltestdata/abs.decTest test/decimaltestdata/add.decTest test/decimaltestdata/and.decTest test/decimaltestdata/base.decTest test/decimaltestdata/clamp.decTest test/decimaltestdata/class.decTest test/decimaltestdata/compare.decTest test/decimaltestdata/comparetotal.decTest test/decimaltestdata/comparetotmag.decTest test/decimaltestdata/copy.decTest test/decimaltestdata/copyabs.decTest test/decimaltestdata/copynegate.decTest test/decimaltestdata/copysign.decTest test/decimaltestdata/ddAbs.decTest test/decimaltestdata/ddAdd.decTest test/decimaltestdata/ddAnd.decTest test/decimaltestdata/ddBase.decTest test/decimaltestdata/ddCanonical.decTest test/decimaltestdata/ddClass.decTest test/decimaltestdata/ddCompare.decTest test/decimaltestdata/ddCompareSig.decTest test/decimaltestdata/ddCompareTotal.decTest test/decimaltestdata/ddCompareTotalMag.decTest test/decimaltestdata/ddCopy.decTest test/decimaltestdata/ddCopyAbs.decTest test/decimaltestdata/ddCopyNegate.decTest test/decimaltestdata/ddCopySign.decTest test/decimaltestdata/ddDivide.decTest test/decimaltestdata/ddDivideInt.decTest test/decimaltestdata/ddEncode.decTest test/decimaltestdata/ddFMA.decTest test/decimaltestdata/ddInvert.decTest test/decimaltestdata/ddLogB.decTest test/decimaltestdata/ddMax.decTest test/decimaltestdata/ddMaxMag.decTest test/decimaltestdata/ddMin.decTest test/decimaltestdata/ddMinMag.decTest test/decimaltestdata/ddMinus.decTest test/decimaltestdata/ddMultiply.decTest test/decimaltestdata/ddNextMinus.decTest test/decimaltestdata/ddNextPlus.decTest test/decimaltestdata/ddNextToward.decTest test/decimaltestdata/ddOr.decTest test/decimaltestdata/ddPlus.decTest test/decimaltestdata/ddQuantize.decTest test/decimaltestdata/ddReduce.decTest test/decimaltestdata/ddRemainder.decTest test/decimaltestdata/ddRemainderNear.decTest test/decimaltestdata/ddRotate.decTest test/decimaltestdata/ddSameQuantum.decTest test/decimaltestdata/ddScaleB.decTest test/decimaltestdata/ddShift.decTest test/decimaltestdata/ddSubtract.decTest test/decimaltestdata/ddToIntegral.decTest test/decimaltestdata/ddXor.decTest test/decimaltestdata/decDouble.decTest test/decimaltestdata/decQuad.decTest test/decimaltestdata/decSingle.decTest test/decimaltestdata/decimal128.decTest test/decimaltestdata/decimal32.decTest test/decimaltestdata/decimal64.decTest test/decimaltestdata/divide.decTest test/decimaltestdata/divideint.decTest test/decimaltestdata/dqAbs.decTest test/decimaltestdata/dqAdd.decTest test/decimaltestdata/dqAnd.decTest test/decimaltestdata/dqBase.decTest test/decimaltestdata/dqCanonical.decTest test/decimaltestdata/dqClass.decTest test/decimaltestdata/dqCompare.decTest test/decimaltestdata/dqCompareSig.decTest test/decimaltestdata/dqCompareTotal.decTest test/decimaltestdata/dqCompareTotalMag.decTest test/decimaltestdata/dqCopy.decTest test/decimaltestdata/dqCopyAbs.decTest test/decimaltestdata/dqCopyNegate.decTest test/decimaltestdata/dqCopySign.decTest test/decimaltestdata/dqDivide.decTest test/decimaltestdata/dqDivideInt.decTest test/decimaltestdata/dqEncode.decTest test/decimaltestdata/dqFMA.decTest test/decimaltestdata/dqInvert.decTest test/decimaltestdata/dqLogB.decTest test/decimaltestdata/dqMax.decTest test/decimaltestdata/dqMaxMag.decTest test/decimaltestdata/dqMin.decTest test/decimaltestdata/dqMinMag.decTest test/decimaltestdata/dqMinus.decTest test/decimaltestdata/dqMultiply.decTest test/decimaltestdata/dqNextMinus.decTest test/decimaltestdata/dqNextPlus.decTest test/decimaltestdata/dqNextToward.decTest test/decimaltestdata/dqOr.decTest test/decimaltestdata/dqPlus.decTest test/decimaltestdata/dqQuantize.decTest test/decimaltestdata/dqReduce.decTest test/decimaltestdata/dqRemainder.decTest test/decimaltestdata/dqRemainderNear.decTest test/decimaltestdata/dqRotate.decTest test/decimaltestdata/dqSameQuantum.decTest test/decimaltestdata/dqScaleB.decTest test/decimaltestdata/dqShift.decTest test/decimaltestdata/dqSubtract.decTest test/decimaltestdata/dqToIntegral.decTest test/decimaltestdata/dqXor.decTest test/decimaltestdata/dsBase.decTest test/decimaltestdata/dsEncode.decTest test/decimaltestdata/exp.decTest test/decimaltestdata/extra.decTest test/decimaltestdata/fma.decTest test/decimaltestdata/inexact.decTest test/decimaltestdata/invert.decTest test/decimaltestdata/ln.decTest test/decimaltestdata/log10.decTest test/decimaltestdata/logb.decTest test/decimaltestdata/max.decTest test/decimaltestdata/maxmag.decTest test/decimaltestdata/min.decTest test/decimaltestdata/minmag.decTest test/decimaltestdata/minus.decTest test/decimaltestdata/multiply.decTest test/decimaltestdata/nextminus.decTest test/decimaltestdata/nextplus.decTest test/decimaltestdata/nexttoward.decTest test/decimaltestdata/normalize.decTest test/decimaltestdata/or.decTest test/decimaltestdata/plus.decTest test/decimaltestdata/power.decTest test/decimaltestdata/powersqrt.decTest test/decimaltestdata/quantize.decTest test/decimaltestdata/randomBound32.decTest test/decimaltestdata/randoms.decTest test/decimaltestdata/reduce.decTest test/decimaltestdata/remainder.decTest test/decimaltestdata/remainderNear.decTest test/decimaltestdata/rescale.decTest test/decimaltestdata/rotate.decTest test/decimaltestdata/rounding.decTest test/decimaltestdata/samequantum.decTest test/decimaltestdata/scaleb.decTest test/decimaltestdata/shift.decTest test/decimaltestdata/squareroot.decTest test/decimaltestdata/subtract.decTest test/decimaltestdata/testall.decTest test/decimaltestdata/tointegral.decTest test/decimaltestdata/tointegralx.decTest test/decimaltestdata/xor.decTest test/test_decimal.py Message-ID: <20070913181318.C5E741E400A@bag.python.org> Author: facundo.batista Date: Thu Sep 13 20:13:15 2007 New Revision: 58143 Added: python/trunk/Lib/test/decimaltestdata/and.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/and.decTest python/trunk/Lib/test/decimaltestdata/class.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/class.decTest python/trunk/Lib/test/decimaltestdata/comparetotal.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotal.decTest python/trunk/Lib/test/decimaltestdata/comparetotmag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/comparetotmag.decTest python/trunk/Lib/test/decimaltestdata/copy.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/copy.decTest python/trunk/Lib/test/decimaltestdata/copyabs.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/copyabs.decTest python/trunk/Lib/test/decimaltestdata/copynegate.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/copynegate.decTest python/trunk/Lib/test/decimaltestdata/copysign.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/copysign.decTest python/trunk/Lib/test/decimaltestdata/ddAbs.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddAbs.decTest python/trunk/Lib/test/decimaltestdata/ddAdd.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddAdd.decTest python/trunk/Lib/test/decimaltestdata/ddAnd.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddAnd.decTest python/trunk/Lib/test/decimaltestdata/ddBase.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddBase.decTest python/trunk/Lib/test/decimaltestdata/ddCanonical.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCanonical.decTest python/trunk/Lib/test/decimaltestdata/ddClass.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddClass.decTest python/trunk/Lib/test/decimaltestdata/ddCompare.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompare.decTest python/trunk/Lib/test/decimaltestdata/ddCompareSig.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareSig.decTest python/trunk/Lib/test/decimaltestdata/ddCompareTotal.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotal.decTest python/trunk/Lib/test/decimaltestdata/ddCompareTotalMag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCompareTotalMag.decTest python/trunk/Lib/test/decimaltestdata/ddCopy.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopy.decTest python/trunk/Lib/test/decimaltestdata/ddCopyAbs.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyAbs.decTest python/trunk/Lib/test/decimaltestdata/ddCopyNegate.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopyNegate.decTest python/trunk/Lib/test/decimaltestdata/ddCopySign.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddCopySign.decTest python/trunk/Lib/test/decimaltestdata/ddDivide.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivide.decTest python/trunk/Lib/test/decimaltestdata/ddDivideInt.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddDivideInt.decTest python/trunk/Lib/test/decimaltestdata/ddEncode.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddEncode.decTest python/trunk/Lib/test/decimaltestdata/ddFMA.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddFMA.decTest python/trunk/Lib/test/decimaltestdata/ddInvert.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddInvert.decTest python/trunk/Lib/test/decimaltestdata/ddLogB.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddLogB.decTest python/trunk/Lib/test/decimaltestdata/ddMax.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddMax.decTest python/trunk/Lib/test/decimaltestdata/ddMaxMag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddMaxMag.decTest python/trunk/Lib/test/decimaltestdata/ddMin.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddMin.decTest python/trunk/Lib/test/decimaltestdata/ddMinMag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinMag.decTest python/trunk/Lib/test/decimaltestdata/ddMinus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddMinus.decTest python/trunk/Lib/test/decimaltestdata/ddMultiply.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddMultiply.decTest python/trunk/Lib/test/decimaltestdata/ddNextMinus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextMinus.decTest python/trunk/Lib/test/decimaltestdata/ddNextPlus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextPlus.decTest python/trunk/Lib/test/decimaltestdata/ddNextToward.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddNextToward.decTest python/trunk/Lib/test/decimaltestdata/ddOr.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddOr.decTest python/trunk/Lib/test/decimaltestdata/ddPlus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddPlus.decTest python/trunk/Lib/test/decimaltestdata/ddQuantize.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddQuantize.decTest python/trunk/Lib/test/decimaltestdata/ddReduce.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddReduce.decTest python/trunk/Lib/test/decimaltestdata/ddRemainder.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainder.decTest python/trunk/Lib/test/decimaltestdata/ddRemainderNear.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddRemainderNear.decTest python/trunk/Lib/test/decimaltestdata/ddRotate.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddRotate.decTest python/trunk/Lib/test/decimaltestdata/ddSameQuantum.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddSameQuantum.decTest python/trunk/Lib/test/decimaltestdata/ddScaleB.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddScaleB.decTest python/trunk/Lib/test/decimaltestdata/ddShift.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddShift.decTest python/trunk/Lib/test/decimaltestdata/ddSubtract.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddSubtract.decTest python/trunk/Lib/test/decimaltestdata/ddToIntegral.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddToIntegral.decTest python/trunk/Lib/test/decimaltestdata/ddXor.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ddXor.decTest python/trunk/Lib/test/decimaltestdata/decDouble.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/decDouble.decTest python/trunk/Lib/test/decimaltestdata/decQuad.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/decQuad.decTest python/trunk/Lib/test/decimaltestdata/decSingle.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/decSingle.decTest python/trunk/Lib/test/decimaltestdata/dqAbs.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqAbs.decTest python/trunk/Lib/test/decimaltestdata/dqAdd.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqAdd.decTest python/trunk/Lib/test/decimaltestdata/dqAnd.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqAnd.decTest python/trunk/Lib/test/decimaltestdata/dqBase.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqBase.decTest python/trunk/Lib/test/decimaltestdata/dqCanonical.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCanonical.decTest python/trunk/Lib/test/decimaltestdata/dqClass.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqClass.decTest python/trunk/Lib/test/decimaltestdata/dqCompare.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompare.decTest python/trunk/Lib/test/decimaltestdata/dqCompareSig.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareSig.decTest python/trunk/Lib/test/decimaltestdata/dqCompareTotal.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotal.decTest python/trunk/Lib/test/decimaltestdata/dqCompareTotalMag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCompareTotalMag.decTest python/trunk/Lib/test/decimaltestdata/dqCopy.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopy.decTest python/trunk/Lib/test/decimaltestdata/dqCopyAbs.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyAbs.decTest python/trunk/Lib/test/decimaltestdata/dqCopyNegate.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopyNegate.decTest python/trunk/Lib/test/decimaltestdata/dqCopySign.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqCopySign.decTest python/trunk/Lib/test/decimaltestdata/dqDivide.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivide.decTest python/trunk/Lib/test/decimaltestdata/dqDivideInt.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqDivideInt.decTest python/trunk/Lib/test/decimaltestdata/dqEncode.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqEncode.decTest python/trunk/Lib/test/decimaltestdata/dqFMA.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqFMA.decTest python/trunk/Lib/test/decimaltestdata/dqInvert.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqInvert.decTest python/trunk/Lib/test/decimaltestdata/dqLogB.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqLogB.decTest python/trunk/Lib/test/decimaltestdata/dqMax.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqMax.decTest python/trunk/Lib/test/decimaltestdata/dqMaxMag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqMaxMag.decTest python/trunk/Lib/test/decimaltestdata/dqMin.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqMin.decTest python/trunk/Lib/test/decimaltestdata/dqMinMag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinMag.decTest python/trunk/Lib/test/decimaltestdata/dqMinus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqMinus.decTest python/trunk/Lib/test/decimaltestdata/dqMultiply.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqMultiply.decTest python/trunk/Lib/test/decimaltestdata/dqNextMinus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextMinus.decTest python/trunk/Lib/test/decimaltestdata/dqNextPlus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextPlus.decTest python/trunk/Lib/test/decimaltestdata/dqNextToward.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqNextToward.decTest python/trunk/Lib/test/decimaltestdata/dqOr.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqOr.decTest python/trunk/Lib/test/decimaltestdata/dqPlus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqPlus.decTest python/trunk/Lib/test/decimaltestdata/dqQuantize.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqQuantize.decTest python/trunk/Lib/test/decimaltestdata/dqReduce.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqReduce.decTest python/trunk/Lib/test/decimaltestdata/dqRemainder.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainder.decTest python/trunk/Lib/test/decimaltestdata/dqRemainderNear.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqRemainderNear.decTest python/trunk/Lib/test/decimaltestdata/dqRotate.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqRotate.decTest python/trunk/Lib/test/decimaltestdata/dqSameQuantum.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqSameQuantum.decTest python/trunk/Lib/test/decimaltestdata/dqScaleB.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqScaleB.decTest python/trunk/Lib/test/decimaltestdata/dqShift.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqShift.decTest python/trunk/Lib/test/decimaltestdata/dqSubtract.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqSubtract.decTest python/trunk/Lib/test/decimaltestdata/dqToIntegral.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqToIntegral.decTest python/trunk/Lib/test/decimaltestdata/dqXor.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dqXor.decTest python/trunk/Lib/test/decimaltestdata/dsBase.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dsBase.decTest python/trunk/Lib/test/decimaltestdata/dsEncode.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/dsEncode.decTest python/trunk/Lib/test/decimaltestdata/exp.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/exp.decTest python/trunk/Lib/test/decimaltestdata/extra.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/extra.decTest python/trunk/Lib/test/decimaltestdata/fma.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/fma.decTest python/trunk/Lib/test/decimaltestdata/invert.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/invert.decTest python/trunk/Lib/test/decimaltestdata/ln.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/ln.decTest python/trunk/Lib/test/decimaltestdata/log10.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/log10.decTest python/trunk/Lib/test/decimaltestdata/logb.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/logb.decTest python/trunk/Lib/test/decimaltestdata/maxmag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/maxmag.decTest python/trunk/Lib/test/decimaltestdata/minmag.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/minmag.decTest python/trunk/Lib/test/decimaltestdata/nextminus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/nextminus.decTest python/trunk/Lib/test/decimaltestdata/nextplus.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/nextplus.decTest python/trunk/Lib/test/decimaltestdata/nexttoward.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/nexttoward.decTest python/trunk/Lib/test/decimaltestdata/or.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/or.decTest python/trunk/Lib/test/decimaltestdata/powersqrt.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/powersqrt.decTest python/trunk/Lib/test/decimaltestdata/reduce.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/reduce.decTest python/trunk/Lib/test/decimaltestdata/rotate.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/rotate.decTest python/trunk/Lib/test/decimaltestdata/scaleb.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/scaleb.decTest python/trunk/Lib/test/decimaltestdata/shift.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/shift.decTest python/trunk/Lib/test/decimaltestdata/tointegralx.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/tointegralx.decTest python/trunk/Lib/test/decimaltestdata/xor.decTest - copied unchanged from r58142, python/branches/decimal-branch/Lib/test/decimaltestdata/xor.decTest Removed: python/trunk/Lib/test/decimaltestdata/decimal128.decTest python/trunk/Lib/test/decimaltestdata/decimal32.decTest python/trunk/Lib/test/decimaltestdata/decimal64.decTest python/trunk/Lib/test/decimaltestdata/normalize.decTest Modified: python/trunk/Lib/decimal.py python/trunk/Lib/test/decimaltestdata/abs.decTest python/trunk/Lib/test/decimaltestdata/add.decTest python/trunk/Lib/test/decimaltestdata/base.decTest python/trunk/Lib/test/decimaltestdata/clamp.decTest python/trunk/Lib/test/decimaltestdata/compare.decTest python/trunk/Lib/test/decimaltestdata/divide.decTest python/trunk/Lib/test/decimaltestdata/divideint.decTest python/trunk/Lib/test/decimaltestdata/inexact.decTest python/trunk/Lib/test/decimaltestdata/max.decTest python/trunk/Lib/test/decimaltestdata/min.decTest python/trunk/Lib/test/decimaltestdata/minus.decTest python/trunk/Lib/test/decimaltestdata/multiply.decTest python/trunk/Lib/test/decimaltestdata/plus.decTest python/trunk/Lib/test/decimaltestdata/power.decTest python/trunk/Lib/test/decimaltestdata/quantize.decTest python/trunk/Lib/test/decimaltestdata/randomBound32.decTest python/trunk/Lib/test/decimaltestdata/randoms.decTest python/trunk/Lib/test/decimaltestdata/remainder.decTest python/trunk/Lib/test/decimaltestdata/remainderNear.decTest python/trunk/Lib/test/decimaltestdata/rescale.decTest python/trunk/Lib/test/decimaltestdata/rounding.decTest python/trunk/Lib/test/decimaltestdata/samequantum.decTest python/trunk/Lib/test/decimaltestdata/squareroot.decTest python/trunk/Lib/test/decimaltestdata/subtract.decTest python/trunk/Lib/test/decimaltestdata/testall.decTest python/trunk/Lib/test/decimaltestdata/tointegral.decTest python/trunk/Lib/test/test_decimal.py Log: Merged the decimal-branch (revisions 54886 to 58140). Decimal is now fully updated to the latests Decimal Specification (v1.66) and the latests test cases (v2.56). Thanks to Mark Dickinson for all his help during this process. Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Thu Sep 13 20:13:15 2007 @@ -128,7 +128,7 @@ # Constants for use in setting up contexts 'ROUND_DOWN', 'ROUND_HALF_UP', 'ROUND_HALF_EVEN', 'ROUND_CEILING', - 'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN', + 'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN', 'ROUND_05UP', # Functions for manipulating contexts 'setcontext', 'getcontext', 'localcontext' @@ -144,6 +144,7 @@ ROUND_FLOOR = 'ROUND_FLOOR' ROUND_UP = 'ROUND_UP' ROUND_HALF_DOWN = 'ROUND_HALF_DOWN' +ROUND_05UP = 'ROUND_05UP' # Rounding decision (not part of the public API) NEVER_ROUND = 'NEVER_ROUND' # Round in division (non-divmod), sqrt ONLY @@ -204,13 +205,22 @@ x ** (non-integer) x ** (+-)INF An operand is invalid + + The result of the operation after these is a quiet positive NaN, + except when the cause is a signaling NaN, in which case the result is + also a quiet NaN, but with the original sign, and an optional + diagnostic information. """ def handle(self, context, *args): if args: if args[0] == 1: # sNaN, must drop 's' but keep diagnostics - return Decimal( (args[1]._sign, args[1]._int, 'n') ) + ans = Decimal((args[1]._sign, args[1]._int, 'n')) + return ans._fix_nan(context) + elif args[0] == 2: + return Decimal( (args[1], args[2], 'n') ) return NaN + class ConversionSyntax(InvalidOperation): """Trying to convert badly formed string. @@ -218,9 +228,8 @@ converted to a number and it does not conform to the numeric string syntax. The result is [0,qNaN]. """ - def handle(self, context, *args): - return (0, (0,), 'n') # Passed to something which uses a tuple. + return NaN class DivisionByZero(DecimalException, ZeroDivisionError): """Division by 0. @@ -340,7 +349,7 @@ def handle(self, context, sign, *args): if context.rounding in (ROUND_HALF_UP, ROUND_HALF_EVEN, - ROUND_HALF_DOWN, ROUND_UP): + ROUND_HALF_DOWN, ROUND_UP): return Infsign[sign] if sign == 0: if context.rounding == ROUND_CEILING: @@ -562,7 +571,7 @@ raise ValueError('Invalid sign') for digit in value[1]: if not isinstance(digit, (int,long)) or digit < 0: - raise ValueError("The second value in the tuple must be" + raise ValueError("The second value in the tuple must be " "composed of non negative integer elements.") self._sign = value[0] self._int = tuple(value[1]) @@ -596,10 +605,6 @@ if _isnan(value): sig, sign, diag = _isnan(value) self._is_special = True - if len(diag) > context.prec: # Diagnostic info too long - self._sign, self._int, self._exp = \ - context._raise_error(ConversionSyntax) - return self if sig == 1: self._exp = 'n' # qNaN else: # sig == 2 @@ -611,9 +616,8 @@ self._sign, self._int, self._exp = _string2exact(value) except ValueError: self._is_special = True - self._sign, self._int, self._exp = \ - context._raise_error(ConversionSyntax, - "Invalid literal for Decimal: %r" % value) + return context._raise_error(ConversionSyntax, + "Invalid literal for Decimal: %r" % value) return self raise TypeError("Cannot convert %r to Decimal" % value) @@ -622,7 +626,7 @@ """Returns whether the number is not actually one. 0 if a number - 1 if NaN + 1 if NaN (it could be a normal quiet NaN or a phantom one) 2 if sNaN """ if self._is_special: @@ -646,7 +650,7 @@ return 1 return 0 - def _check_nans(self, other = None, context=None): + def _check_nans(self, other=None, context=None): """Returns whether the number is not actually one. if self, other are sNaN, signal @@ -673,9 +677,9 @@ return context._raise_error(InvalidOperation, 'sNaN', 1, other) if self_is_nan: - return self + return self._fix_nan(context) - return other + return other._fix_nan(context) return 0 def __nonzero__(self): @@ -685,24 +689,31 @@ 1 if self != 0 """ if self._is_special: - return 1 + return True return sum(self._int) != 0 - def __cmp__(self, other, context=None): + def __cmp__(self, other): other = _convert_other(other) if other is NotImplemented: - return other + # Never return NotImplemented + return 1 if self._is_special or other._is_special: - ans = self._check_nans(other, context) - if ans: + # check for nans, without raising on a signaling nan + if self._isnan() or other._isnan(): return 1 # Comparison involving NaN's always reports self > other # INF = INF return cmp(self._isinfinity(), other._isinfinity()) - if not self and not other: - return 0 # If both 0, sign comparison isn't certain. + # check for zeros; note that cmp(0, -0) should return 0 + if not self: + if not other: + return 0 + else: + return -((-1)**other._sign) + if not other: + return (-1)**self._sign # If different signs, neg one is less if other._sign < self._sign: @@ -712,35 +723,15 @@ self_adjusted = self.adjusted() other_adjusted = other.adjusted() - if self_adjusted == other_adjusted and \ - self._int + (0,)*(self._exp - other._exp) == \ - other._int + (0,)*(other._exp - self._exp): - return 0 # equal, except in precision. ([0]*(-x) = []) - elif self_adjusted > other_adjusted and self._int[0] != 0: + if self_adjusted == other_adjusted: + self_padded = self._int + (0,)*(self._exp - other._exp) + other_padded = other._int + (0,)*(other._exp - self._exp) + return cmp(self_padded, other_padded) * (-1)**self._sign + elif self_adjusted > other_adjusted: return (-1)**self._sign - elif self_adjusted < other_adjusted and other._int[0] != 0: + else: # self_adjusted < other_adjusted return -((-1)**self._sign) - # Need to round, so make sure we have a valid context - if context is None: - context = getcontext() - - context = context._shallow_copy() - rounding = context._set_rounding(ROUND_UP) # round away from 0 - - flags = context._ignore_all_flags() - res = self.__sub__(other, context=context) - - context._regard_flags(*flags) - - context.rounding = rounding - - if not res: - return 0 - elif res._sign: - return -1 - return 1 - def __eq__(self, other): if not isinstance(other, (Decimal, int, long)): return NotImplemented @@ -760,9 +751,7 @@ NaN => one is NaN Like __cmp__, but returns Decimal instances. """ - other = _convert_other(other) - if other is NotImplemented: - return other + other = _convert_other(other, raiseit=True) # Compare(NaN, NaN) = NaN if (self._is_special or other and other._is_special): @@ -770,7 +759,7 @@ if ans: return ans - return Decimal(self.__cmp__(other, context)) + return Decimal(self.__cmp__(other)) def __hash__(self): """x.__hash__() <==> hash(x)""" @@ -799,7 +788,7 @@ # Invariant: eval(repr(d)) == d return 'Decimal("%s")' % str(self) - def __str__(self, eng = 0, context=None): + def __str__(self, eng=False, context=None): """Return string representation of the number in scientific notation. Captures all of the information in the underlying representation. @@ -889,7 +878,7 @@ Same rules for when in exponential and when as a value as in __str__. """ - return self.__str__(eng=1, context=context) + return self.__str__(eng=True, context=context) def __neg__(self, context=None): """Returns a copy with the sign switched. @@ -903,17 +892,15 @@ if not self: # -Decimal('0') is Decimal('0'), not Decimal('-0') - sign = 0 - elif self._sign: - sign = 0 + ans = self.copy_sign(Dec_0) else: - sign = 1 + ans = self.copy_negate() if context is None: context = getcontext() if context._rounding_decision == ALWAYS_ROUND: - return Decimal((sign, self._int, self._exp))._fix(context) - return Decimal( (sign, self._int, self._exp)) + return ans._fix(context) + return ans def __pos__(self, context=None): """Returns a copy, unless it is a sNaN. @@ -925,19 +912,16 @@ if ans: return ans - sign = self._sign if not self: # + (-0) = 0 - sign = 0 + ans = self.copy_sign(Dec_0) + else: + ans = Decimal(self) if context is None: context = getcontext() - if context._rounding_decision == ALWAYS_ROUND: - ans = self._fix(context) - else: - ans = Decimal(self) - ans._sign = sign + return ans._fix(context) return ans def __abs__(self, round=1, context=None): @@ -1000,16 +984,19 @@ sign = min(self._sign, other._sign) if negativezero: sign = 1 - return Decimal( (sign, (0,), exp)) + ans = Decimal( (sign, (0,), exp)) + if shouldround: + ans = ans._fix(context) + return ans if not self: exp = max(exp, other._exp - context.prec-1) - ans = other._rescale(exp, watchexp=0, context=context) + ans = other._rescale(exp, context.rounding) if shouldround: ans = ans._fix(context) return ans if not other: exp = max(exp, self._exp - context.prec-1) - ans = self._rescale(exp, watchexp=0, context=context) + ans = self._rescale(exp, context.rounding) if shouldround: ans = ans._fix(context) return ans @@ -1022,10 +1009,10 @@ if op1.sign != op2.sign: # Equal and opposite if op1.int == op2.int: - if exp < context.Etiny(): - exp = context.Etiny() - context._raise_error(Clamped) - return Decimal((negativezero, (0,), exp)) + ans = Decimal((negativezero, (0,), exp)) + if shouldround: + ans = ans._fix(context) + return ans if op1.int < op2.int: op1, op2 = op2, op1 # OK, now abs(op1) > abs(op2) @@ -1056,7 +1043,7 @@ __radd__ = __add__ def __sub__(self, other, context=None): - """Return self + (-other)""" + """Return self - other""" other = _convert_other(other) if other is NotImplemented: return other @@ -1066,41 +1053,28 @@ if ans: return ans - # -Decimal(0) = Decimal(0), which we don't want since - # (-0 - 0 = -0 + (-0) = -0, but -0 + 0 = 0.) - # so we change the sign directly to a copy - tmp = Decimal(other) - tmp._sign = 1-tmp._sign - - return self.__add__(tmp, context=context) + # self - other is computed as self + other.copy_negate() + return self.__add__(other.copy_negate(), context=context) def __rsub__(self, other, context=None): - """Return other + (-self)""" + """Return other - self""" other = _convert_other(other) if other is NotImplemented: return other - tmp = Decimal(self) - tmp._sign = 1 - tmp._sign - return other.__add__(tmp, context=context) + return other.__sub__(self, context=context) - def _increment(self, round=1, context=None): + def _increment(self): """Special case of add, adding 1eExponent Since it is common, (rounding, for example) this adds (sign)*one E self._exp to the number more efficiently than add. + Assumes that self is nonspecial. + For example: Decimal('5.624e10')._increment() == Decimal('5.625e10') """ - if self._is_special: - ans = self._check_nans(context=context) - if ans: - return ans - - # Must be infinite, and incrementing makes no difference - return Decimal(self) - L = list(self._int) L[-1] += 1 spot = len(L)-1 @@ -1111,13 +1085,7 @@ break L[spot-1] += 1 spot -= 1 - ans = Decimal((self._sign, L, self._exp)) - - if context is None: - context = getcontext() - if round and context._rounding_decision == ALWAYS_ROUND: - ans = ans._fix(context) - return ans + return Decimal((self._sign, L, self._exp)) def __mul__(self, other, context=None): """Return self * other. @@ -1207,6 +1175,8 @@ if context is None: context = getcontext() + shouldround = context._rounding_decision == ALWAYS_ROUND + sign = self._sign ^ other._sign if self._is_special or other._is_special: @@ -1218,10 +1188,11 @@ if self._isinfinity() and other._isinfinity(): if divmod: - return (context._raise_error(InvalidOperation, + reloco = (context._raise_error(InvalidOperation, '(+-)INF // (+-)INF'), context._raise_error(InvalidOperation, '(+-)INF % (+-)INF')) + return reloco return context._raise_error(InvalidOperation, '(+-)INF/(+-)INF') if self._isinfinity(): @@ -1237,7 +1208,10 @@ if other._isinfinity(): if divmod: - return (Decimal((sign, (0,), 0)), Decimal(self)) + otherside = Decimal(self) + if shouldround and (divmod == 1 or divmod == 3): + otherside = otherside._fix(context) + return (Decimal((sign, (0,), 0)), otherside) context._raise_error(Clamped, 'Division by infinity') return Decimal((sign, (0,), context.Etiny())) @@ -1249,17 +1223,14 @@ if not self: if divmod: - otherside = Decimal(self) - otherside._exp = min(self._exp, other._exp) + otherside = Decimal((self._sign, (0,), min(self._exp, other._exp))) + if shouldround and (divmod == 1 or divmod == 3): + otherside = otherside._fix(context) return (Decimal((sign, (0,), 0)), otherside) exp = self._exp - other._exp - if exp < context.Etiny(): - exp = context.Etiny() - context._raise_error(Clamped, '0e-x / y') - if exp > context.Emax: - exp = context.Emax - context._raise_error(Clamped, '0e+x / y') - return Decimal( (sign, (0,), exp) ) + ans = Decimal((sign, (0,), exp)) + ans = ans._fix(context) + return ans if not other: if divmod: @@ -1268,7 +1239,6 @@ return context._raise_error(DivisionByZero, 'x / 0', sign) # OK, so neither = 0, INF or NaN - shouldround = context._rounding_decision == ALWAYS_ROUND # If we're dividing into ints, and self < other, stop. # self.__abs__(0) does not round. @@ -1276,7 +1246,7 @@ if divmod == 1 or divmod == 3: exp = min(self._exp, other._exp) - ans2 = self._rescale(exp, context=context, watchexp=0) + ans2 = self._rescale(exp, context.rounding) if shouldround: ans2 = ans2._fix(context) return (Decimal( (sign, (0,), 0) ), @@ -1302,12 +1272,9 @@ if res.int >= prec_limit and shouldround: return context._raise_error(DivisionImpossible) otherside = Decimal(op1) - frozen = context._ignore_all_flags() - exp = min(self._exp, other._exp) - otherside = otherside._rescale(exp, context=context, watchexp=0) - context._regard_flags(*frozen) - if shouldround: + otherside = otherside._rescale(exp, context.rounding) + if shouldround and (divmod == 1 or divmod == 3): otherside = otherside._fix(context) return (Decimal(res), otherside) @@ -1331,21 +1298,6 @@ op1.int *= 10 op1.exp -= 1 - if res.exp == 0 and divmod and op2.int > op1.int: - # Solves an error in precision. Same as a previous block. - - if res.int >= prec_limit and shouldround: - return context._raise_error(DivisionImpossible) - otherside = Decimal(op1) - frozen = context._ignore_all_flags() - - exp = min(self._exp, other._exp) - otherside = otherside._rescale(exp, context=context) - - context._regard_flags(*frozen) - - return (Decimal(res), otherside) - ans = Decimal(res) if shouldround: ans = ans._fix(context) @@ -1401,81 +1353,76 @@ """ Remainder nearest to 0- abs(remainder-near) <= other/2 """ - other = _convert_other(other) - if other is NotImplemented: - return other - - if self._is_special or other._is_special: - ans = self._check_nans(other, context) - if ans: - return ans - if self and not other: - return context._raise_error(InvalidOperation, 'x % 0') - if context is None: context = getcontext() - # If DivisionImpossible causes an error, do not leave Rounded/Inexact - # ignored in the calling function. - context = context._shallow_copy() - flags = context._ignore_flags(Rounded, Inexact) - # Keep DivisionImpossible flags - (side, r) = self.__divmod__(other, context=context) - - if r._isnan(): - context._regard_flags(*flags) - return r - - context = context._shallow_copy() - rounding = context._set_rounding_decision(NEVER_ROUND) - if other._sign: - comparison = other.__div__(Decimal(-2), context=context) - else: - comparison = other.__div__(Decimal(2), context=context) + other = _convert_other(other, raiseit=True) - context._set_rounding_decision(rounding) - context._regard_flags(*flags) + ans = self._check_nans(other, context) + if ans: + return ans - s1, s2 = r._sign, comparison._sign - r._sign, comparison._sign = 0, 0 + # self == +/-infinity -> InvalidOperation + if self._isinfinity(): + return context._raise_error(InvalidOperation, + 'remainder_near(infinity, x)') - if r < comparison: - r._sign, comparison._sign = s1, s2 - # Get flags now - self.__divmod__(other, context=context) - return r._fix(context) - r._sign, comparison._sign = s1, s2 + # other == 0 -> either InvalidOperation or DivisionUndefined + if not other: + if self: + return context._raise_error(InvalidOperation, + 'remainder_near(x, 0)') + else: + return context._raise_error(DivisionUndefined, + 'remainder_near(0, 0)') - rounding = context._set_rounding_decision(NEVER_ROUND) + # other = +/-infinity -> remainder = self + if other._isinfinity(): + ans = Decimal(self) + return ans._fix(context) - (side, r) = self.__divmod__(other, context=context) - context._set_rounding_decision(rounding) - if r._isnan(): - return r + # self = 0 -> remainder = self, with ideal exponent + ideal_exponent = min(self._exp, other._exp) + if not self: + ans = Decimal((self._sign, (0,), ideal_exponent)) + return ans._fix(context) - decrease = not side._iseven() - rounding = context._set_rounding_decision(NEVER_ROUND) - side = side.__abs__(context=context) - context._set_rounding_decision(rounding) + # catch most cases of large or small quotient + expdiff = self.adjusted() - other.adjusted() + if expdiff >= context.prec + 1: + # expdiff >= prec+1 => abs(self/other) > 10**prec + return context._raise_error(DivisionImpossible)[0] + if expdiff <= -2: + # expdiff <= -2 => abs(self/other) < 0.1 + ans = self._rescale(ideal_exponent, context.rounding) + return ans._fix(context) - s1, s2 = r._sign, comparison._sign - r._sign, comparison._sign = 0, 0 - if r > comparison or decrease and r == comparison: - r._sign, comparison._sign = s1, s2 - context.prec += 1 - numbsquant = len(side.__add__(Decimal(1), context=context)._int) - if numbsquant >= context.prec: - context.prec -= 1 - return context._raise_error(DivisionImpossible)[1] - context.prec -= 1 - if self._sign == other._sign: - r = r.__sub__(other, context=context) - else: - r = r.__add__(other, context=context) + # adjust both arguments to have the same exponent, then divide + op1 = _WorkRep(self) + op2 = _WorkRep(other) + if op1.exp >= op2.exp: + op1.int *= 10**(op1.exp - op2.exp) else: - r._sign, comparison._sign = s1, s2 + op2.int *= 10**(op2.exp - op1.exp) + q, r = divmod(op1.int, op2.int) + # remainder is r*10**ideal_exponent; other is +/-op2.int * + # 10**ideal_exponent. Apply correction to ensure that + # abs(remainder) <= abs(other)/2 + if 2*r + (q&1) > op2.int: + r -= op2.int + q += 1 + + if q >= 10**context.prec: + return context._raise_error(DivisionImpossible)[0] + + # result has same sign as self unless r is negative + sign = self._sign + if r < 0: + sign = 1-sign + r = -r - return r._fix(context) + ans = Decimal((sign, map(int, str(r)), ideal_exponent)) + return ans._fix(context) def __floordiv__(self, other, context=None): """self // other""" @@ -1500,14 +1447,11 @@ return context._raise_error(InvalidContext) elif self._isinfinity(): raise OverflowError("Cannot convert infinity to long") + s = (-1)**self._sign if self._exp >= 0: - s = ''.join(map(str, self._int)) + '0'*self._exp + return s*int(''.join(map(str, self._int)))*10**self._exp else: - s = ''.join(map(str, self._int))[:self._exp] - if s == '': - s = '0' - sign = '-'*self._sign - return int(sign + s) + return s*int(''.join(map(str, self._int))[:self._exp] or '0') def __long__(self): """Converts to a long. @@ -1516,6 +1460,21 @@ """ return long(self.__int__()) + def _fix_nan(self, context): + """Decapitate the payload of a NaN to fit the context""" + payload = self._int + + # maximum length of payload is precision if _clamp=0, + # precision-1 if _clamp=1. + max_payload_len = context.prec - context._clamp + if len(payload) > max_payload_len: + pos = len(payload)-max_payload_len + while pos < len(payload) and payload[pos] == 0: + pos += 1 + payload = payload[pos:] + return Decimal((self._sign, payload, self._exp)) + return self + def _fix(self, context): """Round if it is necessary to keep self within prec precision. @@ -1525,338 +1484,693 @@ self - Decimal instance context - context used. """ - if self._is_special: - return self + if context is None: context = getcontext() - prec = context.prec - ans = self._fixexponents(context) - if len(ans._int) > prec: - ans = ans._round(prec, context=context) - ans = ans._fixexponents(context) - return ans - def _fixexponents(self, context): - """Fix the exponents and return a copy with the exponent in bounds. - Only call if known to not be a special value. - """ - folddown = context._clamp - Emin = context.Emin - ans = self - ans_adjusted = ans.adjusted() - if ans_adjusted < Emin: - Etiny = context.Etiny() - if ans._exp < Etiny: - if not ans: - ans = Decimal(self) - ans._exp = Etiny - context._raise_error(Clamped) - return ans - ans = ans._rescale(Etiny, context=context) - # It isn't zero, and exp < Emin => subnormal - context._raise_error(Subnormal) - if context.flags[Inexact]: - context._raise_error(Underflow) + if self._is_special: + if self._isnan(): + # decapitate payload if necessary + return self._fix_nan(context) else: - if ans: - # Only raise subnormal if non-zero. - context._raise_error(Subnormal) - else: - Etop = context.Etop() - if folddown and ans._exp > Etop: + # self is +/-Infinity; return unaltered + return self + + # if self is zero then exponent should be between Etiny and + # Emax if _clamp==0, and between Etiny and Etop if _clamp==1. + Etiny = context.Etiny() + Etop = context.Etop() + if not self: + exp_max = [context.Emax, Etop][context._clamp] + new_exp = min(max(self._exp, Etiny), exp_max) + if new_exp != self._exp: context._raise_error(Clamped) - ans = ans._rescale(Etop, context=context) + return Decimal((self._sign, (0,), new_exp)) else: - Emax = context.Emax - if ans_adjusted > Emax: - if not ans: - ans = Decimal(self) - ans._exp = Emax - context._raise_error(Clamped) - return ans - context._raise_error(Inexact) - context._raise_error(Rounded) - c = context._raise_error(Overflow, 'above Emax', ans._sign) - return c - return ans - - def _round(self, prec=None, rounding=None, context=None): - """Returns a rounded version of self. - - You can specify the precision or rounding method. Otherwise, the - context determines it. - """ - - if self._is_special: - ans = self._check_nans(context=context) - if ans: - return ans - - if self._isinfinity(): - return Decimal(self) - - if context is None: - context = getcontext() - - if rounding is None: - rounding = context.rounding - if prec is None: - prec = context.prec + return self - if not self: - if prec <= 0: - dig = (0,) - exp = len(self._int) - prec + self._exp - else: - dig = (0,) * prec - exp = len(self._int) + self._exp - prec - ans = Decimal((self._sign, dig, exp)) + # exp_min is the smallest allowable exponent of the result, + # equal to max(self.adjusted()-context.prec+1, Etiny) + exp_min = len(self._int) + self._exp - context.prec + if exp_min > Etop: + # overflow: exp_min > Etop iff self.adjusted() > Emax + context._raise_error(Inexact) context._raise_error(Rounded) - return ans - - if prec == 0: - temp = Decimal(self) - temp._int = (0,)+temp._int - prec = 1 - elif prec < 0: - exp = self._exp + len(self._int) - prec - 1 - temp = Decimal( (self._sign, (0, 1), exp)) - prec = 1 - else: - temp = Decimal(self) - - numdigits = len(temp._int) - if prec == numdigits: - return temp - - # See if we need to extend precision - expdiff = prec - numdigits - if expdiff > 0: - tmp = list(temp._int) - tmp.extend([0] * expdiff) - ans = Decimal( (temp._sign, tmp, temp._exp - expdiff)) - return ans + return context._raise_error(Overflow, 'above Emax', self._sign) + self_is_subnormal = exp_min < Etiny + if self_is_subnormal: + context._raise_error(Subnormal) + exp_min = Etiny - # OK, but maybe all the lost digits are 0. - lostdigits = self._int[expdiff:] - if lostdigits == (0,) * len(lostdigits): - ans = Decimal( (temp._sign, temp._int[:prec], temp._exp - expdiff)) - # Rounded, but not Inexact + # round if self has too many digits + if self._exp < exp_min: context._raise_error(Rounded) + ans = self._rescale(exp_min, context.rounding) + if ans != self: + context._raise_error(Inexact) + if self_is_subnormal: + context._raise_error(Underflow) + if not ans: + # raise Clamped on underflow to 0 + context._raise_error(Clamped) + elif len(ans._int) == context.prec+1: + # we get here only if rescaling rounds the + # cofficient up to exactly 10**context.prec + if ans._exp < Etop: + ans = Decimal((ans._sign, ans._int[:-1], ans._exp+1)) + else: + # Inexact and Rounded have already been raised + ans = context._raise_error(Overflow, 'above Emax', + self._sign) return ans - # Okay, let's round and lose data - - this_function = getattr(temp, self._pick_rounding_function[rounding]) - # Now we've got the rounding function - - if prec != context.prec: - context = context._shallow_copy() - context.prec = prec - ans = this_function(prec, expdiff, context) - context._raise_error(Rounded) - context._raise_error(Inexact, 'Changed in rounding') + # fold down if _clamp == 1 and self has too few digits + if context._clamp == 1 and self._exp > Etop: + context._raise_error(Clamped) + self_padded = self._int + (0,)*(self._exp - Etop) + return Decimal((self._sign, self_padded, Etop)) - return ans + # here self was representable to begin with; return unchanged + return self _pick_rounding_function = {} - def _round_down(self, prec, expdiff, context): - """Also known as round-towards-0, truncate.""" - return Decimal( (self._sign, self._int[:prec], self._exp - expdiff) ) + # for each of the rounding functions below: + # self is a finite, nonzero Decimal + # prec is an integer satisfying 0 <= prec < len(self._int) + # the rounded result will have exponent self._exp + len(self._int) - prec; - def _round_half_up(self, prec, expdiff, context, tmp = None): - """Rounds 5 up (away from 0)""" + def _round_down(self, prec): + """Also known as round-towards-0, truncate.""" + newexp = self._exp + len(self._int) - prec + return Decimal((self._sign, self._int[:prec] or (0,), newexp)) - if tmp is None: - tmp = Decimal( (self._sign,self._int[:prec], self._exp - expdiff)) - if self._int[prec] >= 5: - tmp = tmp._increment(round=0, context=context) - if len(tmp._int) > prec: - return Decimal( (tmp._sign, tmp._int[:-1], tmp._exp + 1)) + def _round_up(self, prec): + """Rounds away from 0.""" + newexp = self._exp + len(self._int) - prec + tmp = Decimal((self._sign, self._int[:prec] or (0,), newexp)) + for digit in self._int[prec:]: + if digit != 0: + return tmp._increment() return tmp - def _round_half_even(self, prec, expdiff, context): - """Round 5 to even, rest to nearest.""" - - tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff)) - half = (self._int[prec] == 5) - if half: - for digit in self._int[prec+1:]: - if digit != 0: - half = 0 - break - if half: - if self._int[prec-1] & 1 == 0: - return tmp - return self._round_half_up(prec, expdiff, context, tmp) + def _round_half_up(self, prec): + """Rounds 5 up (away from 0)""" + if self._int[prec] >= 5: + return self._round_up(prec) + else: + return self._round_down(prec) - def _round_half_down(self, prec, expdiff, context): + def _round_half_down(self, prec): """Round 5 down""" - - tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff)) - half = (self._int[prec] == 5) - if half: + if self._int[prec] == 5: for digit in self._int[prec+1:]: if digit != 0: - half = 0 break - if half: - return tmp - return self._round_half_up(prec, expdiff, context, tmp) + else: + return self._round_down(prec) + return self._round_half_up(prec) - def _round_up(self, prec, expdiff, context): - """Rounds away from 0.""" - tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff) ) - for digit in self._int[prec:]: - if digit != 0: - tmp = tmp._increment(round=1, context=context) - if len(tmp._int) > prec: - return Decimal( (tmp._sign, tmp._int[:-1], tmp._exp + 1)) - else: - return tmp - return tmp + def _round_half_even(self, prec): + """Round 5 to even, rest to nearest.""" + if prec and self._int[prec-1] & 1: + return self._round_half_up(prec) + else: + return self._round_half_down(prec) - def _round_ceiling(self, prec, expdiff, context): + def _round_ceiling(self, prec): """Rounds up (not away from 0 if negative.)""" if self._sign: - return self._round_down(prec, expdiff, context) + return self._round_down(prec) else: - return self._round_up(prec, expdiff, context) + return self._round_up(prec) - def _round_floor(self, prec, expdiff, context): + def _round_floor(self, prec): """Rounds down (not towards 0 if negative)""" if not self._sign: - return self._round_down(prec, expdiff, context) + return self._round_down(prec) + else: + return self._round_up(prec) + + def _round_05up(self, prec): + """Round down unless digit prec-1 is 0 or 5.""" + if prec == 0 or self._int[prec-1] in (0, 5): + return self._round_up(prec) else: - return self._round_up(prec, expdiff, context) + return self._round_down(prec) - def __pow__(self, n, modulo = None, context=None): - """Return self ** n (mod modulo) + def fma(self, other, third, context=None): + """Fused multiply-add. - If modulo is None (default), don't take it mod modulo. + Returns self*other+third with no rounding of the intermediate + product self*other. + + self and other are multiplied together, with no rounding of + the result. The third operand is then added to the result, + and a single final rounding is performed. """ - n = _convert_other(n) - if n is NotImplemented: - return n + + other = _convert_other(other, raiseit=True) + third = _convert_other(third, raiseit=True) if context is None: context = getcontext() - if self._is_special or n._is_special or n.adjusted() > 8: - # Because the spot << doesn't work with really big exponents - if n._isinfinity() or n.adjusted() > 8: - return context._raise_error(InvalidOperation, 'x ** INF') + # do self*other in fresh context with no traps and no rounding + mul_context = Context(traps=[], flags=[], + _rounding_decision=NEVER_ROUND) + product = self.__mul__(other, mul_context) + + if mul_context.flags[InvalidOperation]: + # reraise in current context + return context._raise_error(InvalidOperation, + 'invalid multiplication in fma', + 1, product) - ans = self._check_nans(n, context) - if ans: - return ans + ans = product.__add__(third, context) + return ans - if not n._isinteger(): - return context._raise_error(InvalidOperation, 'x ** (non-integer)') + def _power_modulo(self, other, modulo, context=None): + """Three argument version of __pow__""" - if not self and not n: - return context._raise_error(InvalidOperation, '0 ** 0') + # if can't convert other and modulo to Decimal, raise + # TypeError; there's no point returning NotImplemented (no + # equivalent of __rpow__ for three argument pow) + other = _convert_other(other, raiseit=True) + modulo = _convert_other(modulo, raiseit=True) - if not n: - return Decimal(1) + if context is None: + context = getcontext() - if self == Decimal(1): - return Decimal(1) + # deal with NaNs: if there are any sNaNs then first one wins, + # (i.e. behaviour for NaNs is identical to that of fma) + self_is_nan = self._isnan() + other_is_nan = other._isnan() + modulo_is_nan = modulo._isnan() + if self_is_nan or other_is_nan or modulo_is_nan: + if self_is_nan == 2: + return context._raise_error(InvalidOperation, 'sNaN', + 1, self) + if other_is_nan == 2: + return context._raise_error(InvalidOperation, 'sNaN', + 1, other) + if modulo_is_nan == 2: + return context._raise_error(InvalidOperation, 'sNaN', + 1, modulo) + if self_is_nan: + return self + if other_is_nan: + return other + return modulo + + # check inputs: we apply same restrictions as Python's pow() + if not (self._isinteger() and + other._isinteger() and + modulo._isinteger()): + return context._raise_error(InvalidOperation, + 'pow() 3rd argument not allowed ' + 'unless all arguments are integers') + if other < 0: + return context._raise_error(InvalidOperation, + 'pow() 2nd argument cannot be ' + 'negative when 3rd argument specified') + if not modulo: + return context._raise_error(InvalidOperation, + 'pow() 3rd argument cannot be 0') + + # additional restriction for decimal: the modulus must be less + # than 10**prec in absolute value + if modulo.adjusted() >= context.prec: + return context._raise_error(InvalidOperation, + 'insufficient precision: pow() 3rd ' + 'argument must not have more than ' + 'precision digits') + + # define 0**0 == NaN, for consistency with two-argument pow + # (even though it hurts!) + if not other and not self: + return context._raise_error(InvalidOperation, + 'at least one of pow() 1st argument ' + 'and 2nd argument must be nonzero ;' + '0**0 is not defined') - sign = self._sign and not n._iseven() - n = int(n) + # compute sign of result + if other._iseven(): + sign = 0 + else: + sign = self._sign - if self._isinfinity(): - if modulo: - return context._raise_error(InvalidOperation, 'INF % x') - if n > 0: - return Infsign[sign] - return Decimal( (sign, (0,), 0) ) + # convert modulo to a Python integer, and self and other to + # Decimal integers (i.e. force their exponents to be >= 0) + modulo = abs(int(modulo)) + base = _WorkRep(self.to_integral_value()) + exponent = _WorkRep(other.to_integral_value()) + + # compute result using integer pow() + base = (base.int % modulo * pow(10, base.exp, modulo)) % modulo + for i in xrange(exponent.exp): + base = pow(base, 10, modulo) + base = pow(base, exponent.int, modulo) + + return Decimal((sign, map(int, str(base)), 0)) + + def _power_exact(self, other, p): + """Attempt to compute self**other exactly. + + Given Decimals self and other and an integer p, attempt to + compute an exact result for the power self**other, with p + digits of precision. Return None if self**other is not + exactly representable in p digits. + + Assumes that elimination of special cases has already been + performed: self and other must both be nonspecial; self must + be positive and not numerically equal to 1; other must be + nonzero. For efficiency, other._exp should not be too large, + so that 10**abs(other._exp) is a feasible calculation.""" + + # In the comments below, we write x for the value of self and + # y for the value of other. Write x = xc*10**xe and y = + # yc*10**ye. + + # The main purpose of this method is to identify the *failure* + # of x**y to be exactly representable with as little effort as + # possible. So we look for cheap and easy tests that + # eliminate the possibility of x**y being exact. Only if all + # these tests are passed do we go on to actually compute x**y. + + # Here's the main idea. First normalize both x and y. We + # express y as a rational m/n, with m and n relatively prime + # and n>0. Then for x**y to be exactly representable (at + # *any* precision), xc must be the nth power of a positive + # integer and xe must be divisible by n. If m is negative + # then additionally xc must be a power of either 2 or 5, hence + # a power of 2**n or 5**n. + # + # There's a limit to how small |y| can be: if y=m/n as above + # then: + # + # (1) if xc != 1 then for the result to be representable we + # need xc**(1/n) >= 2, and hence also xc**|y| >= 2. So + # if |y| <= 1/nbits(xc) then xc < 2**nbits(xc) <= + # 2**(1/|y|), hence xc**|y| < 2 and the result is not + # representable. + # + # (2) if xe != 0, |xe|*(1/n) >= 1, so |xe|*|y| >= 1. Hence if + # |y| < 1/|xe| then the result is not representable. + # + # Note that since x is not equal to 1, at least one of (1) and + # (2) must apply. Now |y| < 1/nbits(xc) iff |yc|*nbits(xc) < + # 10**-ye iff len(str(|yc|*nbits(xc)) <= -ye. + # + # There's also a limit to how large y can be, at least if it's + # positive: the normalized result will have coefficient xc**y, + # so if it's representable then xc**y < 10**p, and y < + # p/log10(xc). Hence if y*log10(xc) >= p then the result is + # not exactly representable. + + # if len(str(abs(yc*xe)) <= -ye then abs(yc*xe) < 10**-ye, + # so |y| < 1/xe and the result is not representable. + # Similarly, len(str(abs(yc)*xc_bits)) <= -ye implies |y| + # < 1/nbits(xc). + + x = _WorkRep(self) + xc, xe = x.int, x.exp + while xc % 10 == 0: + xc //= 10 + xe += 1 + + y = _WorkRep(other) + yc, ye = y.int, y.exp + while yc % 10 == 0: + yc //= 10 + ye += 1 + + # case where xc == 1: result is 10**(xe*y), with xe*y + # required to be an integer + if xc == 1: + if ye >= 0: + exponent = xe*yc*10**ye + else: + exponent, remainder = divmod(xe*yc, 10**-ye) + if remainder: + return None + if y.sign == 1: + exponent = -exponent + # if other is a nonnegative integer, use ideal exponent + if other._isinteger() and other._sign == 0: + ideal_exponent = self._exp*int(other) + zeros = min(exponent-ideal_exponent, p-1) + else: + zeros = 0 + return Decimal((0, (1,) + (0,)*zeros, exponent-zeros)) - # With ludicrously large exponent, just raise an overflow - # and return inf. - if not modulo and n > 0 and \ - (self._exp + len(self._int) - 1) * n > context.Emax and self: + # case where y is negative: xc must be either a power + # of 2 or a power of 5. + if y.sign == 1: + last_digit = xc % 10 + if last_digit in (2,4,6,8): + # quick test for power of 2 + if xc & -xc != xc: + return None + # now xc is a power of 2; e is its exponent + e = _nbits(xc)-1 + # find e*y and xe*y; both must be integers + if ye >= 0: + y_as_int = yc*10**ye + e = e*y_as_int + xe = xe*y_as_int + else: + ten_pow = 10**-ye + e, remainder = divmod(e*yc, ten_pow) + if remainder: + return None + xe, remainder = divmod(xe*yc, ten_pow) + if remainder: + return None + + if e*65 >= p*93: # 93/65 > log(10)/log(5) + return None + xc = 5**e + + elif last_digit == 5: + # e >= log_5(xc) if xc is a power of 5; we have + # equality all the way up to xc=5**2658 + e = _nbits(xc)*28//65 + xc, remainder = divmod(5**e, xc) + if remainder: + return None + while xc % 5 == 0: + xc //= 5 + e -= 1 + if ye >= 0: + y_as_integer = yc*10**ye + e = e*y_as_integer + xe = xe*y_as_integer + else: + ten_pow = 10**-ye + e, remainder = divmod(e*yc, ten_pow) + if remainder: + return None + xe, remainder = divmod(xe*yc, ten_pow) + if remainder: + return None + if e*3 >= p*10: # 10/3 > log(10)/log(2) + return None + xc = 2**e + else: + return None - tmp = Decimal('inf') - tmp._sign = sign - context._raise_error(Rounded) - context._raise_error(Inexact) - context._raise_error(Overflow, 'Big power', sign) - return tmp + if xc >= 10**p: + return None + xe = -e-xe + return Decimal((0, map(int, str(xc)), xe)) + + # now y is positive; find m and n such that y = m/n + if ye >= 0: + m, n = yc*10**ye, 1 + else: + if xe != 0 and len(str(abs(yc*xe))) <= -ye: + return None + xc_bits = _nbits(xc) + if xc != 1 and len(str(abs(yc)*xc_bits)) <= -ye: + return None + m, n = yc, 10**(-ye) + while m % 2 == n % 2 == 0: + m //= 2 + n //= 2 + while m % 5 == n % 5 == 0: + m //= 5 + n //= 5 + + # compute nth root of xc*10**xe + if n > 1: + # if 1 < xc < 2**n then xc isn't an nth power + if xc != 1 and xc_bits <= n: + return None + + xe, rem = divmod(xe, n) + if rem != 0: + return None + + # compute nth root of xc using Newton's method + a = 1L << -(-_nbits(xc)//n) # initial estimate + while True: + q, r = divmod(xc, a**(n-1)) + if a <= q: + break + else: + a = (a*(n-1) + q)//n + if not (a == q and r == 0): + return None + xc = a + + # now xc*10**xe is the nth root of the original xc*10**xe + # compute mth power of xc*10**xe + + # if m > p*100//_log10_lb(xc) then m > p/log10(xc), hence xc**m > + # 10**p and the result is not representable. + if xc > 1 and m > p*100//_log10_lb(xc): + return None + xc = xc**m + xe *= m + if xc > 10**p: + return None + + # by this point the result *is* exactly representable + # adjust the exponent to get as close as possible to the ideal + # exponent, if necessary + str_xc = str(xc) + if other._isinteger() and other._sign == 0: + ideal_exponent = self._exp*int(other) + zeros = min(xe-ideal_exponent, p-len(str_xc)) + else: + zeros = 0 + return Decimal((0, map(int, str_xc)+[0,]*zeros, xe-zeros)) - elength = len(str(abs(n))) - firstprec = context.prec + def __pow__(self, other, modulo=None, context=None): + """Return self ** other [ % modulo]. - if not modulo and firstprec + elength + 1 > DefaultContext.Emax: - return context._raise_error(Overflow, 'Too much precision.', sign) + With two arguments, compute self**other. - mul = Decimal(self) - val = Decimal(1) - context = context._shallow_copy() - context.prec = firstprec + elength + 1 - if n < 0: - # n is a long now, not Decimal instance - n = -n - mul = Decimal(1).__div__(mul, context=context) - - spot = 1 - while spot <= n: - spot <<= 1 - - spot >>= 1 - # spot is the highest power of 2 less than n - while spot: - val = val.__mul__(val, context=context) - if val._isinfinity(): - val = Infsign[sign] - break - if spot & n: - val = val.__mul__(mul, context=context) - if modulo is not None: - val = val.__mod__(modulo, context=context) - spot >>= 1 - context.prec = firstprec + With three arguments, compute (self**other) % modulo. For the + three argument form, the following restrictions on the + arguments hold: - if context._rounding_decision == ALWAYS_ROUND: - return val._fix(context) - return val + - all three arguments must be integral + - other must be nonnegative + - either self or other (or both) must be nonzero + - modulo must be nonzero and must have at most p digits, + where p is the context precision. + + If any of these restrictions is violated the InvalidOperation + flag is raised. + + The result of pow(self, other, modulo) is identical to the + result that would be obtained by computing (self**other) % + modulo with unbounded precision, but is computed more + efficiently. It is always exact. + """ + + if modulo is not None: + return self._power_modulo(other, modulo, context) - def __rpow__(self, other, context=None): - """Swaps self/other and returns __pow__.""" other = _convert_other(other) if other is NotImplemented: return other - return other.__pow__(self, context=context) - def normalize(self, context=None): - """Normalize- strip trailing 0s, change anything equal to 0 to 0e0""" + if context is None: + context = getcontext() - if self._is_special: - ans = self._check_nans(context=context) - if ans: - return ans + # either argument is a NaN => result is NaN + ans = self._check_nans(other, context) + if ans: + return ans - dup = self._fix(context) - if dup._isinfinity(): - return dup + # 0**0 = NaN (!), x**0 = 1 for nonzero x (including +/-Infinity) + if not other: + if not self: + return context._raise_error(InvalidOperation, '0 ** 0') + else: + return Dec_p1 - if not dup: - return Decimal( (dup._sign, (0,), 0) ) - end = len(dup._int) - exp = dup._exp - while dup._int[end-1] == 0: + # result has sign 1 iff self._sign is 1 and other is an odd integer + result_sign = 0 + if self._sign == 1: + if other._isinteger(): + if not other._iseven(): + result_sign = 1 + else: + # -ve**noninteger = NaN + # (-0)**noninteger = 0**noninteger + if self: + return context._raise_error(InvalidOperation, + 'x ** y with x negative and y not an integer') + # negate self, without doing any unwanted rounding + self = Decimal((0, self._int, self._exp)) + + # 0**(+ve or Inf)= 0; 0**(-ve or -Inf) = Infinity + if not self: + if other._sign == 0: + return Decimal((result_sign, (0,), 0)) + else: + return Infsign[result_sign] + + # Inf**(+ve or Inf) = Inf; Inf**(-ve or -Inf) = 0 + if self._isinfinity(): + if other._sign == 0: + return Infsign[result_sign] + else: + return Decimal((result_sign, (0,), 0)) + + # 1**other = 1, but the choice of exponent and the flags + # depend on the exponent of self, and on whether other is a + # positive integer, a negative integer, or neither + if self == Dec_p1: + if other._isinteger(): + # exp = max(self._exp*max(int(other), 0), + # 1-context.prec) but evaluating int(other) directly + # is dangerous until we know other is small (other + # could be 1e999999999) + if other._sign == 1: + multiplier = 0 + elif other > context.prec: + multiplier = context.prec + else: + multiplier = int(other) + + exp = self._exp * multiplier + if exp < 1-context.prec: + exp = 1-context.prec + context._raise_error(Rounded) + else: + context._raise_error(Inexact) + context._raise_error(Rounded) + exp = 1-context.prec + + return Decimal((result_sign, (1,)+(0,)*-exp, exp)) + + # compute adjusted exponent of self + self_adj = self.adjusted() + + # self ** infinity is infinity if self > 1, 0 if self < 1 + # self ** -infinity is infinity if self < 1, 0 if self > 1 + if other._isinfinity(): + if (other._sign == 0) == (self_adj < 0): + return Decimal((result_sign, (0,), 0)) + else: + return Infsign[result_sign] + + # from here on, the result always goes through the call + # to _fix at the end of this function. + ans = None + + # crude test to catch cases of extreme overflow/underflow. If + # log10(self)*other >= 10**bound and bound >= len(str(Emax)) + # then 10**bound >= 10**len(str(Emax)) >= Emax+1 and hence + # self**other >= 10**(Emax+1), so overflow occurs. The test + # for underflow is similar. + bound = self._log10_exp_bound() + other.adjusted() + if (self_adj >= 0) == (other._sign == 0): + # self > 1 and other +ve, or self < 1 and other -ve + # possibility of overflow + if bound >= len(str(context.Emax)): + ans = Decimal((result_sign, (1,), context.Emax+1)) + else: + # self > 1 and other -ve, or self < 1 and other +ve + # possibility of underflow to 0 + Etiny = context.Etiny() + if bound >= len(str(-Etiny)): + ans = Decimal((result_sign, (1,), Etiny-1)) + + # try for an exact result with precision +1 + if ans is None: + ans = self._power_exact(other, context.prec + 1) + if ans is not None and result_sign == 1: + ans = Decimal((1, ans._int, ans._exp)) + + # usual case: inexact result, x**y computed directly as exp(y*log(x)) + if ans is None: + p = context.prec + x = _WorkRep(self) + xc, xe = x.int, x.exp + y = _WorkRep(other) + yc, ye = y.int, y.exp + if y.sign == 1: + yc = -yc + + # compute correctly rounded result: start with precision +3, + # then increase precision until result is unambiguously roundable + extra = 3 + while True: + coeff, exp = _dpower(xc, xe, yc, ye, p+extra) + if coeff % (5*10**(len(str(coeff))-p-1)): + break + extra += 3 + + ans = Decimal((result_sign, map(int, str(coeff)), exp)) + + # the specification says that for non-integer other we need to + # raise Inexact, even when the result is actually exact. In + # the same way, we need to raise Underflow here if the result + # is subnormal. (The call to _fix will take care of raising + # Rounded and Subnormal, as usual.) + if not other._isinteger(): + context._raise_error(Inexact) + # pad with zeros up to length context.prec+1 if necessary + if len(ans._int) <= context.prec: + expdiff = context.prec+1 - len(ans._int) + ans = Decimal((ans._sign, ans._int+(0,)*expdiff, ans._exp-expdiff)) + if ans.adjusted() < context.Emin: + context._raise_error(Underflow) + + # unlike exp, ln and log10, the power function respects the + # rounding mode; no need to use ROUND_HALF_EVEN here + ans = ans._fix(context) + return ans + + def __rpow__(self, other, context=None): + """Swaps self/other and returns __pow__.""" + other = _convert_other(other) + if other is NotImplemented: + return other + return other.__pow__(self, context=context) + + def normalize(self, context=None): + """Normalize- strip trailing 0s, change anything equal to 0 to 0e0""" + + if context is None: + context = getcontext() + + if self._is_special: + ans = self._check_nans(context=context) + if ans: + return ans + + dup = self._fix(context) + if dup._isinfinity(): + return dup + + if not dup: + return Decimal( (dup._sign, (0,), 0) ) + exp_max = [context.Emax, context.Etop()][context._clamp] + end = len(dup._int) + exp = dup._exp + while dup._int[end-1] == 0 and exp < exp_max: exp += 1 end -= 1 return Decimal( (dup._sign, dup._int[:end], exp) ) - def quantize(self, exp, rounding=None, context=None, watchexp=1): + def quantize(self, exp, rounding=None, context=None): """Quantize self so its exponent is the same as that of exp. Similar to self._rescale(exp._exp) but with error checking. """ + if context is None: + context = getcontext() + if rounding is None: + rounding = context.rounding + if self._is_special or exp._is_special: ans = self._check_nans(exp, context) if ans: @@ -1865,11 +2179,45 @@ if exp._isinfinity() or self._isinfinity(): if exp._isinfinity() and self._isinfinity(): return self # if both are inf, it is OK - if context is None: - context = getcontext() return context._raise_error(InvalidOperation, 'quantize with one INF') - return self._rescale(exp._exp, rounding, context, watchexp) + + # exp._exp should be between Etiny and Emax + if not (context.Etiny() <= exp._exp <= context.Emax): + return context._raise_error(InvalidOperation, + 'target exponent out of bounds in quantize') + + if not self: + ans = Decimal((self._sign, (0,), exp._exp)) + return ans._fix(context) + + self_adjusted = self.adjusted() + if self_adjusted > context.Emax: + return context._raise_error(InvalidOperation, + 'exponent of quantize result too large for current context') + if self_adjusted - exp._exp + 1 > context.prec: + return context._raise_error(InvalidOperation, + 'quantize result has too many digits for current context') + + ans = self._rescale(exp._exp, rounding) + if ans.adjusted() > context.Emax: + return context._raise_error(InvalidOperation, + 'exponent of quantize result too large for current context') + if len(ans._int) > context.prec: + return context._raise_error(InvalidOperation, + 'quantize result has too many digits for current context') + + # raise appropriate flags + if ans._exp > self._exp: + context._raise_error(Rounded) + if ans != self: + context._raise_error(Inexact) + if ans and ans.adjusted() < context.Emin: + context._raise_error(Subnormal) + + # call to fix takes care of any necessary folddown + ans = ans._fix(context) + return ans def same_quantum(self, other): """Test whether self and other have the same exponent. @@ -1883,82 +2231,85 @@ return self._isinfinity() and other._isinfinity() and True return self._exp == other._exp - def _rescale(self, exp, rounding=None, context=None, watchexp=1): - """Rescales so that the exponent is exp. + def _rescale(self, exp, rounding): + """Rescale self so that the exponent is exp, either by padding with zeros + or by truncating digits, using the given rounding mode. + + Specials are returned without change. This operation is + quiet: it raises no flags, and uses no information from the + context. exp = exp to scale to (an integer) - rounding = rounding version - watchexp: if set (default) an error is returned if exp is greater - than Emax or less than Etiny. + rounding = rounding mode """ - if context is None: - context = getcontext() - if self._is_special: - if self._isinfinity(): - return context._raise_error(InvalidOperation, 'rescale with an INF') - - ans = self._check_nans(context=context) - if ans: - return ans - - if watchexp and (context.Emax < exp or context.Etiny() > exp): - return context._raise_error(InvalidOperation, 'rescale(a, INF)') - + return self if not self: - ans = Decimal(self) - ans._int = (0,) - ans._exp = exp - return ans - - diff = self._exp - exp - digits = len(self._int) + diff - - if watchexp and digits > context.prec: - return context._raise_error(InvalidOperation, 'Rescale > prec') - - tmp = Decimal(self) - tmp._int = (0,) + tmp._int - digits += 1 + return Decimal((self._sign, (0,), exp)) + if self._exp >= exp: + # pad answer with zeros if necessary + return Decimal((self._sign, self._int + (0,)*(self._exp - exp), exp)) + + # too many digits; round and lose data. If self.adjusted() < + # exp-1, replace self by 10**(exp-1) before rounding + digits = len(self._int) + self._exp - exp if digits < 0: - tmp._exp = -digits + tmp._exp - tmp._int = (0,1) - digits = 1 - tmp = tmp._round(digits, rounding, context=context) - - if tmp._int[0] == 0 and len(tmp._int) > 1: - tmp._int = tmp._int[1:] - tmp._exp = exp + self = Decimal((self._sign, (1,), exp-1)) + digits = 0 + this_function = getattr(self, self._pick_rounding_function[rounding]) + return this_function(digits) + + def to_integral_exact(self, rounding=None, context=None): + """Rounds to a nearby integer. + + If no rounding mode is specified, take the rounding mode from + the context. This method raises the Rounded and Inexact flags + when appropriate. - tmp_adjusted = tmp.adjusted() - if tmp and tmp_adjusted < context.Emin: - context._raise_error(Subnormal) - elif tmp and tmp_adjusted > context.Emax: - return context._raise_error(InvalidOperation, 'rescale(a, INF)') - return tmp - - def to_integral(self, rounding=None, context=None): - """Rounds to the nearest integer, without raising inexact, rounded.""" + See also: to_integral_value, which does exactly the same as + this method except that it doesn't raise Inexact or Rounded. + """ if self._is_special: ans = self._check_nans(context=context) if ans: return ans + return self if self._exp >= 0: return self + if not self: + return Decimal((self._sign, (0,), 0)) if context is None: context = getcontext() - flags = context._ignore_flags(Rounded, Inexact) - ans = self._rescale(0, rounding, context=context) - context._regard_flags(flags) + if rounding is None: + rounding = context.rounding + context._raise_error(Rounded) + ans = self._rescale(0, rounding) + if ans != self: + context._raise_error(Inexact) return ans - def sqrt(self, context=None): - """Return the square root of self. + def to_integral_value(self, rounding=None, context=None): + """Rounds to the nearest integer, without raising inexact, rounded.""" + if context is None: + context = getcontext() + if rounding is None: + rounding = context.rounding + if self._is_special: + ans = self._check_nans(context=context) + if ans: + return ans + return self + if self._exp >= 0: + return self + else: + return self._rescale(0, rounding) - Uses a converging algorithm (Xn+1 = 0.5*(Xn + self / Xn)) - Should quadratically approach the right answer. - """ + # the method name changed, but we provide also the old one, for compatibility + to_integral = to_integral_value + + def sqrt(self, context=None): + """Return the square root of self.""" if self._is_special: ans = self._check_nans(context=context) if ans: @@ -1968,16 +2319,9 @@ return Decimal(self) if not self: - # exponent = self._exp / 2, using round_down. - # if self._exp < 0: - # exp = (self._exp+1) // 2 - # else: - exp = (self._exp) // 2 - if self._sign == 1: - # sqrt(-0) = -0 - return Decimal( (1, (0,), exp)) - else: - return Decimal( (0, (0,), exp)) + # exponent = self._exp // 2. sqrt(-0) = -0 + ans = Decimal((self._sign, (0,), self._exp // 2)) + return ans._fix(context) if context is None: context = getcontext() @@ -1985,104 +2329,91 @@ if self._sign == 1: return context._raise_error(InvalidOperation, 'sqrt(-x), x > 0') - tmp = Decimal(self) - - expadd = tmp._exp // 2 - if tmp._exp & 1: - tmp._int += (0,) - tmp._exp = 0 + # At this point self represents a positive number. Let p be + # the desired precision and express self in the form c*100**e + # with c a positive real number and e an integer, c and e + # being chosen so that 100**(p-1) <= c < 100**p. Then the + # (exact) square root of self is sqrt(c)*10**e, and 10**(p-1) + # <= sqrt(c) < 10**p, so the closest representable Decimal at + # precision p is n*10**e where n = round_half_even(sqrt(c)), + # the closest integer to sqrt(c) with the even integer chosen + # in the case of a tie. + # + # To ensure correct rounding in all cases, we use the + # following trick: we compute the square root to an extra + # place (precision p+1 instead of precision p), rounding down. + # Then, if the result is inexact and its last digit is 0 or 5, + # we increase the last digit to 1 or 6 respectively; if it's + # exact we leave the last digit alone. Now the final round to + # p places (or fewer in the case of underflow) will round + # correctly and raise the appropriate flags. + + # use an extra digit of precision + prec = context.prec+1 + + # write argument in the form c*100**e where e = self._exp//2 + # is the 'ideal' exponent, to be used if the square root is + # exactly representable. l is the number of 'digits' of c in + # base 100, so that 100**(l-1) <= c < 100**l. + op = _WorkRep(self) + e = op.exp >> 1 + if op.exp & 1: + c = op.int * 10 + l = (len(self._int) >> 1) + 1 else: - tmp._exp = 0 + c = op.int + l = len(self._int)+1 >> 1 - context = context._shallow_copy() - flags = context._ignore_all_flags() - firstprec = context.prec - context.prec = 3 - if tmp.adjusted() & 1 == 0: - ans = Decimal( (0, (8,1,9), tmp.adjusted() - 2) ) - ans = ans.__add__(tmp.__mul__(Decimal((0, (2,5,9), -2)), - context=context), context=context) - ans._exp -= 1 + tmp.adjusted() // 2 - else: - ans = Decimal( (0, (2,5,9), tmp._exp + len(tmp._int)- 3) ) - ans = ans.__add__(tmp.__mul__(Decimal((0, (8,1,9), -3)), - context=context), context=context) - ans._exp -= 1 + tmp.adjusted() // 2 - - # ans is now a linear approximation. - Emax, Emin = context.Emax, context.Emin - context.Emax, context.Emin = DefaultContext.Emax, DefaultContext.Emin - - half = Decimal('0.5') - - maxp = firstprec + 2 - rounding = context._set_rounding(ROUND_HALF_EVEN) - while 1: - context.prec = min(2*context.prec - 2, maxp) - ans = half.__mul__(ans.__add__(tmp.__div__(ans, context=context), - context=context), context=context) - if context.prec == maxp: + # rescale so that c has exactly prec base 100 'digits' + shift = prec-l + if shift >= 0: + c *= 100**shift + exact = True + else: + c, remainder = divmod(c, 100**-shift) + exact = not remainder + e -= shift + + # find n = floor(sqrt(c)) using Newton's method + n = 10**prec + while True: + q = c//n + if n <= q: break + else: + n = n + q >> 1 + exact = exact and n*n == c - # Round to the answer's precision-- the only error can be 1 ulp. - context.prec = firstprec - prevexp = ans.adjusted() - ans = ans._round(context=context) - - # Now, check if the other last digits are better. - context.prec = firstprec + 1 - # In case we rounded up another digit and we should actually go lower. - if prevexp != ans.adjusted(): - ans._int += (0,) - ans._exp -= 1 - - - lower = ans.__sub__(Decimal((0, (5,), ans._exp-1)), context=context) - context._set_rounding(ROUND_UP) - if lower.__mul__(lower, context=context) > (tmp): - ans = ans.__sub__(Decimal((0, (1,), ans._exp)), context=context) - + if exact: + # result is exact; rescale to use ideal exponent e + if shift >= 0: + # assert n % 10**shift == 0 + n //= 10**shift + else: + n *= 10**-shift + e += shift else: - upper = ans.__add__(Decimal((0, (5,), ans._exp-1)),context=context) - context._set_rounding(ROUND_DOWN) - if upper.__mul__(upper, context=context) < tmp: - ans = ans.__add__(Decimal((0, (1,), ans._exp)),context=context) + # result is not exact; fix last digit as described above + if n % 5 == 0: + n += 1 - ans._exp += expadd + ans = Decimal((0, map(int, str(n)), e)) - context.prec = firstprec - context.rounding = rounding + # round, and fit to current context + context = context._shallow_copy() + rounding = context._set_rounding(ROUND_HALF_EVEN) ans = ans._fix(context) + context.rounding = rounding - rounding = context._set_rounding_decision(NEVER_ROUND) - if not ans.__mul__(ans, context=context) == self: - # Only rounded/inexact if here. - context._regard_flags(flags) - context._raise_error(Rounded) - context._raise_error(Inexact) - else: - # Exact answer, so let's set the exponent right. - # if self._exp < 0: - # exp = (self._exp +1)// 2 - # else: - exp = self._exp // 2 - context.prec += ans._exp - exp - ans = ans._rescale(exp, context=context) - context.prec = firstprec - context._regard_flags(flags) - context.Emax, context.Emin = Emax, Emin - - return ans._fix(context) + return ans def max(self, other, context=None): """Returns the larger value. - like max(self, other) except if one is not a number, returns + Like max(self, other) except if one is not a number, returns NaN (and signals if one is sNaN). Also rounds. """ - other = _convert_other(other) - if other is NotImplemented: - return other + other = _convert_other(other, raiseit=True) if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the @@ -2096,7 +2427,6 @@ return other return self._check_nans(other, context) - ans = self c = self.__cmp__(other) if c == 0: # If both operands are finite and equal in numerical value @@ -2106,16 +2436,13 @@ # positive sign and min returns the operand with the negative sign # # If the signs are the same then the exponent is used to select - # the result. - if self._sign != other._sign: - if self._sign: - ans = other - elif self._exp < other._exp and not self._sign: - ans = other - elif self._exp > other._exp and self._sign: - ans = other - elif c == -1: + # the result. This is exactly the ordering used in compare_total. + c = self.compare_total(other) + + if c == -1: ans = other + else: + ans = self if context is None: context = getcontext() @@ -2129,9 +2456,7 @@ Like min(self, other) except if one is not a number, returns NaN (and signals if one is sNaN). Also rounds. """ - other = _convert_other(other) - if other is NotImplemented: - return other + other = _convert_other(other, raiseit=True) if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the @@ -2145,25 +2470,13 @@ return other return self._check_nans(other, context) - ans = self c = self.__cmp__(other) if c == 0: - # If both operands are finite and equal in numerical value - # then an ordering is applied: - # - # If the signs differ then max returns the operand with the - # positive sign and min returns the operand with the negative sign - # - # If the signs are the same then the exponent is used to select - # the result. - if self._sign != other._sign: - if other._sign: - ans = other - elif self._exp > other._exp and not self._sign: - ans = other - elif self._exp < other._exp and self._sign: - ans = other - elif c == 1: + c = self.compare_total(other) + + if c == -1: + ans = self + else: ans = other if context is None: @@ -2174,15 +2487,17 @@ def _isinteger(self): """Returns whether self is an integer""" + if self._is_special: + return False if self._exp >= 0: return True rest = self._int[self._exp:] return rest == (0,)*len(rest) def _iseven(self): - """Returns 1 if self is even. Assumes self is an integer.""" - if self._exp > 0: - return 1 + """Returns True if self is even. Assumes self is an integer.""" + if not self or self._exp > 0: + return True return self._int[-1+self._exp] & 1 == 0 def adjusted(self): @@ -2193,6 +2508,872 @@ except TypeError: return 0 + def canonical(self, context=None): + """Returns the same Decimal object. + + As we do not have different encodings for the same number, the + received object already is in its canonical form. + """ + return self + + def compare_signal(self, other, context=None): + """Compares self to the other operand numerically. + + It's pretty much like compare(), but all NaNs signal, with signaling + NaNs taking precedence over quiet NaNs. + """ + if context is None: + context = getcontext() + + self_is_nan = self._isnan() + other_is_nan = other._isnan() + if self_is_nan == 2: + return context._raise_error(InvalidOperation, 'sNaN', + 1, self) + if other_is_nan == 2: + return context._raise_error(InvalidOperation, 'sNaN', + 1, other) + if self_is_nan: + return context._raise_error(InvalidOperation, 'NaN in compare_signal', + 1, self) + if other_is_nan: + return context._raise_error(InvalidOperation, 'NaN in compare_signal', + 1, other) + return self.compare(other, context=context) + + def compare_total(self, other): + """Compares self to other using the abstract representations. + + This is not like the standard compare, which use their numerical + value. Note that a total ordering is defined for all possible abstract + representations. + """ + # if one is negative and the other is positive, it's easy + if self._sign and not other._sign: + return Dec_n1 + if not self._sign and other._sign: + return Dec_p1 + sign = self._sign + + # let's handle both NaN types + self_nan = self._isnan() + other_nan = other._isnan() + if self_nan or other_nan: + if self_nan == other_nan: + if self._int < other._int: + if sign: + return Dec_p1 + else: + return Dec_n1 + if self._int > other._int: + if sign: + return Dec_n1 + else: + return Dec_p1 + return Dec_0 + + if sign: + if self_nan == 1: + return Dec_n1 + if other_nan == 1: + return Dec_p1 + if self_nan == 2: + return Dec_n1 + if other_nan == 2: + return Dec_p1 + else: + if self_nan == 1: + return Dec_p1 + if other_nan == 1: + return Dec_n1 + if self_nan == 2: + return Dec_p1 + if other_nan == 2: + return Dec_n1 + + if self < other: + return Dec_n1 + if self > other: + return Dec_p1 + + if self._exp < other._exp: + if sign: + return Dec_p1 + else: + return Dec_n1 + if self._exp > other._exp: + if sign: + return Dec_n1 + else: + return Dec_p1 + return Dec_0 + + + def compare_total_mag(self, other): + """Compares self to other using abstract repr., ignoring sign. + + Like compare_total, but with operand's sign ignored and assumed to be 0. + """ + s = self.copy_abs() + o = other.copy_abs() + return s.compare_total(o) + + def copy_abs(self): + """Returns a copy with the sign set to 0. """ + return Decimal((0, self._int, self._exp)) + + def copy_negate(self): + """Returns a copy with the sign inverted.""" + if self._sign: + return Decimal((0, self._int, self._exp)) + else: + return Decimal((1, self._int, self._exp)) + + def copy_sign(self, other): + """Returns self with the sign of other.""" + return Decimal((other._sign, self._int, self._exp)) + + def exp(self, context=None): + """Returns e ** self.""" + + if context is None: + context = getcontext() + + # exp(NaN) = NaN + ans = self._check_nans(context=context) + if ans: + return ans + + # exp(-Infinity) = 0 + if self._isinfinity() == -1: + return Dec_0 + + # exp(0) = 1 + if not self: + return Dec_p1 + + # exp(Infinity) = Infinity + if self._isinfinity() == 1: + return Decimal(self) + + # the result is now guaranteed to be inexact (the true + # mathematical result is transcendental). There's no need to + # raise Rounded and Inexact here---they'll always be raised as + # a result of the call to _fix. + p = context.prec + adj = self.adjusted() + + # we only need to do any computation for quite a small range + # of adjusted exponents---for example, -29 <= adj <= 10 for + # the default context. For smaller exponent the result is + # indistinguishable from 1 at the given precision, while for + # larger exponent the result either overflows or underflows. + if self._sign == 0 and adj > len(str((context.Emax+1)*3)): + # overflow + ans = Decimal((0, (1,), context.Emax+1)) + elif self._sign == 1 and adj > len(str((-context.Etiny()+1)*3)): + # underflow to 0 + ans = Decimal((0, (1,), context.Etiny()-1)) + elif self._sign == 0 and adj < -p: + # p+1 digits; final round will raise correct flags + ans = Decimal((0, (1,) + (0,)*(p-1) + (1,), -p)) + elif self._sign == 1 and adj < -p-1: + # p+1 digits; final round will raise correct flags + ans = Decimal((0, (9,)*(p+1), -p-1)) + # general case + else: + op = _WorkRep(self) + c, e = op.int, op.exp + if op.sign == 1: + c = -c + + # compute correctly rounded result: increase precision by + # 3 digits at a time until we get an unambiguously + # roundable result + extra = 3 + while True: + coeff, exp = _dexp(c, e, p+extra) + if coeff % (5*10**(len(str(coeff))-p-1)): + break + extra += 3 + + ans = Decimal((0, map(int, str(coeff)), exp)) + + # at this stage, ans should round correctly with *any* + # rounding mode, not just with ROUND_HALF_EVEN + context = context._shallow_copy() + rounding = context._set_rounding(ROUND_HALF_EVEN) + ans = ans._fix(context) + context.rounding = rounding + + return ans + + def is_canonical(self): + """Returns 1 if self is canonical; otherwise returns 0.""" + return Dec_p1 + + def is_finite(self): + """Returns 1 if self is finite, otherwise returns 0. + + For it to be finite, it must be neither infinite nor a NaN. + """ + if self._is_special: + return Dec_0 + else: + return Dec_p1 + + def is_infinite(self): + """Returns 1 if self is an Infinite, otherwise returns 0.""" + if self._isinfinity(): + return Dec_p1 + else: + return Dec_0 + + def is_nan(self): + """Returns 1 if self is qNaN or sNaN, otherwise returns 0.""" + if self._isnan(): + return Dec_p1 + else: + return Dec_0 + + def is_normal(self, context=None): + """Returns 1 if self is a normal number, otherwise returns 0.""" + if self._is_special: + return Dec_0 + if not self: + return Dec_0 + if context is None: + context = getcontext() + if context.Emin <= self.adjusted() <= context.Emax: + return Dec_p1 + else: + return Dec_0 + + def is_qnan(self): + """Returns 1 if self is a quiet NaN, otherwise returns 0.""" + if self._isnan() == 1: + return Dec_p1 + else: + return Dec_0 + + def is_signed(self): + """Returns 1 if self is negative, otherwise returns 0.""" + return Decimal(self._sign) + + def is_snan(self): + """Returns 1 if self is a signaling NaN, otherwise returns 0.""" + if self._isnan() == 2: + return Dec_p1 + else: + return Dec_0 + + def is_subnormal(self, context=None): + """Returns 1 if self is subnormal, otherwise returns 0.""" + if self._is_special: + return Dec_0 + if not self: + return Dec_0 + if context is None: + context = getcontext() + + r = self._exp + len(self._int) + if r <= context.Emin: + return Dec_p1 + return Dec_0 + + def is_zero(self): + """Returns 1 if self is a zero, otherwise returns 0.""" + if self: + return Dec_0 + else: + return Dec_p1 + + def _ln_exp_bound(self): + """Compute a lower bound for the adjusted exponent of self.ln(). + In other words, compute r such that self.ln() >= 10**r. Assumes + that self is finite and positive and that self != 1. + """ + + # for 0.1 <= x <= 10 we use the inequalities 1-1/x <= ln(x) <= x-1 + adj = self._exp + len(self._int) - 1 + if adj >= 1: + # argument >= 10; we use 23/10 = 2.3 as a lower bound for ln(10) + return len(str(adj*23//10)) - 1 + if adj <= -2: + # argument <= 0.1 + return len(str((-1-adj)*23//10)) - 1 + op = _WorkRep(self) + c, e = op.int, op.exp + if adj == 0: + # 1 < self < 10 + num = str(c-10**-e) + den = str(c) + return len(num) - len(den) - (num < den) + # adj == -1, 0.1 <= self < 1 + return e + len(str(10**-e - c)) - 1 + + + def ln(self, context=None): + """Returns the natural (base e) logarithm of self.""" + + if context is None: + context = getcontext() + + # ln(NaN) = NaN + ans = self._check_nans(context=context) + if ans: + return ans + + # ln(0.0) == -Infinity + if not self: + return negInf + + # ln(Infinity) = Infinity + if self._isinfinity() == 1: + return Inf + + # ln(1.0) == 0.0 + if self == Dec_p1: + return Dec_0 + + # ln(negative) raises InvalidOperation + if self._sign == 1: + return context._raise_error(InvalidOperation, + 'ln of a negative value') + + # result is irrational, so necessarily inexact + op = _WorkRep(self) + c, e = op.int, op.exp + p = context.prec + + # correctly rounded result: repeatedly increase precision by 3 + # until we get an unambiguously roundable result + places = p - self._ln_exp_bound() + 2 # at least p+3 places + while True: + coeff = _dlog(c, e, places) + # assert len(str(abs(coeff)))-p >= 1 + if coeff % (5*10**(len(str(abs(coeff)))-p-1)): + break + places += 3 + ans = Decimal((int(coeff<0), map(int, str(abs(coeff))), -places)) + + context = context._shallow_copy() + rounding = context._set_rounding(ROUND_HALF_EVEN) + ans = ans._fix(context) + context.rounding = rounding + return ans + + def _log10_exp_bound(self): + """Compute a lower bound for the adjusted exponent of self.log10(). + In other words, find r such that self.log10() >= 10**r. + Assumes that self is finite and positive and that self != 1. + """ + + # For x >= 10 or x < 0.1 we only need a bound on the integer + # part of log10(self), and this comes directly from the + # exponent of x. For 0.1 <= x <= 10 we use the inequalities + # 1-1/x <= log(x) <= x-1. If x > 1 we have |log10(x)| > + # (1-1/x)/2.31 > 0. If x < 1 then |log10(x)| > (1-x)/2.31 > 0 + + adj = self._exp + len(self._int) - 1 + if adj >= 1: + # self >= 10 + return len(str(adj))-1 + if adj <= -2: + # self < 0.1 + return len(str(-1-adj))-1 + op = _WorkRep(self) + c, e = op.int, op.exp + if adj == 0: + # 1 < self < 10 + num = str(c-10**-e) + den = str(231*c) + return len(num) - len(den) - (num < den) + 2 + # adj == -1, 0.1 <= self < 1 + num = str(10**-e-c) + return len(num) + e - (num < "231") - 1 + + def log10(self, context=None): + """Returns the base 10 logarithm of self.""" + + if context is None: + context = getcontext() + + # log10(NaN) = NaN + ans = self._check_nans(context=context) + if ans: + return ans + + # log10(0.0) == -Infinity + if not self: + return negInf + + # log10(Infinity) = Infinity + if self._isinfinity() == 1: + return Inf + + # log10(negative or -Infinity) raises InvalidOperation + if self._sign == 1: + return context._raise_error(InvalidOperation, + 'log10 of a negative value') + + # log10(10**n) = n + if self._int[0] == 1 and self._int[1:] == (0,)*(len(self._int) - 1): + # answer may need rounding + ans = Decimal(self._exp + len(self._int) - 1) + else: + # result is irrational, so necessarily inexact + op = _WorkRep(self) + c, e = op.int, op.exp + p = context.prec + + # correctly rounded result: repeatedly increase precision + # until result is unambiguously roundable + places = p-self._log10_exp_bound()+2 + while True: + coeff = _dlog10(c, e, places) + # assert len(str(abs(coeff)))-p >= 1 + if coeff % (5*10**(len(str(abs(coeff)))-p-1)): + break + places += 3 + ans = Decimal((int(coeff<0), map(int, str(abs(coeff))), -places)) + + context = context._shallow_copy() + rounding = context._set_rounding(ROUND_HALF_EVEN) + ans = ans._fix(context) + context.rounding = rounding + return ans + + def logb(self, context=None): + """ Returns the exponent of the magnitude of self's MSD. + + The result is the integer which is the exponent of the magnitude + of the most significant digit of self (as though it were truncated + to a single digit while maintaining the value of that digit and + without limiting the resulting exponent). + """ + # logb(NaN) = NaN + ans = self._check_nans(context=context) + if ans: + return ans + + if context is None: + context = getcontext() + + # logb(+/-Inf) = +Inf + if self._isinfinity(): + return Inf + + # logb(0) = -Inf, DivisionByZero + if not self: + return context._raise_error(DivisionByZero, 'logb(0)', -1) + + # otherwise, simply return the adjusted exponent of self, as a + # Decimal. Note that no attempt is made to fit the result + # into the current context. + return Decimal(self.adjusted()) + + def _islogical(self): + """Return True if self is a logical operand. + + For being logical, it must be a finite numbers with a sign of 0, + an exponent of 0, and a coefficient whose digits must all be + either 0 or 1. + """ + if self._sign != 0 or self._exp != 0: + return False + for dig in self._int: + if dig not in (0, 1): + return False + return True + + def _fill_logical(self, context, opa, opb): + dif = context.prec - len(opa) + if dif > 0: + opa = (0,)*dif + opa + elif dif < 0: + opa = opa[-context.prec:] + dif = context.prec - len(opb) + if dif > 0: + opb = (0,)*dif + opb + elif dif < 0: + opb = opb[-context.prec:] + return opa, opb + + def logical_and(self, other, context=None): + """Applies an 'and' operation between self and other's digits.""" + if context is None: + context = getcontext() + if not self._islogical() or not other._islogical(): + return context._raise_error(InvalidOperation) + + # fill to context.prec + (opa, opb) = self._fill_logical(context, self._int, other._int) + + # make the operation, and clean starting zeroes + result = [a&b for a,b in zip(opa,opb)] + for i,d in enumerate(result): + if d == 1: + break + result = tuple(result[i:]) + + # if empty, we must have at least a zero + if not result: + result = (0,) + return Decimal((0, result, 0)) + + def logical_invert(self, context=None): + """Invert all its digits.""" + if context is None: + context = getcontext() + return self.logical_xor(Decimal((0,(1,)*context.prec,0)), context) + + def logical_or(self, other, context=None): + """Applies an 'or' operation between self and other's digits.""" + if context is None: + context = getcontext() + if not self._islogical() or not other._islogical(): + return context._raise_error(InvalidOperation) + + # fill to context.prec + (opa, opb) = self._fill_logical(context, self._int, other._int) + + # make the operation, and clean starting zeroes + result = [a|b for a,b in zip(opa,opb)] + for i,d in enumerate(result): + if d == 1: + break + result = tuple(result[i:]) + + # if empty, we must have at least a zero + if not result: + result = (0,) + return Decimal((0, result, 0)) + + def logical_xor(self, other, context=None): + """Applies an 'xor' operation between self and other's digits.""" + if context is None: + context = getcontext() + if not self._islogical() or not other._islogical(): + return context._raise_error(InvalidOperation) + + # fill to context.prec + (opa, opb) = self._fill_logical(context, self._int, other._int) + + # make the operation, and clean starting zeroes + result = [a^b for a,b in zip(opa,opb)] + for i,d in enumerate(result): + if d == 1: + break + result = tuple(result[i:]) + + # if empty, we must have at least a zero + if not result: + result = (0,) + return Decimal((0, result, 0)) + + def max_mag(self, other, context=None): + """Compares the values numerically with their sign ignored.""" + other = _convert_other(other, raiseit=True) + + if self._is_special or other._is_special: + # If one operand is a quiet NaN and the other is number, then the + # number is always returned + sn = self._isnan() + on = other._isnan() + if sn or on: + if on == 1 and sn != 2: + return self + if sn == 1 and on != 2: + return other + return self._check_nans(other, context) + + c = self.copy_abs().__cmp__(other.copy_abs()) + if c == 0: + c = self.compare_total(other) + + if c == -1: + ans = other + else: + ans = self + + if context is None: + context = getcontext() + if context._rounding_decision == ALWAYS_ROUND: + return ans._fix(context) + return ans + + def min_mag(self, other, context=None): + """Compares the values numerically with their sign ignored.""" + other = _convert_other(other, raiseit=True) + + if self._is_special or other._is_special: + # If one operand is a quiet NaN and the other is number, then the + # number is always returned + sn = self._isnan() + on = other._isnan() + if sn or on: + if on == 1 and sn != 2: + return self + if sn == 1 and on != 2: + return other + return self._check_nans(other, context) + + c = self.copy_abs().__cmp__(other.copy_abs()) + if c == 0: + c = self.compare_total(other) + + if c == -1: + ans = self + else: + ans = other + + if context is None: + context = getcontext() + if context._rounding_decision == ALWAYS_ROUND: + return ans._fix(context) + return ans + + def next_minus(self, context=None): + """Returns the largest representable number smaller than itself.""" + if context is None: + context = getcontext() + + ans = self._check_nans(context=context) + if ans: + return ans + + if self._isinfinity() == -1: + return negInf + if self._isinfinity() == 1: + return Decimal((0, (9,)*context.prec, context.Etop())) + + context = context.copy() + context._set_rounding(ROUND_FLOOR) + context._ignore_all_flags() + new_self = self._fix(context) + if new_self != self: + return new_self + return self.__sub__(Decimal((0, (1,), context.Etiny()-1)), context) + + def next_plus(self, context=None): + """Returns the smallest representable number larger than itself.""" + if context is None: + context = getcontext() + + ans = self._check_nans(context=context) + if ans: + return ans + + if self._isinfinity() == 1: + return Inf + if self._isinfinity() == -1: + return Decimal((1, (9,)*context.prec, context.Etop())) + + context = context.copy() + context._set_rounding(ROUND_CEILING) + context._ignore_all_flags() + new_self = self._fix(context) + if new_self != self: + return new_self + return self.__add__(Decimal((0, (1,), context.Etiny()-1)), context) + + def next_toward(self, other, context=None): + """Returns the number closest to self, in the direction towards other. + + The result is the closest representable number to self + (excluding self) that is in the direction towards other, + unless both have the same value. If the two operands are + numerically equal, then the result is a copy of self with the + sign set to be the same as the sign of other. + """ + other = _convert_other(other, raiseit=True) + + if context is None: + context = getcontext() + + ans = self._check_nans(other, context) + if ans: + return ans + + comparison = self.__cmp__(other) + if comparison == 0: + return Decimal((other._sign, self._int, self._exp)) + + if comparison == -1: + ans = self.next_plus(context) + else: # comparison == 1 + ans = self.next_minus(context) + + # decide which flags to raise using value of ans + if ans._isinfinity(): + context._raise_error(Overflow, + 'Infinite result from next_toward', + ans._sign) + context._raise_error(Rounded) + context._raise_error(Inexact) + elif ans.adjusted() < context.Emin: + context._raise_error(Underflow) + context._raise_error(Subnormal) + context._raise_error(Rounded) + context._raise_error(Inexact) + # if precision == 1 then we don't raise Clamped for a + # result 0E-Etiny. + if not ans: + context._raise_error(Clamped) + + return ans + + def number_class(self, context=None): + """Returns an indication of the class of self. + + The class is one of the following strings: + -sNaN + -NaN + -Infinity + -Normal + -Subnormal + -Zero + +Zero + +Subnormal + +Normal + +Infinity + """ + if self.is_snan(): + return "sNaN" + if self.is_qnan(): + return "NaN" + inf = self._isinfinity() + if inf == 1: + return "+Infinity" + if inf == -1: + return "-Infinity" + if self.is_zero(): + if self._sign: + return "-Zero" + else: + return "+Zero" + if context is None: + context = getcontext() + if self.is_subnormal(context=context): + if self._sign: + return "-Subnormal" + else: + return "+Subnormal" + # just a normal, regular, boring number, :) + if self._sign: + return "-Normal" + else: + return "+Normal" + + def radix(self): + """Just returns 10, as this is Decimal, :)""" + return Decimal(10) + + def rotate(self, other, context=None): + """Returns a rotated copy of self, value-of-other times.""" + if context is None: + context = getcontext() + + ans = self._check_nans(other, context) + if ans: + return ans + + if other._exp != 0: + return context._raise_error(InvalidOperation) + if not (-context.prec <= int(other) <= context.prec): + return context._raise_error(InvalidOperation) + + if self._isinfinity(): + return self + + # get values, pad if necessary + torot = int(other) + rotdig = self._int + topad = context.prec - len(rotdig) + if topad: + rotdig = ((0,)*topad) + rotdig + + # let's rotate! + rotated = rotdig[torot:] + rotdig[:torot] + + # clean starting zeroes + for i,d in enumerate(rotated): + if d != 0: + break + rotated = rotated[i:] + + return Decimal((self._sign, rotated, self._exp)) + + + def scaleb (self, other, context=None): + """Returns self operand after adding the second value to its exp.""" + if context is None: + context = getcontext() + + ans = self._check_nans(other, context) + if ans: + return ans + + if other._exp != 0: + return context._raise_error(InvalidOperation) + liminf = -2 * (context.Emax + context.prec) + limsup = 2 * (context.Emax + context.prec) + if not (liminf <= int(other) <= limsup): + return context._raise_error(InvalidOperation) + + if self._isinfinity(): + return self + + d = Decimal((self._sign, self._int, self._exp + int(other))) + d = d._fix(context) + return d + + def shift(self, other, context=None): + """Returns a shifted copy of self, value-of-other times.""" + if context is None: + context = getcontext() + + ans = self._check_nans(other, context) + if ans: + return ans + + if other._exp != 0: + return context._raise_error(InvalidOperation) + if not (-context.prec <= int(other) <= context.prec): + return context._raise_error(InvalidOperation) + + if self._isinfinity(): + return self + + # get values, pad if necessary + torot = int(other) + if not torot: + return self + rotdig = self._int + topad = context.prec - len(rotdig) + if topad: + rotdig = ((0,)*topad) + rotdig + + # let's shift! + if torot < 0: + rotated = rotdig[:torot] + else: + rotated = (rotdig + ((0,) * torot)) + rotated = rotated[-context.prec:] + + # clean starting zeroes + if rotated: + for i,d in enumerate(rotated): + if d != 0: + break + rotated = rotated[i:] + else: + rotated = (0,) + + return Decimal((self._sign, rotated, self._exp)) + + # Support for pickling, copy, and deepcopy def __reduce__(self): return (self.__class__, (str(self),)) @@ -2407,6 +3588,9 @@ def create_decimal(self, num='0'): """Creates a new Decimal instance but using self as context.""" d = Decimal(num, context=self) + if d._isnan() and len(d._int) > self.prec - self._clamp: + return self._raise_error(ConversionSyntax, + "diagnostic info too long in NaN") return d._fix(self) # Methods @@ -2441,6 +3625,17 @@ def _apply(self, a): return str(a._fix(self)) + def canonical(self, a): + """Returns the same Decimal object. + + As we do not have different encodings for the same number, the + received object already is in its canonical form. + + >>> ExtendedContext.canonical(Decimal('2.50')) + Decimal("2.50") + """ + return a.canonical(context=self) + def compare(self, a, b): """Compares values numerically. @@ -2470,6 +3665,110 @@ """ return a.compare(b, context=self) + def compare_signal(self, a, b): + """Compares the values of the two operands numerically. + + It's pretty much like compare(), but all NaNs signal, with signaling + NaNs taking precedence over quiet NaNs. + + >>> c = ExtendedContext + >>> c.compare_signal(Decimal('2.1'), Decimal('3')) + Decimal("-1") + >>> c.compare_signal(Decimal('2.1'), Decimal('2.1')) + Decimal("0") + >>> c.flags[InvalidOperation] = 0 + >>> print c.flags[InvalidOperation] + 0 + >>> c.compare_signal(Decimal('NaN'), Decimal('2.1')) + Decimal("NaN") + >>> print c.flags[InvalidOperation] + 1 + >>> c.flags[InvalidOperation] = 0 + >>> print c.flags[InvalidOperation] + 0 + >>> c.compare_signal(Decimal('sNaN'), Decimal('2.1')) + Decimal("NaN") + >>> print c.flags[InvalidOperation] + 1 + """ + return a.compare_signal(b, context=self) + + def compare_total(self, a, b): + """Compares two operands using their abstract representation. + + This is not like the standard compare, which use their numerical + value. Note that a total ordering is defined for all possible abstract + representations. + + >>> ExtendedContext.compare_total(Decimal('12.73'), Decimal('127.9')) + Decimal("-1") + >>> ExtendedContext.compare_total(Decimal('-127'), Decimal('12')) + Decimal("-1") + >>> ExtendedContext.compare_total(Decimal('12.30'), Decimal('12.3')) + Decimal("-1") + >>> ExtendedContext.compare_total(Decimal('12.30'), Decimal('12.30')) + Decimal("0") + >>> ExtendedContext.compare_total(Decimal('12.3'), Decimal('12.300')) + Decimal("1") + >>> ExtendedContext.compare_total(Decimal('12.3'), Decimal('NaN')) + Decimal("-1") + """ + return a.compare_total(b) + + def compare_total_mag(self, a, b): + """Compares two operands using their abstract representation ignoring sign. + + Like compare_total, but with operand's sign ignored and assumed to be 0. + """ + return a.compare_total_mag(b) + + def copy_abs(self, a): + """Returns a copy of the operand with the sign set to 0. + + >>> ExtendedContext.copy_abs(Decimal('2.1')) + Decimal("2.1") + >>> ExtendedContext.copy_abs(Decimal('-100')) + Decimal("100") + """ + return a.copy_abs() + + def copy_decimal(self, a): + """Returns a copy of the decimal objet. + + >>> ExtendedContext.copy_decimal(Decimal('2.1')) + Decimal("2.1") + >>> ExtendedContext.copy_decimal(Decimal('-1.00')) + Decimal("-1.00") + """ + return a + + def copy_negate(self, a): + """Returns a copy of the operand with the sign inverted. + + >>> ExtendedContext.copy_negate(Decimal('101.5')) + Decimal("-101.5") + >>> ExtendedContext.copy_negate(Decimal('-101.5')) + Decimal("101.5") + """ + return a.copy_negate() + + def copy_sign(self, a, b): + """Copies the second operand's sign to the first one. + + In detail, it returns a copy of the first operand with the sign + equal to the sign of the second operand. + + >>> ExtendedContext.copy_sign(Decimal( '1.50'), Decimal('7.33')) + Decimal("1.50") + >>> ExtendedContext.copy_sign(Decimal('-1.50'), Decimal('7.33')) + Decimal("1.50") + >>> ExtendedContext.copy_sign(Decimal( '1.50'), Decimal('-7.33')) + Decimal("-1.50") + >>> ExtendedContext.copy_sign(Decimal('-1.50'), Decimal('-7.33')) + Decimal("-1.50") + """ + return a.copy_sign(b) + def divide(self, a, b): """Decimal division in a specified context. @@ -2511,6 +3810,316 @@ def divmod(self, a, b): return a.__divmod__(b, context=self) + def exp(self, a): + """Returns e ** a. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> c.exp(Decimal('-Infinity')) + Decimal("0") + >>> c.exp(Decimal('-1')) + Decimal("0.367879441") + >>> c.exp(Decimal('0')) + Decimal("1") + >>> c.exp(Decimal('1')) + Decimal("2.71828183") + >>> c.exp(Decimal('0.693147181')) + Decimal("2.00000000") + >>> c.exp(Decimal('+Infinity')) + Decimal("Infinity") + """ + return a.exp(context=self) + + def fma(self, a, b, c): + """Returns a multiplied by b, plus c. + + The first two operands are multiplied together, using multiply, + the third operand is then added to the result of that + multiplication, using add, all with only one final rounding. + + >>> ExtendedContext.fma(Decimal('3'), Decimal('5'), Decimal('7')) + Decimal("22") + >>> ExtendedContext.fma(Decimal('3'), Decimal('-5'), Decimal('7')) + Decimal("-8") + >>> ExtendedContext.fma(Decimal('888565290'), Decimal('1557.96930'), Decimal('-86087.7578')) + Decimal("1.38435736E+12") + """ + return a.fma(b, c, context=self) + + def is_canonical(self, a): + """Returns 1 if the operand is canonical; otherwise returns 0. + + >>> ExtendedContext.is_canonical(Decimal('2.50')) + Decimal("1") + """ + return Dec_p1 + + def is_finite(self, a): + """Returns 1 if the operand is finite, otherwise returns 0. + + For it to be finite, it must be neither infinite nor a NaN. + + >>> ExtendedContext.is_finite(Decimal('2.50')) + Decimal("1") + >>> ExtendedContext.is_finite(Decimal('-0.3')) + Decimal("1") + >>> ExtendedContext.is_finite(Decimal('0')) + Decimal("1") + >>> ExtendedContext.is_finite(Decimal('Inf')) + Decimal("0") + >>> ExtendedContext.is_finite(Decimal('NaN')) + Decimal("0") + """ + return a.is_finite() + + def is_infinite(self, a): + """Returns 1 if the operand is an Infinite, otherwise returns 0. + + >>> ExtendedContext.is_infinite(Decimal('2.50')) + Decimal("0") + >>> ExtendedContext.is_infinite(Decimal('-Inf')) + Decimal("1") + >>> ExtendedContext.is_infinite(Decimal('NaN')) + Decimal("0") + """ + return a.is_infinite() + + def is_nan(self, a): + """Returns 1 if the operand is qNaN or sNaN, otherwise returns 0. + + >>> ExtendedContext.is_nan(Decimal('2.50')) + Decimal("0") + >>> ExtendedContext.is_nan(Decimal('NaN')) + Decimal("1") + >>> ExtendedContext.is_nan(Decimal('-sNaN')) + Decimal("1") + """ + return a.is_nan() + + def is_normal(self, a): + """Returns 1 if the operand is a normal number, otherwise returns 0. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> c.is_normal(Decimal('2.50')) + Decimal("1") + >>> c.is_normal(Decimal('0.1E-999')) + Decimal("0") + >>> c.is_normal(Decimal('0.00')) + Decimal("0") + >>> c.is_normal(Decimal('-Inf')) + Decimal("0") + >>> c.is_normal(Decimal('NaN')) + Decimal("0") + """ + return a.is_normal(context=self) + + def is_qnan(self, a): + """Returns 1 if the operand is a quiet NaN, otherwise returns 0. + + >>> ExtendedContext.is_qnan(Decimal('2.50')) + Decimal("0") + >>> ExtendedContext.is_qnan(Decimal('NaN')) + Decimal("1") + >>> ExtendedContext.is_qnan(Decimal('sNaN')) + Decimal("0") + """ + return a.is_qnan() + + def is_signed(self, a): + """Returns 1 if the operand is negative, otherwise returns 0. + + >>> ExtendedContext.is_signed(Decimal('2.50')) + Decimal("0") + >>> ExtendedContext.is_signed(Decimal('-12')) + Decimal("1") + >>> ExtendedContext.is_signed(Decimal('-0')) + Decimal("1") + """ + return a.is_signed() + + def is_snan(self, a): + """Returns 1 if the operand is a signaling NaN, otherwise returns 0. + + >>> ExtendedContext.is_snan(Decimal('2.50')) + Decimal("0") + >>> ExtendedContext.is_snan(Decimal('NaN')) + Decimal("0") + >>> ExtendedContext.is_snan(Decimal('sNaN')) + Decimal("1") + """ + return a.is_snan() + + def is_subnormal(self, a): + """Returns 1 if the operand is subnormal, otherwise returns 0. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> c.is_subnormal(Decimal('2.50')) + Decimal("0") + >>> c.is_subnormal(Decimal('0.1E-999')) + Decimal("1") + >>> c.is_subnormal(Decimal('0.00')) + Decimal("0") + >>> c.is_subnormal(Decimal('-Inf')) + Decimal("0") + >>> c.is_subnormal(Decimal('NaN')) + Decimal("0") + """ + return a.is_subnormal(context=self) + + def is_zero(self, a): + """Returns 1 if the operand is a zero, otherwise returns 0. + + >>> ExtendedContext.is_zero(Decimal('0')) + Decimal("1") + >>> ExtendedContext.is_zero(Decimal('2.50')) + Decimal("0") + >>> ExtendedContext.is_zero(Decimal('-0E+2')) + Decimal("1") + """ + return a.is_zero() + + def ln(self, a): + """Returns the natural (base e) logarithm of the operand. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> c.ln(Decimal('0')) + Decimal("-Infinity") + >>> c.ln(Decimal('1.000')) + Decimal("0") + >>> c.ln(Decimal('2.71828183')) + Decimal("1.00000000") + >>> c.ln(Decimal('10')) + Decimal("2.30258509") + >>> c.ln(Decimal('+Infinity')) + Decimal("Infinity") + """ + return a.ln(context=self) + + def log10(self, a): + """Returns the base 10 logarithm of the operand. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> c.log10(Decimal('0')) + Decimal("-Infinity") + >>> c.log10(Decimal('0.001')) + Decimal("-3") + >>> c.log10(Decimal('1.000')) + Decimal("0") + >>> c.log10(Decimal('2')) + Decimal("0.301029996") + >>> c.log10(Decimal('10')) + Decimal("1") + >>> c.log10(Decimal('70')) + Decimal("1.84509804") + >>> c.log10(Decimal('+Infinity')) + Decimal("Infinity") + """ + return a.log10(context=self) + + def logb(self, a): + """ Returns the exponent of the magnitude of the operand's MSD. + + The result is the integer which is the exponent of the magnitude + of the most significant digit of the operand (as though the + operand were truncated to a single digit while maintaining the + value of that digit and without limiting the resulting exponent). + + >>> ExtendedContext.logb(Decimal('250')) + Decimal("2") + >>> ExtendedContext.logb(Decimal('2.50')) + Decimal("0") + >>> ExtendedContext.logb(Decimal('0.03')) + Decimal("-2") + >>> ExtendedContext.logb(Decimal('0')) + Decimal("-Infinity") + """ + return a.logb(context=self) + + def logical_and(self, a, b): + """Applies the logical operation 'and' between each operand's digits. + + The operands must be both logical numbers. + + >>> ExtendedContext.logical_and(Decimal('0'), Decimal('0')) + Decimal("0") + >>> ExtendedContext.logical_and(Decimal('0'), Decimal('1')) + Decimal("0") + >>> ExtendedContext.logical_and(Decimal('1'), Decimal('0')) + Decimal("0") + >>> ExtendedContext.logical_and(Decimal('1'), Decimal('1')) + Decimal("1") + >>> ExtendedContext.logical_and(Decimal('1100'), Decimal('1010')) + Decimal("1000") + >>> ExtendedContext.logical_and(Decimal('1111'), Decimal('10')) + Decimal("10") + """ + return a.logical_and(b, context=self) + + def logical_invert(self, a): + """Invert all the digits in the operand. + + The operand must be a logical number. + + >>> ExtendedContext.logical_invert(Decimal('0')) + Decimal("111111111") + >>> ExtendedContext.logical_invert(Decimal('1')) + Decimal("111111110") + >>> ExtendedContext.logical_invert(Decimal('111111111')) + Decimal("0") + >>> ExtendedContext.logical_invert(Decimal('101010101')) + Decimal("10101010") + """ + return a.logical_invert(context=self) + + def logical_or(self, a, b): + """Applies the logical operation 'or' between each operand's digits. + + The operands must be both logical numbers. + + >>> ExtendedContext.logical_or(Decimal('0'), Decimal('0')) + Decimal("0") + >>> ExtendedContext.logical_or(Decimal('0'), Decimal('1')) + Decimal("1") + >>> ExtendedContext.logical_or(Decimal('1'), Decimal('0')) + Decimal("1") + >>> ExtendedContext.logical_or(Decimal('1'), Decimal('1')) + Decimal("1") + >>> ExtendedContext.logical_or(Decimal('1100'), Decimal('1010')) + Decimal("1110") + >>> ExtendedContext.logical_or(Decimal('1110'), Decimal('10')) + Decimal("1110") + """ + return a.logical_or(b, context=self) + + def logical_xor(self, a, b): + """Applies the logical operation 'xor' between each operand's digits. + + The operands must be both logical numbers. + + >>> ExtendedContext.logical_xor(Decimal('0'), Decimal('0')) + Decimal("0") + >>> ExtendedContext.logical_xor(Decimal('0'), Decimal('1')) + Decimal("1") + >>> ExtendedContext.logical_xor(Decimal('1'), Decimal('0')) + Decimal("1") + >>> ExtendedContext.logical_xor(Decimal('1'), Decimal('1')) + Decimal("0") + >>> ExtendedContext.logical_xor(Decimal('1100'), Decimal('1010')) + Decimal("110") + >>> ExtendedContext.logical_xor(Decimal('1111'), Decimal('10')) + Decimal("1101") + """ + return a.logical_xor(b, context=self) + def max(self, a,b): """max compares two values numerically and returns the maximum. @@ -2531,6 +4140,10 @@ """ return a.max(b, context=self) + def max_mag(self, a, b): + """Compares the values numerically with their sign ignored.""" + return a.max_mag(b, context=self) + def min(self, a,b): """min compares two values numerically and returns the minimum. @@ -2551,6 +4164,10 @@ """ return a.min(b, context=self) + def min_mag(self, a, b): + """Compares the values numerically with their sign ignored.""" + return a.min_mag(b, context=self) + def minus(self, a): """Minus corresponds to unary prefix minus in Python. @@ -2586,6 +4203,68 @@ """ return a.__mul__(b, context=self) + def next_minus(self, a): + """Returns the largest representable number smaller than a. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> ExtendedContext.next_minus(Decimal('1')) + Decimal("0.999999999") + >>> c.next_minus(Decimal('1E-1007')) + Decimal("0E-1007") + >>> ExtendedContext.next_minus(Decimal('-1.00000003')) + Decimal("-1.00000004") + >>> c.next_minus(Decimal('Infinity')) + Decimal("9.99999999E+999") + """ + return a.next_minus(context=self) + + def next_plus(self, a): + """Returns the smallest representable number larger than a. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> ExtendedContext.next_plus(Decimal('1')) + Decimal("1.00000001") + >>> c.next_plus(Decimal('-1E-1007')) + Decimal("-0E-1007") + >>> ExtendedContext.next_plus(Decimal('-1.00000003')) + Decimal("-1.00000002") + >>> c.next_plus(Decimal('-Infinity')) + Decimal("-9.99999999E+999") + """ + return a.next_plus(context=self) + + def next_toward(self, a, b): + """Returns the number closest to a, in direction towards b. + + The result is the closest representable number from the first + operand (but not the first operand) that is in the direction + towards the second operand, unless the operands have the same + value. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> c.next_toward(Decimal('1'), Decimal('2')) + Decimal("1.00000001") + >>> c.next_toward(Decimal('-1E-1007'), Decimal('1')) + Decimal("-0E-1007") + >>> c.next_toward(Decimal('-1.00000003'), Decimal('0')) + Decimal("-1.00000002") + >>> c.next_toward(Decimal('1'), Decimal('0')) + Decimal("0.999999999") + >>> c.next_toward(Decimal('1E-1007'), Decimal('-100')) + Decimal("0E-1007") + >>> c.next_toward(Decimal('-1.00000003'), Decimal('-10')) + Decimal("-1.00000004") + >>> c.next_toward(Decimal('0.00'), Decimal('-0.0000')) + Decimal("-0.00") + """ + return a.next_toward(b, context=self) + def normalize(self, a): """normalize reduces an operand to its simplest form. @@ -2607,6 +4286,53 @@ """ return a.normalize(context=self) + def number_class(self, a): + """Returns an indication of the class of the operand. + + The class is one of the following strings: + -sNaN + -NaN + -Infinity + -Normal + -Subnormal + -Zero + +Zero + +Subnormal + +Normal + +Infinity + + >>> c = Context(ExtendedContext) + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> c.number_class(Decimal('Infinity')) + '+Infinity' + >>> c.number_class(Decimal('1E-10')) + '+Normal' + >>> c.number_class(Decimal('2.50')) + '+Normal' + >>> c.number_class(Decimal('0.1E-999')) + '+Subnormal' + >>> c.number_class(Decimal('0')) + '+Zero' + >>> c.number_class(Decimal('-0')) + '-Zero' + >>> c.number_class(Decimal('-0.1E-999')) + '-Subnormal' + >>> c.number_class(Decimal('-1E-10')) + '-Normal' + >>> c.number_class(Decimal('-2.50')) + '-Normal' + >>> c.number_class(Decimal('-Infinity')) + '-Infinity' + >>> c.number_class(Decimal('NaN')) + 'NaN' + >>> c.number_class(Decimal('-NaN')) + 'NaN' + >>> c.number_class(Decimal('sNaN')) + 'sNaN' + """ + return a.number_class(context=self) + def plus(self, a): """Plus corresponds to unary prefix plus in Python. @@ -2624,49 +4350,69 @@ def power(self, a, b, modulo=None): """Raises a to the power of b, to modulo if given. - The right-hand operand must be a whole number whose integer part (after - any exponent has been applied) has no more than 9 digits and whose - fractional part (if any) is all zeros before any rounding. The operand - may be positive, negative, or zero; if negative, the absolute value of - the power is used, and the left-hand operand is inverted (divided into - 1) before use. - - If the increased precision needed for the intermediate calculations - exceeds the capabilities of the implementation then an Invalid - operation condition is raised. - - If, when raising to a negative power, an underflow occurs during the - division into 1, the operation is not halted at that point but - continues. - - >>> ExtendedContext.power(Decimal('2'), Decimal('3')) + With two arguments, compute a**b. If a is negative then b + must be integral. The result will be inexact unless b is + integral and the result is finite and can be expressed exactly + in 'precision' digits. + + With three arguments, compute (a**b) % modulo. For the + three argument form, the following restrictions on the + arguments hold: + + - all three arguments must be integral + - b must be nonnegative + - at least one of a or b must be nonzero + - modulo must be nonzero and have at most 'precision' digits + + The result of pow(a, b, modulo) is identical to the result + that would be obtained by computing (a**b) % modulo with + unbounded precision, but is computed more efficiently. It is + always exact. + + >>> c = ExtendedContext.copy() + >>> c.Emin = -999 + >>> c.Emax = 999 + >>> c.power(Decimal('2'), Decimal('3')) Decimal("8") - >>> ExtendedContext.power(Decimal('2'), Decimal('-3')) + >>> c.power(Decimal('-2'), Decimal('3')) + Decimal("-8") + >>> c.power(Decimal('2'), Decimal('-3')) Decimal("0.125") - >>> ExtendedContext.power(Decimal('1.7'), Decimal('8')) + >>> c.power(Decimal('1.7'), Decimal('8')) Decimal("69.7575744") - >>> ExtendedContext.power(Decimal('Infinity'), Decimal('-2')) + >>> c.power(Decimal('10'), Decimal('0.301029996')) + Decimal("2.00000000") + >>> c.power(Decimal('Infinity'), Decimal('-1')) Decimal("0") - >>> ExtendedContext.power(Decimal('Infinity'), Decimal('-1')) - Decimal("0") - >>> ExtendedContext.power(Decimal('Infinity'), Decimal('0')) + >>> c.power(Decimal('Infinity'), Decimal('0')) Decimal("1") - >>> ExtendedContext.power(Decimal('Infinity'), Decimal('1')) - Decimal("Infinity") - >>> ExtendedContext.power(Decimal('Infinity'), Decimal('2')) + >>> c.power(Decimal('Infinity'), Decimal('1')) Decimal("Infinity") - >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('-2')) - Decimal("0") - >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('-1')) + >>> c.power(Decimal('-Infinity'), Decimal('-1')) Decimal("-0") - >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('0')) + >>> c.power(Decimal('-Infinity'), Decimal('0')) Decimal("1") - >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('1')) + >>> c.power(Decimal('-Infinity'), Decimal('1')) Decimal("-Infinity") - >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('2')) + >>> c.power(Decimal('-Infinity'), Decimal('2')) Decimal("Infinity") - >>> ExtendedContext.power(Decimal('0'), Decimal('0')) + >>> c.power(Decimal('0'), Decimal('0')) Decimal("NaN") + + >>> c.power(Decimal('3'), Decimal('7'), Decimal('16')) + Decimal("11") + >>> c.power(Decimal('-3'), Decimal('7'), Decimal('16')) + Decimal("-11") + >>> c.power(Decimal('-3'), Decimal('8'), Decimal('16')) + Decimal("1") + >>> c.power(Decimal('3'), Decimal('7'), Decimal('-16')) + Decimal("11") + >>> c.power(Decimal('23E12345'), Decimal('67E189'), Decimal('123456789')) + Decimal("11729830") + >>> c.power(Decimal('-0'), Decimal('17'), Decimal('1729')) + Decimal("-0") + >>> c.power(Decimal('-23'), Decimal('0'), Decimal('65537')) + Decimal("1") """ return a.__pow__(b, modulo, context=self) @@ -2721,6 +4467,14 @@ """ return a.quantize(b, context=self) + def radix(self): + """Just returns 10, as this is Decimal, :) + + >>> ExtendedContext.radix() + Decimal("10") + """ + return Decimal(10) + def remainder(self, a, b): """Returns the remainder from integer division. @@ -2775,6 +4529,28 @@ """ return a.remainder_near(b, context=self) + def rotate(self, a, b): + """Returns a rotated copy of a, b times. + + The coefficient of the result is a rotated copy of the digits in + the coefficient of the first operand. The number of places of + rotation is taken from the absolute value of the second operand, + with the rotation being to the left if the second operand is + positive or to the right otherwise. + + >>> ExtendedContext.rotate(Decimal('34'), Decimal('8')) + Decimal("400000003") + >>> ExtendedContext.rotate(Decimal('12'), Decimal('9')) + Decimal("12") + >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('-2')) + Decimal("891234567") + >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('0')) + Decimal("123456789") + >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('+2')) + Decimal("345678912") + """ + return a.rotate(b, context=self) + def same_quantum(self, a, b): """Returns True if the two operands have the same exponent. @@ -2792,6 +4568,41 @@ """ return a.same_quantum(b) + def scaleb (self, a, b): + """Returns the first operand after adding the second value its exp. + + >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('-2')) + Decimal("0.0750") + >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('0')) + Decimal("7.50") + >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('3')) + Decimal("7.50E+3") + """ + return a.scaleb (b, context=self) + + def shift(self, a, b): + """Returns a shifted copy of a, b times. + + The coefficient of the result is a shifted copy of the digits + in the coefficient of the first operand. The number of places + to shift is taken from the absolute value of the second operand, + with the shift being to the left if the second operand is + positive or to the right otherwise. Digits shifted into the + coefficient are zeros. + + >>> ExtendedContext.shift(Decimal('34'), Decimal('8')) + Decimal("400000000") + >>> ExtendedContext.shift(Decimal('12'), Decimal('9')) + Decimal("0") + >>> ExtendedContext.shift(Decimal('123456789'), Decimal('-2')) + Decimal("1234567") + >>> ExtendedContext.shift(Decimal('123456789'), Decimal('0')) + Decimal("123456789") + >>> ExtendedContext.shift(Decimal('123456789'), Decimal('+2')) + Decimal("345678900") + """ + return a.shift(b, context=self) + def sqrt(self, a): """Square root of a non-negative number to context precision. @@ -2847,7 +4658,36 @@ """ return a.__str__(context=self) - def to_integral(self, a): + def to_integral_exact(self, a): + """Rounds to an integer. + + When the operand has a negative exponent, the result is the same + as using the quantize() operation using the given operand as the + left-hand-operand, 1E+0 as the right-hand-operand, and the precision + of the operand as the precision setting; Inexact and Rounded flags + are allowed in this operation. The rounding mode is taken from the + context. + + >>> ExtendedContext.to_integral_exact(Decimal('2.1')) + Decimal("2") + >>> ExtendedContext.to_integral_exact(Decimal('100')) + Decimal("100") + >>> ExtendedContext.to_integral_exact(Decimal('100.0')) + Decimal("100") + >>> ExtendedContext.to_integral_exact(Decimal('101.5')) + Decimal("102") + >>> ExtendedContext.to_integral_exact(Decimal('-101.5')) + Decimal("-102") + >>> ExtendedContext.to_integral_exact(Decimal('10E+5')) + Decimal("1.0E+6") + >>> ExtendedContext.to_integral_exact(Decimal('7.89E+77')) + Decimal("7.89E+77") + >>> ExtendedContext.to_integral_exact(Decimal('-Inf')) + Decimal("-Infinity") + """ + return a.to_integral_exact(context=self) + + def to_integral_value(self, a): """Rounds to an integer. When the operand has a negative exponent, the result is the same @@ -2856,24 +4696,27 @@ of the operand as the precision setting, except that no flags will be set. The rounding mode is taken from the context. - >>> ExtendedContext.to_integral(Decimal('2.1')) + >>> ExtendedContext.to_integral_value(Decimal('2.1')) Decimal("2") - >>> ExtendedContext.to_integral(Decimal('100')) + >>> ExtendedContext.to_integral_value(Decimal('100')) Decimal("100") - >>> ExtendedContext.to_integral(Decimal('100.0')) + >>> ExtendedContext.to_integral_value(Decimal('100.0')) Decimal("100") - >>> ExtendedContext.to_integral(Decimal('101.5')) + >>> ExtendedContext.to_integral_value(Decimal('101.5')) Decimal("102") - >>> ExtendedContext.to_integral(Decimal('-101.5')) + >>> ExtendedContext.to_integral_value(Decimal('-101.5')) Decimal("-102") - >>> ExtendedContext.to_integral(Decimal('10E+5')) + >>> ExtendedContext.to_integral_value(Decimal('10E+5')) Decimal("1.0E+6") - >>> ExtendedContext.to_integral(Decimal('7.89E+77')) + >>> ExtendedContext.to_integral_value(Decimal('7.89E+77')) Decimal("7.89E+77") - >>> ExtendedContext.to_integral(Decimal('-Inf')) + >>> ExtendedContext.to_integral_value(Decimal('-Inf')) Decimal("-Infinity") """ - return a.to_integral(context=self) + return a.to_integral_value(context=self) + + # the method name changed, but we provide also the old one, for compatibility + to_integral = to_integral_value class _WorkRep(object): __slots__ = ('sign','int','exp') @@ -2911,39 +4754,28 @@ Done during addition. """ - # Yes, the exponent is a long, but the difference between exponents - # must be an int-- otherwise you'd get a big memory problem. - numdigits = int(op1.exp - op2.exp) - if numdigits < 0: - numdigits = -numdigits + if op1.exp < op2.exp: tmp = op2 other = op1 else: tmp = op1 other = op2 - - if shouldround and numdigits > prec + 1: - # Big difference in exponents - check the adjusted exponents + # Let exp = min(tmp.exp - 1, tmp.adjusted() - precision - 1). + # Then adding 10**exp to tmp has the same effect (after rounding) + # as adding any positive quantity smaller than 10**exp; similarly + # for subtraction. So if other is smaller than 10**exp we replace + # it with 10**exp. This avoids tmp.exp - other.exp getting too large. + if shouldround: tmp_len = len(str(tmp.int)) other_len = len(str(other.int)) - if numdigits > (other_len + prec + 1 - tmp_len): - # If the difference in adjusted exps is > prec+1, we know - # other is insignificant, so might as well put a 1 after the - # precision (since this is only for addition). Also stops - # use of massive longs. - - extend = prec + 2 - tmp_len - if extend <= 0: - extend = 1 - tmp.int *= 10 ** extend - tmp.exp -= extend + exp = tmp.exp + min(-1, tmp_len - prec - 2) + if other_len + other.exp - 1 < exp: other.int = 1 - other.exp = tmp.exp - return op1, op2 + other.exp = exp - tmp.int *= 10 ** numdigits - tmp.exp -= numdigits + tmp.int *= 10 ** (tmp.exp - other.exp) + tmp.exp = other.exp return op1, op2 def _adjust_coefficients(op1, op2): @@ -2968,9 +4800,315 @@ return op1, op2, adjust + +##### Integer arithmetic functions used by ln, log10, exp and __pow__ ##### + +# This function from Tim Peters was taken from here: +# http://mail.python.org/pipermail/python-list/1999-July/007758.html +# The correction being in the function definition is for speed, and +# the whole function is not resolved with math.log because of avoiding +# the use of floats. +def _nbits(n, correction = { + '0': 4, '1': 3, '2': 2, '3': 2, + '4': 1, '5': 1, '6': 1, '7': 1, + '8': 0, '9': 0, 'a': 0, 'b': 0, + 'c': 0, 'd': 0, 'e': 0, 'f': 0}): + """Number of bits in binary representation of the positive integer n, + or 0 if n == 0. + """ + if n < 0: + raise ValueError("The argument to _nbits should be nonnegative.") + hex_n = "%x" % n + return 4*len(hex_n) - correction[hex_n[0]] + +def _sqrt_nearest(n, a): + """Closest integer to the square root of the positive integer n. a is + an initial approximation to the square root. Any positive integer + will do for a, but the closer a is to the square root of n the + faster convergence will be. + + """ + if n <= 0 or a <= 0: + raise ValueError("Both arguments to _sqrt_nearest should be positive.") + + b=0 + while a != b: + b, a = a, a--n//a>>1 + return a + +def _rshift_nearest(x, shift): + """Given an integer x and a nonnegative integer shift, return closest + integer to x / 2**shift; use round-to-even in case of a tie. + + """ + b, q = 1L << shift, x >> shift + return q + (2*(x & (b-1)) + (q&1) > b) + +def _div_nearest(a, b): + """Closest integer to a/b, a and b positive integers; rounds to even + in the case of a tie. + + """ + q, r = divmod(a, b) + return q + (2*r + (q&1) > b) + +def _ilog(x, M, L = 8): + """Integer approximation to M*log(x/M), with absolute error boundable + in terms only of x/M. + + Given positive integers x and M, return an integer approximation to + M * log(x/M). For L = 8 and 0.1 <= x/M <= 10 the difference + between the approximation and the exact result is at most 22. For + L = 8 and 1.0 <= x/M <= 10.0 the difference is at most 15. In + both cases these are upper bounds on the error; it will usually be + much smaller.""" + + # The basic algorithm is the following: let log1p be the function + # log1p(x) = log(1+x). Then log(x/M) = log1p((x-M)/M). We use + # the reduction + # + # log1p(y) = 2*log1p(y/(1+sqrt(1+y))) + # + # repeatedly until the argument to log1p is small (< 2**-L in + # absolute value). For small y we can use the Taylor series + # expansion + # + # log1p(y) ~ y - y**2/2 + y**3/3 - ... - (-y)**T/T + # + # truncating at T such that y**T is small enough. The whole + # computation is carried out in a form of fixed-point arithmetic, + # with a real number z being represented by an integer + # approximation to z*M. To avoid loss of precision, the y below + # is actually an integer approximation to 2**R*y*M, where R is the + # number of reductions performed so far. + + y = x-M + # argument reduction; R = number of reductions performed + R = 0 + while (R <= L and long(abs(y)) << L-R >= M or + R > L and abs(y) >> R-L >= M): + y = _div_nearest(long(M*y) << 1, + M + _sqrt_nearest(M*(M+_rshift_nearest(y, R)), M)) + R += 1 + + # Taylor series with T terms + T = -int(-10*len(str(M))//(3*L)) + yshift = _rshift_nearest(y, R) + w = _div_nearest(M, T) + for k in xrange(T-1, 0, -1): + w = _div_nearest(M, k) - _div_nearest(yshift*w, M) + + return _div_nearest(w*y, M) + +def _dlog10(c, e, p): + """Given integers c, e and p with c > 0, p >= 0, compute an integer + approximation to 10**p * log10(c*10**e), with an absolute error of + at most 1. Assumes that c*10**e is not exactly 1.""" + + # increase precision by 2; compensate for this by dividing + # final result by 100 + p += 2 + + # write c*10**e as d*10**f with either: + # f >= 0 and 1 <= d <= 10, or + # f <= 0 and 0.1 <= d <= 1. + # Thus for c*10**e close to 1, f = 0 + l = len(str(c)) + f = e+l - (e+l >= 1) + + if p > 0: + M = 10**p + k = e+p-f + if k >= 0: + c *= 10**k + else: + c = _div_nearest(c, 10**-k) + + log_d = _ilog(c, M) # error < 5 + 22 = 27 + log_10 = _ilog(10*M, M) # error < 15 + log_d = _div_nearest(log_d*M, log_10) + log_tenpower = f*M # exact + else: + log_d = 0 # error < 2.31 + log_tenpower = div_nearest(f, 10**-p) # error < 0.5 + + return _div_nearest(log_tenpower+log_d, 100) + +def _dlog(c, e, p): + """Given integers c, e and p with c > 0, compute an integer + approximation to 10**p * log(c*10**e), with an absolute error of + at most 1. Assumes that c*10**e is not exactly 1.""" + + # Increase precision by 2. The precision increase is compensated + # for at the end with a division by 100. + p += 2 + + # rewrite c*10**e as d*10**f with either f >= 0 and 1 <= d <= 10, + # or f <= 0 and 0.1 <= d <= 1. Then we can compute 10**p * log(c*10**e) + # as 10**p * log(d) + 10**p*f * log(10). + l = len(str(c)) + f = e+l - (e+l >= 1) + + # compute approximation to 10**p*log(d), with error < 27 + if p > 0: + k = e+p-f + if k >= 0: + c *= 10**k + else: + c = _div_nearest(c, 10**-k) # error of <= 0.5 in c + + # _ilog magnifies existing error in c by a factor of at most 10 + log_d = _ilog(c, 10**p) # error < 5 + 22 = 27 + else: + # p <= 0: just approximate the whole thing by 0; error < 2.31 + log_d = 0 + + # compute approximation to 10**p*f*log(10), with error < 17 + if f: + sign_f = [-1, 1][f > 0] + if p >= 0: + M = 10**p * abs(f) + else: + M = _div_nearest(abs(f), 10**-p) # M = 10**p*|f|, error <= 0.5 + + if M: + f_log_ten = sign_f*_ilog(10*M, M) # M*log(10), error <= 1.2 + 15 < 17 + else: + f_log_ten = 0 + else: + f_log_ten = 0 + + # error in sum < 17+27 = 44; error after division < 0.44 + 0.5 < 1 + return _div_nearest(f_log_ten + log_d, 100) + +def _iexp(x, M, L=8): + """Given integers x and M, M > 0, such that x/M is small in absolute + value, compute an integer approximation to M*exp(x/M). For 0 <= + x/M <= 2.4, the absolute error in the result is bounded by 60 (and + is usually much smaller).""" + + # Algorithm: to compute exp(z) for a real number z, first divide z + # by a suitable power R of 2 so that |z/2**R| < 2**-L. Then + # compute expm1(z/2**R) = exp(z/2**R) - 1 using the usual Taylor + # series + # + # expm1(x) = x + x**2/2! + x**3/3! + ... + # + # Now use the identity + # + # expm1(2x) = expm1(x)*(expm1(x)+2) + # + # R times to compute the sequence expm1(z/2**R), + # expm1(z/2**(R-1)), ... , exp(z/2), exp(z). + + # Find R such that x/2**R/M <= 2**-L + R = _nbits((long(x)< M + T = -int(-10*len(str(M))//(3*L)) + y = _div_nearest(x, T) + Mshift = long(M)<= 0: + cshift = c*10**shift + else: + cshift = c//10**-shift + quot, rem = divmod(cshift, log10) + + # reduce remainder back to original precision + rem = _div_nearest(rem, 10**extra) + + # error in result of _iexp < 120; error after division < 0.62 + return _div_nearest(_iexp(rem, 10**p), 1000), quot - p + 3 + +def _dpower(xc, xe, yc, ye, p): + """Given integers xc, xe, yc and ye representing Decimals x = xc*10**xe and + y = yc*10**ye, compute x**y. Returns a pair of integers (c, e) such that: + + 10**(p-1) <= c <= 10**p, and + (c-1)*10**e < x**y < (c+1)*10**e + + in other words, c*10**e is an approximation to x**y with p digits + of precision, and with an error in c of at most 1. (This is + almost, but not quite, the same as the error being < 1ulp: when c + == 10**(p-1) we can only guarantee error < 10ulp.) + + We assume that: x is positive and not equal to 1, and y is nonzero. + """ + + # Find b such that 10**(b-1) <= |y| <= 10**b + b = len(str(abs(yc))) + ye + + # log(x) = lxc*10**(-p-b-1), to p+b+1 places after the decimal point + lxc = _dlog(xc, xe, p+b+1) + + # compute product y*log(x) = yc*lxc*10**(-p-b-1+ye) = pc*10**(-p-1) + shift = ye-b + if shift >= 0: + pc = lxc*yc*10**shift + else: + pc = _div_nearest(lxc*yc, 10**-shift) + + if pc == 0: + # we prefer a result that isn't exactly 1; this makes it + # easier to compute a correctly rounded result in __pow__ + if ((len(str(xc)) + xe >= 1) == (yc > 0)): # if x**y > 1: + coeff, exp = 10**(p-1)+1, 1-p + else: + coeff, exp = 10**p-1, -p + else: + coeff, exp = _dexp(pc, -(p+1), p+1) + coeff = _div_nearest(coeff, 10) + exp += 1 + + return coeff, exp + +def _log10_lb(c, correction = { + '1': 100, '2': 70, '3': 53, '4': 40, '5': 31, + '6': 23, '7': 16, '8': 10, '9': 5}): + """Compute a lower bound for 100*log10(c) for a positive integer c.""" + if c <= 0: + raise ValueError("The argument to _log10_lb should be nonnegative.") + str_c = str(c) + return 100*len(str_c) - correction[str_c[0]] + ##### Helper Functions #################################################### -def _convert_other(other): +def _convert_other(other, raiseit=False): """Convert other to Decimal. Verifies that it's ok to use in an implicit construction. @@ -2979,6 +5117,8 @@ return other if isinstance(other, (int, long)): return Decimal(other) + if raiseit: + raise TypeError("Unable to convert %s to Decimal" % other) return NotImplemented _infinity_map = { @@ -3066,12 +5206,16 @@ # Reusable defaults Inf = Decimal('Inf') negInf = Decimal('-Inf') +NaN = Decimal('NaN') +Dec_0 = Decimal(0) +Dec_p1 = Decimal(1) +Dec_n1 = Decimal(-1) +Dec_p2 = Decimal(2) +Dec_n2 = Decimal(-2) # Infsign[sign] is infinity w/ that sign Infsign = (Inf, negInf) -NaN = Decimal('NaN') - ##### crud for parsing strings ############################################# import re Modified: python/trunk/Lib/test/decimaltestdata/abs.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/abs.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/abs.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- abs.decTest -- decimal absolute value -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- This set of tests primarily tests the existence of the operator. -- Additon, subtraction, rounding, and more overflows are tested @@ -106,9 +106,9 @@ absx215 abs 0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow absx216 abs 0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow absx217 abs 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow -absx218 abs 0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -absx219 abs 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -absx220 abs 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow +absx218 abs 0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +absx219 abs 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +absx220 abs 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped absx230 abs -1.00E-999 -> 1.00E-999 absx231 abs -0.1E-999 -> 1E-1000 Subnormal @@ -119,9 +119,9 @@ absx235 abs -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow absx236 abs -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow absx237 abs -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow -absx238 abs -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -absx239 abs -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -absx240 abs -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow +absx238 abs -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +absx239 abs -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +absx240 abs -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped -- long operand tests maxexponent: 999 Modified: python/trunk/Lib/test/decimaltestdata/add.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/add.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/add.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------- +------/cancell---------------------------------------------------------- -- add.decTest -- decimal addition -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 precision: 9 rounding: half_up @@ -86,6 +86,7 @@ addx049 add '10000e+9' '7000' -> '10000000007000' addx050 add '10000e+9' '70000' -> '10000000070000' addx051 add '10000e+9' '700000' -> '10000000700000' +addx052 add '10000e+9' '7000000' -> '10000007000000' -- examples from decarith addx053 add '12' '7.00' -> '19.00' @@ -216,7 +217,7 @@ addx167 add '1.11' '7E+12' -> '7000000000001.11' addx168 add '-1' '7E+12' -> '6999999999999' --- 123456789012345 123456789012345 1 23456789012345 +-- 123456789012345 123456789012345 1 23456789012345 addx170 add '0.444444444444444' '0.555555555555563' -> '1.00000000000001' Inexact Rounded addx171 add '0.444444444444444' '0.555555555555562' -> '1.00000000000001' Inexact Rounded addx172 add '0.444444444444444' '0.555555555555561' -> '1.00000000000001' Inexact Rounded @@ -396,6 +397,7 @@ addx361 add 0E+50 10000E+1 -> 1.0000E+5 addx362 add 10000E+1 0E-50 -> 100000.0 Rounded addx363 add 10000E+1 10000E-50 -> 100000.0 Rounded Inexact +addx364 add 9.999999E+92 -9.999999E+92 -> 0E+86 -- a curiosity from JSR 13 testing rounding: half_down @@ -568,7 +570,7 @@ rounding: down addx561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded addx562 add 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded --- and using decimal64 bounds... +-- and using decimal64 bounds (see also ddadd.decTest) precision: 16 maxExponent: +384 minExponent: -383 @@ -576,6 +578,7 @@ addx563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded addx564 add 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded + -- some more residue effects with extreme rounding precision: 9 rounding: half_up @@ -955,26 +958,26 @@ addx912 add 0.10E-999 0 -> 1.0E-1000 Subnormal addx913 add 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded addx914 add 0.01E-999 0 -> 1E-1001 Subnormal --- next is rounded to Emin +-- next is rounded to Nmin addx915 add 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow addx916 add 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow addx917 add 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow -addx918 add 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow -addx919 add 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow -addx920 add 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow +addx918 add 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +addx919 add 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +addx920 add 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped addx930 add -1.00E-999 0 -> -1.00E-999 addx931 add -0.1E-999 0 -> -1E-1000 Subnormal addx932 add -0.10E-999 0 -> -1.0E-1000 Subnormal addx933 add -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded addx934 add -0.01E-999 0 -> -1E-1001 Subnormal --- next is rounded to Emin +-- next is rounded to Nmin addx935 add -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow addx936 add -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow addx937 add -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow -addx938 add -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow -addx939 add -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow -addx940 add -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow +addx938 add -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +addx939 add -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +addx940 add -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped -- some non-zero subnormal adds addx950 add 1.00E-999 0.1E-999 -> 1.10E-999 @@ -995,12 +998,43 @@ addx964 add 0.100E-999 -0.1E-999 -> 0E-1001 Clamped addx965 add 0.01E-999 -0.1E-999 -> -9E-1001 Subnormal addx966 add 0.999E-999 -0.1E-999 -> 9.0E-1000 Inexact Rounded Subnormal Underflow -addx967 add 0.099E-999 -0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow +addx967 add 0.099E-999 -0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped addx968 add 0.009E-999 -0.1E-999 -> -9E-1001 Inexact Rounded Subnormal Underflow addx969 add 0.001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow addx970 add 0.0009E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow addx971 add 0.0001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow +-- some 'real' numbers +maxExponent: 384 +minExponent: -383 +precision: 8 +addx566 add 99999061735E-394 0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal +precision: 7 +addx567 add 99999061735E-394 0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal +precision: 6 +addx568 add 99999061735E-394 0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal + +-- now the case where we can get underflow but the result is normal +-- [note this can't happen if the operands are also bounded, as we +-- cannot represent 1E-399, for example] +precision: 16 +rounding: half_up +maxExponent: 384 +minExponent: -383 + +addx571 add 1E-383 0 -> 1E-383 +addx572 add 1E-384 0 -> 1E-384 Subnormal +addx573 add 1E-383 1E-384 -> 1.1E-383 +addx574 subtract 1E-383 1E-384 -> 9E-384 Subnormal + +-- Here we explore the boundary of rounding a subnormal to Nmin +addx575 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal +addx576 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal +addx577 subtract 1E-383 1E-399 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +addx578 subtract 1E-383 1E-400 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +addx579 subtract 1E-383 1E-401 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +addx580 subtract 1E-383 1E-402 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded + -- check overflow edge case precision: 7 rounding: half_up @@ -1106,21 +1140,1565 @@ addx1139 add 1000E-101 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow addx1140 add 100E-101 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow addx1141 add 10E-101 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow -addx1142 add 1E-101 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow -addx1143 add 0E-101 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow -addx1144 add 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow +addx1142 add 1E-101 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped +addx1143 add 0E-101 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped +addx1144 add 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped addx1151 add 10000E-102 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow addx1152 add 1000E-102 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow addx1153 add 100E-102 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow -addx1154 add 10E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow -addx1155 add 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow -addx1156 add 0E-102 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow -addx1157 add 1E-103 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow +addx1154 add 10E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped +addx1155 add 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped +addx1156 add 0E-102 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped +addx1157 add 1E-103 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped + +addx1160 add 100E-105 -1e-101 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped +addx1161 add 100E-105 -1e-201 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped + +-- tests based on Gunnar Degnbol's edge case +precision: 15 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +addx1200 add 1E15 -0.5 -> 1.00000000000000E+15 Inexact Rounded +addx1201 add 1E15 -0.50 -> 1.00000000000000E+15 Inexact Rounded +addx1210 add 1E15 -0.51 -> 999999999999999 Inexact Rounded +addx1211 add 1E15 -0.501 -> 999999999999999 Inexact Rounded +addx1212 add 1E15 -0.5001 -> 999999999999999 Inexact Rounded +addx1213 add 1E15 -0.50001 -> 999999999999999 Inexact Rounded +addx1214 add 1E15 -0.500001 -> 999999999999999 Inexact Rounded +addx1215 add 1E15 -0.5000001 -> 999999999999999 Inexact Rounded +addx1216 add 1E15 -0.50000001 -> 999999999999999 Inexact Rounded +addx1217 add 1E15 -0.500000001 -> 999999999999999 Inexact Rounded +addx1218 add 1E15 -0.5000000001 -> 999999999999999 Inexact Rounded +addx1219 add 1E15 -0.50000000001 -> 999999999999999 Inexact Rounded +addx1220 add 1E15 -0.500000000001 -> 999999999999999 Inexact Rounded +addx1221 add 1E15 -0.5000000000001 -> 999999999999999 Inexact Rounded +addx1222 add 1E15 -0.50000000000001 -> 999999999999999 Inexact Rounded +addx1223 add 1E15 -0.500000000000001 -> 999999999999999 Inexact Rounded +addx1224 add 1E15 -0.5000000000000001 -> 999999999999999 Inexact Rounded +addx1225 add 1E15 -0.5000000000000000 -> 1.00000000000000E+15 Inexact Rounded +addx1230 add 1E15 -5000000.000000001 -> 999999995000000 Inexact Rounded + +precision: 16 + +addx1300 add 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded +addx1310 add 1E16 -0.51 -> 9999999999999999 Inexact Rounded +addx1311 add 1E16 -0.501 -> 9999999999999999 Inexact Rounded +addx1312 add 1E16 -0.5001 -> 9999999999999999 Inexact Rounded +addx1313 add 1E16 -0.50001 -> 9999999999999999 Inexact Rounded +addx1314 add 1E16 -0.500001 -> 9999999999999999 Inexact Rounded +addx1315 add 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded +addx1316 add 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded +addx1317 add 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded +addx1318 add 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded +addx1319 add 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded +addx1320 add 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded +addx1321 add 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded +addx1322 add 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded +addx1323 add 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded +addx1324 add 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded +addx1325 add 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1326 add 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1327 add 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1328 add 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1329 add 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1330 add 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1331 add 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1332 add 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded +addx1333 add 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded +addx1334 add 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded +addx1335 add 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded +addx1336 add 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded +addx1337 add 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded +addx1338 add 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded +addx1339 add 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded + +addx1340 add 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded +addx1341 add 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded + +addx1349 add 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded +addx1350 add 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded +addx1351 add 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded +addx1352 add 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded +addx1353 add 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded +addx1354 add 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded +addx1355 add 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded +addx1356 add 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded +addx1357 add 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded +addx1358 add 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded +addx1359 add 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded +addx1360 add 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded +addx1361 add 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded +addx1362 add 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded +addx1363 add 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded +addx1364 add 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded +addx1365 add 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1367 add 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1368 add 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1369 add 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1370 add 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1371 add 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1372 add 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +addx1373 add 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded +addx1374 add 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded +addx1375 add 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded +addx1376 add 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded +addx1377 add 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded +addx1378 add 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded +addx1379 add 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded +addx1380 add 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded +addx1381 add 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded +addx1382 add 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded +addx1383 add 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded +addx1384 add 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded +addx1385 add 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded +addx1386 add 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded +addx1387 add 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded +addx1388 add 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded +addx1389 add 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded +addx1390 add 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded +addx1391 add 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded +addx1392 add 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded +addx1393 add 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded +addx1394 add 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded +addx1395 add 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded +addx1396 add 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded + +-- More GD edge cases, where difference between the unadjusted +-- exponents is larger than the maximum precision and one side is 0 +precision: 15 +rounding: half_up +maxExponent: 384 +minexponent: -383 + +addx1400 add 0 1.23456789012345 -> 1.23456789012345 +addx1401 add 0 1.23456789012345E-1 -> 0.123456789012345 +addx1402 add 0 1.23456789012345E-2 -> 0.0123456789012345 +addx1403 add 0 1.23456789012345E-3 -> 0.00123456789012345 +addx1404 add 0 1.23456789012345E-4 -> 0.000123456789012345 +addx1405 add 0 1.23456789012345E-5 -> 0.0000123456789012345 +addx1406 add 0 1.23456789012345E-6 -> 0.00000123456789012345 +addx1407 add 0 1.23456789012345E-7 -> 1.23456789012345E-7 +addx1408 add 0 1.23456789012345E-8 -> 1.23456789012345E-8 +addx1409 add 0 1.23456789012345E-9 -> 1.23456789012345E-9 +addx1410 add 0 1.23456789012345E-10 -> 1.23456789012345E-10 +addx1411 add 0 1.23456789012345E-11 -> 1.23456789012345E-11 +addx1412 add 0 1.23456789012345E-12 -> 1.23456789012345E-12 +addx1413 add 0 1.23456789012345E-13 -> 1.23456789012345E-13 +addx1414 add 0 1.23456789012345E-14 -> 1.23456789012345E-14 +addx1415 add 0 1.23456789012345E-15 -> 1.23456789012345E-15 +addx1416 add 0 1.23456789012345E-16 -> 1.23456789012345E-16 +addx1417 add 0 1.23456789012345E-17 -> 1.23456789012345E-17 +addx1418 add 0 1.23456789012345E-18 -> 1.23456789012345E-18 +addx1419 add 0 1.23456789012345E-19 -> 1.23456789012345E-19 + +-- same, precision 16.. +precision: 16 +addx1420 add 0 1.123456789012345 -> 1.123456789012345 +addx1421 add 0 1.123456789012345E-1 -> 0.1123456789012345 +addx1422 add 0 1.123456789012345E-2 -> 0.01123456789012345 +addx1423 add 0 1.123456789012345E-3 -> 0.001123456789012345 +addx1424 add 0 1.123456789012345E-4 -> 0.0001123456789012345 +addx1425 add 0 1.123456789012345E-5 -> 0.00001123456789012345 +addx1426 add 0 1.123456789012345E-6 -> 0.000001123456789012345 +addx1427 add 0 1.123456789012345E-7 -> 1.123456789012345E-7 +addx1428 add 0 1.123456789012345E-8 -> 1.123456789012345E-8 +addx1429 add 0 1.123456789012345E-9 -> 1.123456789012345E-9 +addx1430 add 0 1.123456789012345E-10 -> 1.123456789012345E-10 +addx1431 add 0 1.123456789012345E-11 -> 1.123456789012345E-11 +addx1432 add 0 1.123456789012345E-12 -> 1.123456789012345E-12 +addx1433 add 0 1.123456789012345E-13 -> 1.123456789012345E-13 +addx1434 add 0 1.123456789012345E-14 -> 1.123456789012345E-14 +addx1435 add 0 1.123456789012345E-15 -> 1.123456789012345E-15 +addx1436 add 0 1.123456789012345E-16 -> 1.123456789012345E-16 +addx1437 add 0 1.123456789012345E-17 -> 1.123456789012345E-17 +addx1438 add 0 1.123456789012345E-18 -> 1.123456789012345E-18 +addx1439 add 0 1.123456789012345E-19 -> 1.123456789012345E-19 + +-- same, reversed 0 +addx1440 add 1.123456789012345 0 -> 1.123456789012345 +addx1441 add 1.123456789012345E-1 0 -> 0.1123456789012345 +addx1442 add 1.123456789012345E-2 0 -> 0.01123456789012345 +addx1443 add 1.123456789012345E-3 0 -> 0.001123456789012345 +addx1444 add 1.123456789012345E-4 0 -> 0.0001123456789012345 +addx1445 add 1.123456789012345E-5 0 -> 0.00001123456789012345 +addx1446 add 1.123456789012345E-6 0 -> 0.000001123456789012345 +addx1447 add 1.123456789012345E-7 0 -> 1.123456789012345E-7 +addx1448 add 1.123456789012345E-8 0 -> 1.123456789012345E-8 +addx1449 add 1.123456789012345E-9 0 -> 1.123456789012345E-9 +addx1450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10 +addx1451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11 +addx1452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12 +addx1453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13 +addx1454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14 +addx1455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15 +addx1456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16 +addx1457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17 +addx1458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18 +addx1459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19 + +-- same, Es on the 0 +addx1460 add 1.123456789012345 0E-0 -> 1.123456789012345 +addx1461 add 1.123456789012345 0E-1 -> 1.123456789012345 +addx1462 add 1.123456789012345 0E-2 -> 1.123456789012345 +addx1463 add 1.123456789012345 0E-3 -> 1.123456789012345 +addx1464 add 1.123456789012345 0E-4 -> 1.123456789012345 +addx1465 add 1.123456789012345 0E-5 -> 1.123456789012345 +addx1466 add 1.123456789012345 0E-6 -> 1.123456789012345 +addx1467 add 1.123456789012345 0E-7 -> 1.123456789012345 +addx1468 add 1.123456789012345 0E-8 -> 1.123456789012345 +addx1469 add 1.123456789012345 0E-9 -> 1.123456789012345 +addx1470 add 1.123456789012345 0E-10 -> 1.123456789012345 +addx1471 add 1.123456789012345 0E-11 -> 1.123456789012345 +addx1472 add 1.123456789012345 0E-12 -> 1.123456789012345 +addx1473 add 1.123456789012345 0E-13 -> 1.123456789012345 +addx1474 add 1.123456789012345 0E-14 -> 1.123456789012345 +addx1475 add 1.123456789012345 0E-15 -> 1.123456789012345 +-- next four flag Rounded because the 0 extends the result +addx1476 add 1.123456789012345 0E-16 -> 1.123456789012345 Rounded +addx1477 add 1.123456789012345 0E-17 -> 1.123456789012345 Rounded +addx1478 add 1.123456789012345 0E-18 -> 1.123456789012345 Rounded +addx1479 add 1.123456789012345 0E-19 -> 1.123456789012345 Rounded + +-- sum of two opposite-sign operands is exactly 0 and floor => -0 +precision: 16 +maxExponent: 384 +minexponent: -383 + +rounding: half_up +-- exact zeros from zeros +addx1500 add 0 0E-19 -> 0E-19 +addx1501 add -0 0E-19 -> 0E-19 +addx1502 add 0 -0E-19 -> 0E-19 +addx1503 add -0 -0E-19 -> -0E-19 +addx1504 add 0E-400 0E-19 -> 0E-398 Clamped +addx1505 add -0E-400 0E-19 -> 0E-398 Clamped +addx1506 add 0E-400 -0E-19 -> 0E-398 Clamped +addx1507 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx1511 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1512 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1513 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1514 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx1515 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1516 add -1E-401 1E-401 -> 0E-398 Clamped +addx1517 add 1E-401 -1E-401 -> 0E-398 Clamped +addx1518 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: half_down +-- exact zeros from zeros +addx1520 add 0 0E-19 -> 0E-19 +addx1521 add -0 0E-19 -> 0E-19 +addx1522 add 0 -0E-19 -> 0E-19 +addx1523 add -0 -0E-19 -> -0E-19 +addx1524 add 0E-400 0E-19 -> 0E-398 Clamped +addx1525 add -0E-400 0E-19 -> 0E-398 Clamped +addx1526 add 0E-400 -0E-19 -> 0E-398 Clamped +addx1527 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx1531 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1532 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1533 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1534 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx1535 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1536 add -1E-401 1E-401 -> 0E-398 Clamped +addx1537 add 1E-401 -1E-401 -> 0E-398 Clamped +addx1538 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: half_even +-- exact zeros from zeros +addx1540 add 0 0E-19 -> 0E-19 +addx1541 add -0 0E-19 -> 0E-19 +addx1542 add 0 -0E-19 -> 0E-19 +addx1543 add -0 -0E-19 -> -0E-19 +addx1544 add 0E-400 0E-19 -> 0E-398 Clamped +addx1545 add -0E-400 0E-19 -> 0E-398 Clamped +addx1546 add 0E-400 -0E-19 -> 0E-398 Clamped +addx1547 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx1551 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1552 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1553 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1554 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx1555 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1556 add -1E-401 1E-401 -> 0E-398 Clamped +addx1557 add 1E-401 -1E-401 -> 0E-398 Clamped +addx1558 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: up +-- exact zeros from zeros +addx1560 add 0 0E-19 -> 0E-19 +addx1561 add -0 0E-19 -> 0E-19 +addx1562 add 0 -0E-19 -> 0E-19 +addx1563 add -0 -0E-19 -> -0E-19 +addx1564 add 0E-400 0E-19 -> 0E-398 Clamped +addx1565 add -0E-400 0E-19 -> 0E-398 Clamped +addx1566 add 0E-400 -0E-19 -> 0E-398 Clamped +addx1567 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx1571 add 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +addx1572 add -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +addx1573 add 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +addx1574 add -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +-- some exact zeros from non-zeros +addx1575 add 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow +addx1576 add -1E-401 1E-401 -> 0E-398 Clamped +addx1577 add 1E-401 -1E-401 -> 0E-398 Clamped +addx1578 add -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow + +rounding: down +-- exact zeros from zeros +addx1580 add 0 0E-19 -> 0E-19 +addx1581 add -0 0E-19 -> 0E-19 +addx1582 add 0 -0E-19 -> 0E-19 +addx1583 add -0 -0E-19 -> -0E-19 +addx1584 add 0E-400 0E-19 -> 0E-398 Clamped +addx1585 add -0E-400 0E-19 -> 0E-398 Clamped +addx1586 add 0E-400 -0E-19 -> 0E-398 Clamped +addx1587 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx1591 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1592 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1593 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1594 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx1595 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1596 add -1E-401 1E-401 -> 0E-398 Clamped +addx1597 add 1E-401 -1E-401 -> 0E-398 Clamped +addx1598 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: ceiling +-- exact zeros from zeros +addx1600 add 0 0E-19 -> 0E-19 +addx1601 add -0 0E-19 -> 0E-19 +addx1602 add 0 -0E-19 -> 0E-19 +addx1603 add -0 -0E-19 -> -0E-19 +addx1604 add 0E-400 0E-19 -> 0E-398 Clamped +addx1605 add -0E-400 0E-19 -> 0E-398 Clamped +addx1606 add 0E-400 -0E-19 -> 0E-398 Clamped +addx1607 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx1611 add 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +addx1612 add -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +addx1613 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1614 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx1615 add 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow +addx1616 add -1E-401 1E-401 -> 0E-398 Clamped +addx1617 add 1E-401 -1E-401 -> 0E-398 Clamped +addx1618 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +-- and the extra-special ugly case; unusual minuses marked by -- * +rounding: floor +-- exact zeros from zeros +addx1620 add 0 0E-19 -> 0E-19 +addx1621 add -0 0E-19 -> -0E-19 -- * +addx1622 add 0 -0E-19 -> -0E-19 -- * +addx1623 add -0 -0E-19 -> -0E-19 +addx1624 add 0E-400 0E-19 -> 0E-398 Clamped +addx1625 add -0E-400 0E-19 -> -0E-398 Clamped -- * +addx1626 add 0E-400 -0E-19 -> -0E-398 Clamped -- * +addx1627 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx1631 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1632 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1633 add 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +addx1634 add -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +-- some exact zeros from non-zeros +addx1635 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx1636 add -1E-401 1E-401 -> -0E-398 Clamped -- * +addx1637 add 1E-401 -1E-401 -> -0E-398 Clamped -- * +addx1638 add -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow + +-- BigDecimal problem testcases 2006.01.23 +precision: 16 +maxExponent: 384 +minexponent: -383 + +rounding: down +precision: 7 +addx1651 add 10001E+2 -2E+1 -> 1.00008E+6 +precision: 6 +addx1652 add 10001E+2 -2E+1 -> 1.00008E+6 +precision: 5 +addx1653 add 10001E+2 -2E+1 -> 1.0000E+6 Inexact Rounded +precision: 4 +addx1654 add 10001E+2 -2E+1 -> 1.000E+6 Inexact Rounded +precision: 3 +addx1655 add 10001E+2 -2E+1 -> 1.00E+6 Inexact Rounded +precision: 2 +addx1656 add 10001E+2 -2E+1 -> 1.0E+6 Inexact Rounded +precision: 1 +addx1657 add 10001E+2 -2E+1 -> 1E+6 Inexact Rounded + +rounding: half_even +precision: 7 +addx1661 add 10001E+2 -2E+1 -> 1.00008E+6 +precision: 6 +addx1662 add 10001E+2 -2E+1 -> 1.00008E+6 +precision: 5 +addx1663 add 10001E+2 -2E+1 -> 1.0001E+6 Inexact Rounded +precision: 4 +addx1664 add 10001E+2 -2E+1 -> 1.000E+6 Inexact Rounded +precision: 3 +addx1665 add 10001E+2 -2E+1 -> 1.00E+6 Inexact Rounded +precision: 2 +addx1666 add 10001E+2 -2E+1 -> 1.0E+6 Inexact Rounded +precision: 1 +addx1667 add 10001E+2 -2E+1 -> 1E+6 Inexact Rounded + +rounding: up +precision: 7 +addx1671 add 10001E+2 -2E+1 -> 1.00008E+6 +precision: 6 +addx1672 add 10001E+2 -2E+1 -> 1.00008E+6 +precision: 5 +addx1673 add 10001E+2 -2E+1 -> 1.0001E+6 Inexact Rounded +precision: 4 +addx1674 add 10001E+2 -2E+1 -> 1.001E+6 Inexact Rounded +precision: 3 +addx1675 add 10001E+2 -2E+1 -> 1.01E+6 Inexact Rounded +precision: 2 +addx1676 add 10001E+2 -2E+1 -> 1.1E+6 Inexact Rounded +precision: 1 +addx1677 add 10001E+2 -2E+1 -> 2E+6 Inexact Rounded + +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 +-- Examples from SQL proposal (Krishna Kulkarni) +addx1701 add 130E-2 120E-2 -> 2.50 +addx1702 add 130E-2 12E-1 -> 2.50 +addx1703 add 130E-2 1E0 -> 2.30 +addx1704 add 1E2 1E4 -> 1.01E+4 +addx1705 subtract 130E-2 120E-2 -> 0.10 +addx1706 subtract 130E-2 12E-1 -> 0.10 +addx1707 subtract 130E-2 1E0 -> 0.30 +addx1708 subtract 1E2 1E4 -> -9.9E+3 + +------------------------------------------------------------------------ +-- Same as above, using decimal64 default parameters -- +------------------------------------------------------------------------ +precision: 16 +rounding: half_even +maxExponent: 384 +minexponent: -383 + +-- [first group are 'quick confidence check'] +addx6001 add 1 1 -> 2 +addx6002 add 2 3 -> 5 +addx6003 add '5.75' '3.3' -> 9.05 +addx6004 add '5' '-3' -> 2 +addx6005 add '-5' '-3' -> -8 +addx6006 add '-7' '2.5' -> -4.5 +addx6007 add '0.7' '0.3' -> 1.0 +addx6008 add '1.25' '1.25' -> 2.50 +addx6009 add '1.23456789' '1.00000000' -> '2.23456789' +addx6010 add '1.23456789' '1.00000011' -> '2.23456800' + +addx6011 add '0.44444444444444444' '0.55555555555555555' -> '1.000000000000000' Inexact Rounded +addx6012 add '0.44444444444444440' '0.55555555555555555' -> '1.000000000000000' Inexact Rounded +addx6013 add '0.44444444444444444' '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded +addx6014 add '0.444444444444444449' '0' -> '0.4444444444444444' Inexact Rounded +addx6015 add '0.4444444444444444499' '0' -> '0.4444444444444444' Inexact Rounded +addx6016 add '0.44444444444444444999' '0' -> '0.4444444444444444' Inexact Rounded +addx6017 add '0.44444444444444445000' '0' -> '0.4444444444444444' Inexact Rounded +addx6018 add '0.44444444444444445001' '0' -> '0.4444444444444445' Inexact Rounded +addx6019 add '0.4444444444444444501' '0' -> '0.4444444444444445' Inexact Rounded +addx6020 add '0.444444444444444451' '0' -> '0.4444444444444445' Inexact Rounded + +addx6021 add 0 1 -> 1 +addx6022 add 1 1 -> 2 +addx6023 add 2 1 -> 3 +addx6024 add 3 1 -> 4 +addx6025 add 4 1 -> 5 +addx6026 add 5 1 -> 6 +addx6027 add 6 1 -> 7 +addx6028 add 7 1 -> 8 +addx6029 add 8 1 -> 9 +addx6030 add 9 1 -> 10 + +-- some carrying effects +addx6031 add '0.9998' '0.0000' -> '0.9998' +addx6032 add '0.9998' '0.0001' -> '0.9999' +addx6033 add '0.9998' '0.0002' -> '1.0000' +addx6034 add '0.9998' '0.0003' -> '1.0001' + +addx6035 add '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +addx6036 add '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +addx6037 add '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded +addx6038 add '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded +addx6039 add '700000' '10000e+16' -> '1.000000000000007E+20' Rounded + +-- symmetry: +addx6040 add '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded +addx6041 add '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded +addx6042 add '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded +addx6044 add '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded +addx6045 add '10000e+16' '700000' -> '1.000000000000007E+20' Rounded + +addx6046 add '10000e+9' '7' -> '10000000000007' +addx6047 add '10000e+9' '70' -> '10000000000070' +addx6048 add '10000e+9' '700' -> '10000000000700' +addx6049 add '10000e+9' '7000' -> '10000000007000' +addx6050 add '10000e+9' '70000' -> '10000000070000' +addx6051 add '10000e+9' '700000' -> '10000000700000' + +-- examples from decarith +addx6053 add '12' '7.00' -> '19.00' +addx6054 add '1.3' '-1.07' -> '0.23' +addx6055 add '1.3' '-1.30' -> '0.00' +addx6056 add '1.3' '-2.07' -> '-0.77' +addx6057 add '1E+2' '1E+4' -> '1.01E+4' + +-- from above +addx6061 add 1 '0.1' -> '1.1' +addx6062 add 1 '0.01' -> '1.01' +addx6063 add 1 '0.001' -> '1.001' +addx6064 add 1 '0.0001' -> '1.0001' +addx6065 add 1 '0.00001' -> '1.00001' +addx6066 add 1 '0.000001' -> '1.000001' +addx6067 add 1 '0.0000001' -> '1.0000001' +addx6068 add 1 '0.00000001' -> '1.00000001' + +-- cancellation to integer +addx6069 add 99999999999999123456789 -99999999999999E+9 -> 123456789 + +-- some funny zeros [in case of bad signum] +addx6070 add 1 0 -> 1 +addx6071 add 1 0. -> 1 +addx6072 add 1 .0 -> 1.0 +addx6073 add 1 0.0 -> 1.0 +addx6074 add 1 0.00 -> 1.00 +addx6075 add 0 1 -> 1 +addx6076 add 0. 1 -> 1 +addx6077 add .0 1 -> 1.0 +addx6078 add 0.0 1 -> 1.0 +addx6079 add 0.00 1 -> 1.00 -addx1160 add 100E-105 -1e-101 -> -0E-101 Subnormal Inexact Rounded Underflow -addx1161 add 100E-105 -1e-201 -> 0E-101 Subnormal Inexact Rounded Underflow +-- some carries +addx6080 add 9999999999999998 1 -> 9999999999999999 +addx6081 add 9999999999999999 1 -> 1.000000000000000E+16 Rounded +addx6082 add 999999999999999 1 -> 1000000000000000 +addx6083 add 9999999999999 1 -> 10000000000000 +addx6084 add 99999999999 1 -> 100000000000 +addx6085 add 999999999 1 -> 1000000000 +addx6086 add 9999999 1 -> 10000000 +addx6087 add 99999 1 -> 100000 +addx6088 add 999 1 -> 1000 +addx6089 add 9 1 -> 10 + + +-- more LHS swaps +addx6090 add '-56267E-10' 0 -> '-0.0000056267' +addx6091 add '-56267E-6' 0 -> '-0.056267' +addx6092 add '-56267E-5' 0 -> '-0.56267' +addx6093 add '-56267E-4' 0 -> '-5.6267' +addx6094 add '-56267E-3' 0 -> '-56.267' +addx6095 add '-56267E-2' 0 -> '-562.67' +addx6096 add '-56267E-1' 0 -> '-5626.7' +addx6097 add '-56267E-0' 0 -> '-56267' +addx6098 add '-5E-10' 0 -> '-5E-10' +addx6099 add '-5E-7' 0 -> '-5E-7' +addx6100 add '-5E-6' 0 -> '-0.000005' +addx6101 add '-5E-5' 0 -> '-0.00005' +addx6102 add '-5E-4' 0 -> '-0.0005' +addx6103 add '-5E-1' 0 -> '-0.5' +addx6104 add '-5E0' 0 -> '-5' +addx6105 add '-5E1' 0 -> '-50' +addx6106 add '-5E5' 0 -> '-500000' +addx6107 add '-5E15' 0 -> '-5000000000000000' +addx6108 add '-5E16' 0 -> '-5.000000000000000E+16' Rounded +addx6109 add '-5E17' 0 -> '-5.000000000000000E+17' Rounded +addx6110 add '-5E18' 0 -> '-5.000000000000000E+18' Rounded +addx6111 add '-5E100' 0 -> '-5.000000000000000E+100' Rounded +-- more RHS swaps +addx6113 add 0 '-56267E-10' -> '-0.0000056267' +addx6114 add 0 '-56267E-6' -> '-0.056267' +addx6116 add 0 '-56267E-5' -> '-0.56267' +addx6117 add 0 '-56267E-4' -> '-5.6267' +addx6119 add 0 '-56267E-3' -> '-56.267' +addx6120 add 0 '-56267E-2' -> '-562.67' +addx6121 add 0 '-56267E-1' -> '-5626.7' +addx6122 add 0 '-56267E-0' -> '-56267' +addx6123 add 0 '-5E-10' -> '-5E-10' +addx6124 add 0 '-5E-7' -> '-5E-7' +addx6125 add 0 '-5E-6' -> '-0.000005' +addx6126 add 0 '-5E-5' -> '-0.00005' +addx6127 add 0 '-5E-4' -> '-0.0005' +addx6128 add 0 '-5E-1' -> '-0.5' +addx6129 add 0 '-5E0' -> '-5' +addx6130 add 0 '-5E1' -> '-50' +addx6131 add 0 '-5E5' -> '-500000' +addx6132 add 0 '-5E15' -> '-5000000000000000' +addx6133 add 0 '-5E16' -> '-5.000000000000000E+16' Rounded +addx6134 add 0 '-5E17' -> '-5.000000000000000E+17' Rounded +addx6135 add 0 '-5E18' -> '-5.000000000000000E+18' Rounded +addx6136 add 0 '-5E100' -> '-5.000000000000000E+100' Rounded + +-- related +addx6137 add 1 '0E-19' -> '1.000000000000000' Rounded +addx6138 add -1 '0E-19' -> '-1.000000000000000' Rounded +addx6139 add '0E-19' 1 -> '1.000000000000000' Rounded +addx6140 add '0E-19' -1 -> '-1.000000000000000' Rounded +addx6141 add 1E+11 0.0000 -> '100000000000.0000' +addx6142 add 1E+11 0.00000 -> '100000000000.0000' Rounded +addx6143 add 0.000 1E+12 -> '1000000000000.000' +addx6144 add 0.0000 1E+12 -> '1000000000000.000' Rounded + +-- [some of the next group are really constructor tests] +addx6146 add '00.0' 0 -> '0.0' +addx6147 add '0.00' 0 -> '0.00' +addx6148 add 0 '0.00' -> '0.00' +addx6149 add 0 '00.0' -> '0.0' +addx6150 add '00.0' '0.00' -> '0.00' +addx6151 add '0.00' '00.0' -> '0.00' +addx6152 add '3' '.3' -> '3.3' +addx6153 add '3.' '.3' -> '3.3' +addx6154 add '3.0' '.3' -> '3.3' +addx6155 add '3.00' '.3' -> '3.30' +addx6156 add '3' '3' -> '6' +addx6157 add '3' '+3' -> '6' +addx6158 add '3' '-3' -> '0' +addx6159 add '0.3' '-0.3' -> '0.0' +addx6160 add '0.03' '-0.03' -> '0.00' + +-- try borderline precision, with carries, etc. +addx6161 add '1E+13' '-1' -> '9999999999999' +addx6162 add '1E+13' '1.11' -> '10000000000001.11' +addx6163 add '1.11' '1E+13' -> '10000000000001.11' +addx6164 add '-1' '1E+13' -> '9999999999999' +addx6165 add '7E+13' '-1' -> '69999999999999' +addx6166 add '7E+13' '1.11' -> '70000000000001.11' +addx6167 add '1.11' '7E+13' -> '70000000000001.11' +addx6168 add '-1' '7E+13' -> '69999999999999' + +-- 1234567890123456 1234567890123456 1 234567890123456 +addx6170 add '0.4444444444444444' '0.5555555555555563' -> '1.000000000000001' Inexact Rounded +addx6171 add '0.4444444444444444' '0.5555555555555562' -> '1.000000000000001' Inexact Rounded +addx6172 add '0.4444444444444444' '0.5555555555555561' -> '1.000000000000000' Inexact Rounded +addx6173 add '0.4444444444444444' '0.5555555555555560' -> '1.000000000000000' Inexact Rounded +addx6174 add '0.4444444444444444' '0.5555555555555559' -> '1.000000000000000' Inexact Rounded +addx6175 add '0.4444444444444444' '0.5555555555555558' -> '1.000000000000000' Inexact Rounded +addx6176 add '0.4444444444444444' '0.5555555555555557' -> '1.000000000000000' Inexact Rounded +addx6177 add '0.4444444444444444' '0.5555555555555556' -> '1.000000000000000' Rounded +addx6178 add '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999' +addx6179 add '0.4444444444444444' '0.5555555555555554' -> '0.9999999999999998' +addx6180 add '0.4444444444444444' '0.5555555555555553' -> '0.9999999999999997' +addx6181 add '0.4444444444444444' '0.5555555555555552' -> '0.9999999999999996' +addx6182 add '0.4444444444444444' '0.5555555555555551' -> '0.9999999999999995' +addx6183 add '0.4444444444444444' '0.5555555555555550' -> '0.9999999999999994' + +-- and some more, including residue effects and different roundings +rounding: half_up +addx6200 add '6543210123456789' 0 -> '6543210123456789' +addx6201 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +addx6202 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +addx6203 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +addx6204 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +addx6205 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +addx6206 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +addx6207 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +addx6208 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded +addx6209 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded +addx6210 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded +addx6211 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded +addx6212 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded +addx6213 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded +addx6214 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded +addx6215 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded +addx6216 add '6543210123456789' 1 -> '6543210123456790' +addx6217 add '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded +addx6218 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +addx6219 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +rounding: half_even +addx6220 add '6543210123456789' 0 -> '6543210123456789' +addx6221 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +addx6222 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +addx6223 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +addx6224 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +addx6225 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +addx6226 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +addx6227 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +addx6228 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded +addx6229 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded +addx6230 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded +addx6231 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded +addx6232 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded +addx6233 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded +addx6234 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded +addx6235 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded +addx6236 add '6543210123456789' 1 -> '6543210123456790' +addx6237 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded +addx6238 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +addx6239 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded +-- critical few with even bottom digit... +addx6240 add '6543210123456788' 0.499999999 -> '6543210123456788' Inexact Rounded +addx6241 add '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded +addx6242 add '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded + +rounding: down +addx6250 add '6543210123456789' 0 -> '6543210123456789' +addx6251 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded +addx6252 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded +addx6253 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded +addx6254 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded +addx6255 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded +addx6256 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded +addx6257 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded +addx6258 add '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded +addx6259 add '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded +addx6260 add '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded +addx6261 add '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded +addx6262 add '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded +addx6263 add '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded +addx6264 add '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded +addx6265 add '6543210123456789' 0.999999999 -> '6543210123456789' Inexact Rounded +addx6266 add '6543210123456789' 1 -> '6543210123456790' +addx6267 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded +addx6268 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded +addx6269 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded + +-- 1 in last place tests +rounding: half_even +addx6301 add -1 1 -> 0 +addx6302 add 0 1 -> 1 +addx6303 add 1 1 -> 2 +addx6304 add 12 1 -> 13 +addx6305 add 98 1 -> 99 +addx6306 add 99 1 -> 100 +addx6307 add 100 1 -> 101 +addx6308 add 101 1 -> 102 +addx6309 add -1 -1 -> -2 +addx6310 add 0 -1 -> -1 +addx6311 add 1 -1 -> 0 +addx6312 add 12 -1 -> 11 +addx6313 add 98 -1 -> 97 +addx6314 add 99 -1 -> 98 +addx6315 add 100 -1 -> 99 +addx6316 add 101 -1 -> 100 + +addx6321 add -0.01 0.01 -> 0.00 +addx6322 add 0.00 0.01 -> 0.01 +addx6323 add 0.01 0.01 -> 0.02 +addx6324 add 0.12 0.01 -> 0.13 +addx6325 add 0.98 0.01 -> 0.99 +addx6326 add 0.99 0.01 -> 1.00 +addx6327 add 1.00 0.01 -> 1.01 +addx6328 add 1.01 0.01 -> 1.02 +addx6329 add -0.01 -0.01 -> -0.02 +addx6330 add 0.00 -0.01 -> -0.01 +addx6331 add 0.01 -0.01 -> 0.00 +addx6332 add 0.12 -0.01 -> 0.11 +addx6333 add 0.98 -0.01 -> 0.97 +addx6334 add 0.99 -0.01 -> 0.98 +addx6335 add 1.00 -0.01 -> 0.99 +addx6336 add 1.01 -0.01 -> 1.00 + +-- some more cases where adding 0 affects the coefficient +addx6340 add 1E+3 0 -> 1000 +addx6341 add 1E+15 0 -> 1000000000000000 +addx6342 add 1E+16 0 -> 1.000000000000000E+16 Rounded +addx6343 add 1E+17 0 -> 1.000000000000000E+17 Rounded +-- which simply follow from these cases ... +addx6344 add 1E+3 1 -> 1001 +addx6345 add 1E+15 1 -> 1000000000000001 +addx6346 add 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded +addx6347 add 1E+17 1 -> 1.000000000000000E+17 Inexact Rounded +addx6348 add 1E+3 7 -> 1007 +addx6349 add 1E+15 7 -> 1000000000000007 +addx6350 add 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded +addx6351 add 1E+17 7 -> 1.000000000000000E+17 Inexact Rounded + +-- tryzeros cases +addx6361 add 0E+50 10000E+1 -> 1.0000E+5 +addx6362 add 10000E+1 0E-50 -> 100000.0000000000 Rounded +addx6363 add 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact +addx6364 add 12.34 0e-398 -> 12.34000000000000 Rounded + +-- ulp replacement tests +addx6400 add 1 77e-14 -> 1.00000000000077 +addx6401 add 1 77e-15 -> 1.000000000000077 +addx6402 add 1 77e-16 -> 1.000000000000008 Inexact Rounded +addx6403 add 1 77e-17 -> 1.000000000000001 Inexact Rounded +addx6404 add 1 77e-18 -> 1.000000000000000 Inexact Rounded +addx6405 add 1 77e-19 -> 1.000000000000000 Inexact Rounded +addx6406 add 1 77e-99 -> 1.000000000000000 Inexact Rounded + +addx6410 add 10 77e-14 -> 10.00000000000077 +addx6411 add 10 77e-15 -> 10.00000000000008 Inexact Rounded +addx6412 add 10 77e-16 -> 10.00000000000001 Inexact Rounded +addx6413 add 10 77e-17 -> 10.00000000000000 Inexact Rounded +addx6414 add 10 77e-18 -> 10.00000000000000 Inexact Rounded +addx6415 add 10 77e-19 -> 10.00000000000000 Inexact Rounded +addx6416 add 10 77e-99 -> 10.00000000000000 Inexact Rounded + +addx6420 add 77e-14 1 -> 1.00000000000077 +addx6421 add 77e-15 1 -> 1.000000000000077 +addx6422 add 77e-16 1 -> 1.000000000000008 Inexact Rounded +addx6423 add 77e-17 1 -> 1.000000000000001 Inexact Rounded +addx6424 add 77e-18 1 -> 1.000000000000000 Inexact Rounded +addx6425 add 77e-19 1 -> 1.000000000000000 Inexact Rounded +addx6426 add 77e-99 1 -> 1.000000000000000 Inexact Rounded + +addx6430 add 77e-14 10 -> 10.00000000000077 +addx6431 add 77e-15 10 -> 10.00000000000008 Inexact Rounded +addx6432 add 77e-16 10 -> 10.00000000000001 Inexact Rounded +addx6433 add 77e-17 10 -> 10.00000000000000 Inexact Rounded +addx6434 add 77e-18 10 -> 10.00000000000000 Inexact Rounded +addx6435 add 77e-19 10 -> 10.00000000000000 Inexact Rounded +addx6436 add 77e-99 10 -> 10.00000000000000 Inexact Rounded + +-- negative ulps +addx6440 add 1 -77e-14 -> 0.99999999999923 +addx6441 add 1 -77e-15 -> 0.999999999999923 +addx6442 add 1 -77e-16 -> 0.9999999999999923 +addx6443 add 1 -77e-17 -> 0.9999999999999992 Inexact Rounded +addx6444 add 1 -77e-18 -> 0.9999999999999999 Inexact Rounded +addx6445 add 1 -77e-19 -> 1.000000000000000 Inexact Rounded +addx6446 add 1 -77e-99 -> 1.000000000000000 Inexact Rounded + +addx6450 add 10 -77e-14 -> 9.99999999999923 +addx6451 add 10 -77e-15 -> 9.999999999999923 +addx6452 add 10 -77e-16 -> 9.999999999999992 Inexact Rounded +addx6453 add 10 -77e-17 -> 9.999999999999999 Inexact Rounded +addx6454 add 10 -77e-18 -> 10.00000000000000 Inexact Rounded +addx6455 add 10 -77e-19 -> 10.00000000000000 Inexact Rounded +addx6456 add 10 -77e-99 -> 10.00000000000000 Inexact Rounded + +addx6460 add -77e-14 1 -> 0.99999999999923 +addx6461 add -77e-15 1 -> 0.999999999999923 +addx6462 add -77e-16 1 -> 0.9999999999999923 +addx6463 add -77e-17 1 -> 0.9999999999999992 Inexact Rounded +addx6464 add -77e-18 1 -> 0.9999999999999999 Inexact Rounded +addx6465 add -77e-19 1 -> 1.000000000000000 Inexact Rounded +addx6466 add -77e-99 1 -> 1.000000000000000 Inexact Rounded + +addx6470 add -77e-14 10 -> 9.99999999999923 +addx6471 add -77e-15 10 -> 9.999999999999923 +addx6472 add -77e-16 10 -> 9.999999999999992 Inexact Rounded +addx6473 add -77e-17 10 -> 9.999999999999999 Inexact Rounded +addx6474 add -77e-18 10 -> 10.00000000000000 Inexact Rounded +addx6475 add -77e-19 10 -> 10.00000000000000 Inexact Rounded +addx6476 add -77e-99 10 -> 10.00000000000000 Inexact Rounded + +-- negative ulps +addx6480 add -1 77e-14 -> -0.99999999999923 +addx6481 add -1 77e-15 -> -0.999999999999923 +addx6482 add -1 77e-16 -> -0.9999999999999923 +addx6483 add -1 77e-17 -> -0.9999999999999992 Inexact Rounded +addx6484 add -1 77e-18 -> -0.9999999999999999 Inexact Rounded +addx6485 add -1 77e-19 -> -1.000000000000000 Inexact Rounded +addx6486 add -1 77e-99 -> -1.000000000000000 Inexact Rounded + +addx6490 add -10 77e-14 -> -9.99999999999923 +addx6491 add -10 77e-15 -> -9.999999999999923 +addx6492 add -10 77e-16 -> -9.999999999999992 Inexact Rounded +addx6493 add -10 77e-17 -> -9.999999999999999 Inexact Rounded +addx6494 add -10 77e-18 -> -10.00000000000000 Inexact Rounded +addx6495 add -10 77e-19 -> -10.00000000000000 Inexact Rounded +addx6496 add -10 77e-99 -> -10.00000000000000 Inexact Rounded + +addx6500 add 77e-14 -1 -> -0.99999999999923 +addx6501 add 77e-15 -1 -> -0.999999999999923 +addx6502 add 77e-16 -1 -> -0.9999999999999923 +addx6503 add 77e-17 -1 -> -0.9999999999999992 Inexact Rounded +addx6504 add 77e-18 -1 -> -0.9999999999999999 Inexact Rounded +addx6505 add 77e-19 -1 -> -1.000000000000000 Inexact Rounded +addx6506 add 77e-99 -1 -> -1.000000000000000 Inexact Rounded + +addx6510 add 77e-14 -10 -> -9.99999999999923 +addx6511 add 77e-15 -10 -> -9.999999999999923 +addx6512 add 77e-16 -10 -> -9.999999999999992 Inexact Rounded +addx6513 add 77e-17 -10 -> -9.999999999999999 Inexact Rounded +addx6514 add 77e-18 -10 -> -10.00000000000000 Inexact Rounded +addx6515 add 77e-19 -10 -> -10.00000000000000 Inexact Rounded +addx6516 add 77e-99 -10 -> -10.00000000000000 Inexact Rounded + + +-- long operands +addx6521 add 101234562345678000 0 -> 1.012345623456780E+17 Rounded +addx6522 add 0 101234562345678000 -> 1.012345623456780E+17 Rounded +addx6523 add 10123456234567800 0 -> 1.012345623456780E+16 Rounded +addx6524 add 0 10123456234567800 -> 1.012345623456780E+16 Rounded +addx6525 add 10123456234567890 0 -> 1.012345623456789E+16 Rounded +addx6526 add 0 10123456234567890 -> 1.012345623456789E+16 Rounded +addx6527 add 10123456234567891 0 -> 1.012345623456789E+16 Inexact Rounded +addx6528 add 0 10123456234567891 -> 1.012345623456789E+16 Inexact Rounded +addx6529 add 101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded +addx6530 add 0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded +addx6531 add 10123456234567896 0 -> 1.012345623456790E+16 Inexact Rounded +addx6532 add 0 10123456234567896 -> 1.012345623456790E+16 Inexact Rounded + +-- verify a query +rounding: down +addx6561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded +addx6562 add 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded +-- and using decimal64 bounds... +rounding: down +addx6563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded +addx6564 add 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded + +-- more zeros, etc. +rounding: half_even + +addx6701 add 5.00 1.00E-3 -> 5.00100 +addx6702 add 00.00 0.000 -> 0.000 +addx6703 add 00.00 0E-3 -> 0.000 +addx6704 add 0E-3 00.00 -> 0.000 + +addx6710 add 0E+3 00.00 -> 0.00 +addx6711 add 0E+3 00.0 -> 0.0 +addx6712 add 0E+3 00. -> 0 +addx6713 add 0E+3 00.E+1 -> 0E+1 +addx6714 add 0E+3 00.E+2 -> 0E+2 +addx6715 add 0E+3 00.E+3 -> 0E+3 +addx6716 add 0E+3 00.E+4 -> 0E+3 +addx6717 add 0E+3 00.E+5 -> 0E+3 +addx6718 add 0E+3 -00.0 -> 0.0 +addx6719 add 0E+3 -00. -> 0 +addx6731 add 0E+3 -00.E+1 -> 0E+1 + +addx6720 add 00.00 0E+3 -> 0.00 +addx6721 add 00.0 0E+3 -> 0.0 +addx6722 add 00. 0E+3 -> 0 +addx6723 add 00.E+1 0E+3 -> 0E+1 +addx6724 add 00.E+2 0E+3 -> 0E+2 +addx6725 add 00.E+3 0E+3 -> 0E+3 +addx6726 add 00.E+4 0E+3 -> 0E+3 +addx6727 add 00.E+5 0E+3 -> 0E+3 +addx6728 add -00.00 0E+3 -> 0.00 +addx6729 add -00.0 0E+3 -> 0.0 +addx6730 add -00. 0E+3 -> 0 + +addx6732 add 0 0 -> 0 +addx6733 add 0 -0 -> 0 +addx6734 add -0 0 -> 0 +addx6735 add -0 -0 -> -0 -- IEEE 854 special case + +addx6736 add 1 -1 -> 0 +addx6737 add -1 -1 -> -2 +addx6738 add 1 1 -> 2 +addx6739 add -1 1 -> 0 + +addx6741 add 0 -1 -> -1 +addx6742 add -0 -1 -> -1 +addx6743 add 0 1 -> 1 +addx6744 add -0 1 -> 1 +addx6745 add -1 0 -> -1 +addx6746 add -1 -0 -> -1 +addx6747 add 1 0 -> 1 +addx6748 add 1 -0 -> 1 + +addx6751 add 0.0 -1 -> -1.0 +addx6752 add -0.0 -1 -> -1.0 +addx6753 add 0.0 1 -> 1.0 +addx6754 add -0.0 1 -> 1.0 +addx6755 add -1.0 0 -> -1.0 +addx6756 add -1.0 -0 -> -1.0 +addx6757 add 1.0 0 -> 1.0 +addx6758 add 1.0 -0 -> 1.0 + +addx6761 add 0 -1.0 -> -1.0 +addx6762 add -0 -1.0 -> -1.0 +addx6763 add 0 1.0 -> 1.0 +addx6764 add -0 1.0 -> 1.0 +addx6765 add -1 0.0 -> -1.0 +addx6766 add -1 -0.0 -> -1.0 +addx6767 add 1 0.0 -> 1.0 +addx6768 add 1 -0.0 -> 1.0 + +addx6771 add 0.0 -1.0 -> -1.0 +addx6772 add -0.0 -1.0 -> -1.0 +addx6773 add 0.0 1.0 -> 1.0 +addx6774 add -0.0 1.0 -> 1.0 +addx6775 add -1.0 0.0 -> -1.0 +addx6776 add -1.0 -0.0 -> -1.0 +addx6777 add 1.0 0.0 -> 1.0 +addx6778 add 1.0 -0.0 -> 1.0 + +-- Specials +addx6780 add -Inf -Inf -> -Infinity +addx6781 add -Inf -1000 -> -Infinity +addx6782 add -Inf -1 -> -Infinity +addx6783 add -Inf -0 -> -Infinity +addx6784 add -Inf 0 -> -Infinity +addx6785 add -Inf 1 -> -Infinity +addx6786 add -Inf 1000 -> -Infinity +addx6787 add -1000 -Inf -> -Infinity +addx6788 add -Inf -Inf -> -Infinity +addx6789 add -1 -Inf -> -Infinity +addx6790 add -0 -Inf -> -Infinity +addx6791 add 0 -Inf -> -Infinity +addx6792 add 1 -Inf -> -Infinity +addx6793 add 1000 -Inf -> -Infinity +addx6794 add Inf -Inf -> NaN Invalid_operation + +addx6800 add Inf -Inf -> NaN Invalid_operation +addx6801 add Inf -1000 -> Infinity +addx6802 add Inf -1 -> Infinity +addx6803 add Inf -0 -> Infinity +addx6804 add Inf 0 -> Infinity +addx6805 add Inf 1 -> Infinity +addx6806 add Inf 1000 -> Infinity +addx6807 add Inf Inf -> Infinity +addx6808 add -1000 Inf -> Infinity +addx6809 add -Inf Inf -> NaN Invalid_operation +addx6810 add -1 Inf -> Infinity +addx6811 add -0 Inf -> Infinity +addx6812 add 0 Inf -> Infinity +addx6813 add 1 Inf -> Infinity +addx6814 add 1000 Inf -> Infinity +addx6815 add Inf Inf -> Infinity + +addx6821 add NaN -Inf -> NaN +addx6822 add NaN -1000 -> NaN +addx6823 add NaN -1 -> NaN +addx6824 add NaN -0 -> NaN +addx6825 add NaN 0 -> NaN +addx6826 add NaN 1 -> NaN +addx6827 add NaN 1000 -> NaN +addx6828 add NaN Inf -> NaN +addx6829 add NaN NaN -> NaN +addx6830 add -Inf NaN -> NaN +addx6831 add -1000 NaN -> NaN +addx6832 add -1 NaN -> NaN +addx6833 add -0 NaN -> NaN +addx6834 add 0 NaN -> NaN +addx6835 add 1 NaN -> NaN +addx6836 add 1000 NaN -> NaN +addx6837 add Inf NaN -> NaN + +addx6841 add sNaN -Inf -> NaN Invalid_operation +addx6842 add sNaN -1000 -> NaN Invalid_operation +addx6843 add sNaN -1 -> NaN Invalid_operation +addx6844 add sNaN -0 -> NaN Invalid_operation +addx6845 add sNaN 0 -> NaN Invalid_operation +addx6846 add sNaN 1 -> NaN Invalid_operation +addx6847 add sNaN 1000 -> NaN Invalid_operation +addx6848 add sNaN NaN -> NaN Invalid_operation +addx6849 add sNaN sNaN -> NaN Invalid_operation +addx6850 add NaN sNaN -> NaN Invalid_operation +addx6851 add -Inf sNaN -> NaN Invalid_operation +addx6852 add -1000 sNaN -> NaN Invalid_operation +addx6853 add -1 sNaN -> NaN Invalid_operation +addx6854 add -0 sNaN -> NaN Invalid_operation +addx6855 add 0 sNaN -> NaN Invalid_operation +addx6856 add 1 sNaN -> NaN Invalid_operation +addx6857 add 1000 sNaN -> NaN Invalid_operation +addx6858 add Inf sNaN -> NaN Invalid_operation +addx6859 add NaN sNaN -> NaN Invalid_operation + +-- propagating NaNs +addx6861 add NaN1 -Inf -> NaN1 +addx6862 add +NaN2 -1000 -> NaN2 +addx6863 add NaN3 1000 -> NaN3 +addx6864 add NaN4 Inf -> NaN4 +addx6865 add NaN5 +NaN6 -> NaN5 +addx6866 add -Inf NaN7 -> NaN7 +addx6867 add -1000 NaN8 -> NaN8 +addx6868 add 1000 NaN9 -> NaN9 +addx6869 add Inf +NaN10 -> NaN10 +addx6871 add sNaN11 -Inf -> NaN11 Invalid_operation +addx6872 add sNaN12 -1000 -> NaN12 Invalid_operation +addx6873 add sNaN13 1000 -> NaN13 Invalid_operation +addx6874 add sNaN14 NaN17 -> NaN14 Invalid_operation +addx6875 add sNaN15 sNaN18 -> NaN15 Invalid_operation +addx6876 add NaN16 sNaN19 -> NaN19 Invalid_operation +addx6877 add -Inf +sNaN20 -> NaN20 Invalid_operation +addx6878 add -1000 sNaN21 -> NaN21 Invalid_operation +addx6879 add 1000 sNaN22 -> NaN22 Invalid_operation +addx6880 add Inf sNaN23 -> NaN23 Invalid_operation +addx6881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation +addx6882 add -NaN26 NaN28 -> -NaN26 +addx6883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation +addx6884 add 1000 -NaN30 -> -NaN30 +addx6885 add 1000 -sNaN31 -> -NaN31 Invalid_operation + +-- now the case where we can get underflow but the result is normal +-- [note this can't happen if the operands are also bounded, as we +-- cannot represent 1E-399, for example] + +addx6571 add 1E-383 0 -> 1E-383 +addx6572 add 1E-384 0 -> 1E-384 Subnormal +addx6573 add 1E-383 1E-384 -> 1.1E-383 +addx6574 subtract 1E-383 1E-384 -> 9E-384 Subnormal + +-- Here we explore the boundary of rounding a subnormal to Nmin +addx6575 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal +addx6576 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal +addx6577 subtract 1E-383 1E-399 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +addx6578 subtract 1E-383 1E-400 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +addx6579 subtract 1E-383 1E-401 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +addx6580 subtract 1E-383 1E-402 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded + +-- check overflow edge case +-- 1234567890123456 +addx6972 apply 9.999999999999999E+384 -> 9.999999999999999E+384 +addx6973 add 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded +addx6974 add 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded +addx6975 add 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded +addx6976 add 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded +addx6977 add 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded +addx6978 add 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded +addx6979 add 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded +addx6980 add 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded +addx6981 add 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded +addx6982 add 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded +addx6983 add 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded +addx6984 add 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded + +addx6985 apply -9.999999999999999E+384 -> -9.999999999999999E+384 +addx6986 add -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded +addx6987 add -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded +addx6988 add -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded +addx6989 add -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded +addx6990 add -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded +addx6991 add -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded +addx6992 add -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded +addx6993 add -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded +addx6994 add -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded +addx6995 add -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded +addx6996 add -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded +addx6997 add -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded + +-- And for round down full and subnormal results +rounding: down +addx61100 add 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact +addx61101 add 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact +addx61103 add +1 -1e-383 -> 0.9999999999999999 Rounded Inexact +addx61104 add 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact +addx61105 add 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact +addx61106 add 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact +addx61107 add 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact +addx61108 add 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact +addx61109 add 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact + +rounding: ceiling +addx61110 add -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact +addx61111 add -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact +addx61113 add -1 +1e-383 -> -0.9999999999999999 Rounded Inexact +addx61114 add -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact +addx61115 add -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact +addx61116 add -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact +addx61117 add -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact +addx61118 add -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact +addx61119 add -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact + +-- tests based on Gunnar Degnbol's edge case +rounding: half_even + +addx61300 add 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded +addx61310 add 1E16 -0.51 -> 9999999999999999 Inexact Rounded +addx61311 add 1E16 -0.501 -> 9999999999999999 Inexact Rounded +addx61312 add 1E16 -0.5001 -> 9999999999999999 Inexact Rounded +addx61313 add 1E16 -0.50001 -> 9999999999999999 Inexact Rounded +addx61314 add 1E16 -0.500001 -> 9999999999999999 Inexact Rounded +addx61315 add 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded +addx61316 add 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded +addx61317 add 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded +addx61318 add 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded +addx61319 add 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded +addx61320 add 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded +addx61321 add 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded +addx61322 add 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded +addx61323 add 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded +addx61324 add 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded +addx61325 add 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61326 add 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61327 add 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61328 add 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61329 add 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61330 add 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61331 add 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61332 add 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded +addx61333 add 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded +addx61334 add 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded +addx61335 add 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded +addx61336 add 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded +addx61337 add 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded +addx61338 add 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded +addx61339 add 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded + +addx61340 add 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded +addx61341 add 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded + +addx61349 add 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded +addx61350 add 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded +addx61351 add 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded +addx61352 add 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded +addx61353 add 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded +addx61354 add 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded +addx61355 add 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded +addx61356 add 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded +addx61357 add 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded +addx61358 add 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded +addx61359 add 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded +addx61360 add 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded +addx61361 add 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded +addx61362 add 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded +addx61363 add 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded +addx61364 add 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded +addx61365 add 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61367 add 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61368 add 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61369 add 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61370 add 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61371 add 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61372 add 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded +addx61373 add 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded +addx61374 add 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded +addx61375 add 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded +addx61376 add 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded +addx61377 add 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded +addx61378 add 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded +addx61379 add 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded +addx61380 add 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded +addx61381 add 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded +addx61382 add 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded +addx61383 add 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded +addx61384 add 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded +addx61385 add 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded +addx61386 add 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded +addx61387 add 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded +addx61388 add 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded +addx61389 add 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded +addx61390 add 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded +addx61391 add 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded +addx61392 add 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded +addx61393 add 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded +addx61394 add 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded +addx61395 add 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded +addx61396 add 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded + +-- More GD edge cases, where difference between the unadjusted +-- exponents is larger than the maximum precision and one side is 0 +addx61420 add 0 1.123456789012345 -> 1.123456789012345 +addx61421 add 0 1.123456789012345E-1 -> 0.1123456789012345 +addx61422 add 0 1.123456789012345E-2 -> 0.01123456789012345 +addx61423 add 0 1.123456789012345E-3 -> 0.001123456789012345 +addx61424 add 0 1.123456789012345E-4 -> 0.0001123456789012345 +addx61425 add 0 1.123456789012345E-5 -> 0.00001123456789012345 +addx61426 add 0 1.123456789012345E-6 -> 0.000001123456789012345 +addx61427 add 0 1.123456789012345E-7 -> 1.123456789012345E-7 +addx61428 add 0 1.123456789012345E-8 -> 1.123456789012345E-8 +addx61429 add 0 1.123456789012345E-9 -> 1.123456789012345E-9 +addx61430 add 0 1.123456789012345E-10 -> 1.123456789012345E-10 +addx61431 add 0 1.123456789012345E-11 -> 1.123456789012345E-11 +addx61432 add 0 1.123456789012345E-12 -> 1.123456789012345E-12 +addx61433 add 0 1.123456789012345E-13 -> 1.123456789012345E-13 +addx61434 add 0 1.123456789012345E-14 -> 1.123456789012345E-14 +addx61435 add 0 1.123456789012345E-15 -> 1.123456789012345E-15 +addx61436 add 0 1.123456789012345E-16 -> 1.123456789012345E-16 +addx61437 add 0 1.123456789012345E-17 -> 1.123456789012345E-17 +addx61438 add 0 1.123456789012345E-18 -> 1.123456789012345E-18 +addx61439 add 0 1.123456789012345E-19 -> 1.123456789012345E-19 + +-- same, reversed 0 +addx61440 add 1.123456789012345 0 -> 1.123456789012345 +addx61441 add 1.123456789012345E-1 0 -> 0.1123456789012345 +addx61442 add 1.123456789012345E-2 0 -> 0.01123456789012345 +addx61443 add 1.123456789012345E-3 0 -> 0.001123456789012345 +addx61444 add 1.123456789012345E-4 0 -> 0.0001123456789012345 +addx61445 add 1.123456789012345E-5 0 -> 0.00001123456789012345 +addx61446 add 1.123456789012345E-6 0 -> 0.000001123456789012345 +addx61447 add 1.123456789012345E-7 0 -> 1.123456789012345E-7 +addx61448 add 1.123456789012345E-8 0 -> 1.123456789012345E-8 +addx61449 add 1.123456789012345E-9 0 -> 1.123456789012345E-9 +addx61450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10 +addx61451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11 +addx61452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12 +addx61453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13 +addx61454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14 +addx61455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15 +addx61456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16 +addx61457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17 +addx61458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18 +addx61459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19 + +-- same, Es on the 0 +addx61460 add 1.123456789012345 0E-0 -> 1.123456789012345 +addx61461 add 1.123456789012345 0E-1 -> 1.123456789012345 +addx61462 add 1.123456789012345 0E-2 -> 1.123456789012345 +addx61463 add 1.123456789012345 0E-3 -> 1.123456789012345 +addx61464 add 1.123456789012345 0E-4 -> 1.123456789012345 +addx61465 add 1.123456789012345 0E-5 -> 1.123456789012345 +addx61466 add 1.123456789012345 0E-6 -> 1.123456789012345 +addx61467 add 1.123456789012345 0E-7 -> 1.123456789012345 +addx61468 add 1.123456789012345 0E-8 -> 1.123456789012345 +addx61469 add 1.123456789012345 0E-9 -> 1.123456789012345 +addx61470 add 1.123456789012345 0E-10 -> 1.123456789012345 +addx61471 add 1.123456789012345 0E-11 -> 1.123456789012345 +addx61472 add 1.123456789012345 0E-12 -> 1.123456789012345 +addx61473 add 1.123456789012345 0E-13 -> 1.123456789012345 +addx61474 add 1.123456789012345 0E-14 -> 1.123456789012345 +addx61475 add 1.123456789012345 0E-15 -> 1.123456789012345 +-- next four flag Rounded because the 0 extends the result +addx61476 add 1.123456789012345 0E-16 -> 1.123456789012345 Rounded +addx61477 add 1.123456789012345 0E-17 -> 1.123456789012345 Rounded +addx61478 add 1.123456789012345 0E-18 -> 1.123456789012345 Rounded +addx61479 add 1.123456789012345 0E-19 -> 1.123456789012345 Rounded + +-- sum of two opposite-sign operands is exactly 0 and floor => -0 +rounding: half_up +-- exact zeros from zeros +addx61500 add 0 0E-19 -> 0E-19 +addx61501 add -0 0E-19 -> 0E-19 +addx61502 add 0 -0E-19 -> 0E-19 +addx61503 add -0 -0E-19 -> -0E-19 +addx61504 add 0E-400 0E-19 -> 0E-398 Clamped +addx61505 add -0E-400 0E-19 -> 0E-398 Clamped +addx61506 add 0E-400 -0E-19 -> 0E-398 Clamped +addx61507 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx61511 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61512 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61513 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61514 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx61515 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61516 add -1E-401 1E-401 -> 0E-398 Clamped +addx61517 add 1E-401 -1E-401 -> 0E-398 Clamped +addx61518 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: half_down +-- exact zeros from zeros +addx61520 add 0 0E-19 -> 0E-19 +addx61521 add -0 0E-19 -> 0E-19 +addx61522 add 0 -0E-19 -> 0E-19 +addx61523 add -0 -0E-19 -> -0E-19 +addx61524 add 0E-400 0E-19 -> 0E-398 Clamped +addx61525 add -0E-400 0E-19 -> 0E-398 Clamped +addx61526 add 0E-400 -0E-19 -> 0E-398 Clamped +addx61527 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx61531 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61532 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61533 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61534 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx61535 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61536 add -1E-401 1E-401 -> 0E-398 Clamped +addx61537 add 1E-401 -1E-401 -> 0E-398 Clamped +addx61538 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: half_even +-- exact zeros from zeros +addx61540 add 0 0E-19 -> 0E-19 +addx61541 add -0 0E-19 -> 0E-19 +addx61542 add 0 -0E-19 -> 0E-19 +addx61543 add -0 -0E-19 -> -0E-19 +addx61544 add 0E-400 0E-19 -> 0E-398 Clamped +addx61545 add -0E-400 0E-19 -> 0E-398 Clamped +addx61546 add 0E-400 -0E-19 -> 0E-398 Clamped +addx61547 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx61551 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61552 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61553 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61554 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx61555 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61556 add -1E-401 1E-401 -> 0E-398 Clamped +addx61557 add 1E-401 -1E-401 -> 0E-398 Clamped +addx61558 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: up +-- exact zeros from zeros +addx61560 add 0 0E-19 -> 0E-19 +addx61561 add -0 0E-19 -> 0E-19 +addx61562 add 0 -0E-19 -> 0E-19 +addx61563 add -0 -0E-19 -> -0E-19 +addx61564 add 0E-400 0E-19 -> 0E-398 Clamped +addx61565 add -0E-400 0E-19 -> 0E-398 Clamped +addx61566 add 0E-400 -0E-19 -> 0E-398 Clamped +addx61567 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx61571 add 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +addx61572 add -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +addx61573 add 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +addx61574 add -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +-- some exact zeros from non-zeros +addx61575 add 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow +addx61576 add -1E-401 1E-401 -> 0E-398 Clamped +addx61577 add 1E-401 -1E-401 -> 0E-398 Clamped +addx61578 add -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow + +rounding: down +-- exact zeros from zeros +addx61580 add 0 0E-19 -> 0E-19 +addx61581 add -0 0E-19 -> 0E-19 +addx61582 add 0 -0E-19 -> 0E-19 +addx61583 add -0 -0E-19 -> -0E-19 +addx61584 add 0E-400 0E-19 -> 0E-398 Clamped +addx61585 add -0E-400 0E-19 -> 0E-398 Clamped +addx61586 add 0E-400 -0E-19 -> 0E-398 Clamped +addx61587 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx61591 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61592 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61593 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61594 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx61595 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61596 add -1E-401 1E-401 -> 0E-398 Clamped +addx61597 add 1E-401 -1E-401 -> 0E-398 Clamped +addx61598 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +rounding: ceiling +-- exact zeros from zeros +addx61600 add 0 0E-19 -> 0E-19 +addx61601 add -0 0E-19 -> 0E-19 +addx61602 add 0 -0E-19 -> 0E-19 +addx61603 add -0 -0E-19 -> -0E-19 +addx61604 add 0E-400 0E-19 -> 0E-398 Clamped +addx61605 add -0E-400 0E-19 -> 0E-398 Clamped +addx61606 add 0E-400 -0E-19 -> 0E-398 Clamped +addx61607 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx61611 add 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +addx61612 add -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow +addx61613 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61614 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped +-- some exact zeros from non-zeros +addx61615 add 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow +addx61616 add -1E-401 1E-401 -> 0E-398 Clamped +addx61617 add 1E-401 -1E-401 -> 0E-398 Clamped +addx61618 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped + +-- and the extra-special ugly case; unusual minuses marked by -- * +rounding: floor +-- exact zeros from zeros +addx61620 add 0 0E-19 -> 0E-19 +addx61621 add -0 0E-19 -> -0E-19 -- * +addx61622 add 0 -0E-19 -> -0E-19 -- * +addx61623 add -0 -0E-19 -> -0E-19 +addx61624 add 0E-400 0E-19 -> 0E-398 Clamped +addx61625 add -0E-400 0E-19 -> -0E-398 Clamped -- * +addx61626 add 0E-400 -0E-19 -> -0E-398 Clamped -- * +addx61627 add -0E-400 -0E-19 -> -0E-398 Clamped +-- inexact zeros +addx61631 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61632 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61633 add 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +addx61634 add -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow +-- some exact zeros from non-zeros +addx61635 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped +addx61636 add -1E-401 1E-401 -> -0E-398 Clamped -- * +addx61637 add 1E-401 -1E-401 -> -0E-398 Clamped -- * +addx61638 add -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow + +-- Examples from SQL proposal (Krishna Kulkarni) +addx61701 add 130E-2 120E-2 -> 2.50 +addx61702 add 130E-2 12E-1 -> 2.50 +addx61703 add 130E-2 1E0 -> 2.30 +addx61704 add 1E2 1E4 -> 1.01E+4 +addx61705 subtract 130E-2 120E-2 -> 0.10 +addx61706 subtract 130E-2 12E-1 -> 0.10 +addx61707 subtract 130E-2 1E0 -> 0.30 +addx61708 subtract 1E2 1E4 -> -9.9E+3 + +-- Gappy coefficients; check residue handling even with full coefficient gap +rounding: half_even + +addx62001 add 1234567890123456 1 -> 1234567890123457 +addx62002 add 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded +addx62003 add 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded +addx62004 add 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded +addx62005 add 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded +addx62006 add 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded +addx62007 add 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded +addx62008 add 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded +addx62009 add 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded +addx62010 add 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded +addx62011 add 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded +addx62012 add 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded +addx62013 add 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded +addx62014 add 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded +addx62015 add 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded +addx62016 add 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded +addx62017 add 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded +addx62018 add 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded +addx62019 add 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded +addx62020 add 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded +addx62021 add 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded + +-- widening second argument at gap +addx62030 add 12345678 1 -> 12345679 +addx62031 add 12345678 0.1 -> 12345678.1 +addx62032 add 12345678 0.12 -> 12345678.12 +addx62033 add 12345678 0.123 -> 12345678.123 +addx62034 add 12345678 0.1234 -> 12345678.1234 +addx62035 add 12345678 0.12345 -> 12345678.12345 +addx62036 add 12345678 0.123456 -> 12345678.123456 +addx62037 add 12345678 0.1234567 -> 12345678.1234567 +addx62038 add 12345678 0.12345678 -> 12345678.12345678 +addx62039 add 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded +addx62040 add 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded +addx62041 add 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded +addx62042 add 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded +addx62043 add 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded +addx62044 add 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded +addx62045 add 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded +addx62046 add 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded +addx62047 add 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded +addx62048 add 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded +addx62049 add 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded +-- 90123456 +rounding: half_even +addx62050 add 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded +addx62051 add 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded +addx62052 add 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded +addx62053 add 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded +addx62054 add 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded +addx62055 add 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded +addx62056 add 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded +addx62057 add 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded +addx62060 add 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded +addx62061 add 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded +addx62062 add 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded +addx62063 add 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded +addx62064 add 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded +addx62065 add 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded +addx62066 add 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded +addx62067 add 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded +-- far-out residues (full coefficient gap is 16+15 digits) +rounding: up +addx62070 add 12345678 1E-8 -> 12345678.00000001 +addx62071 add 12345678 1E-9 -> 12345678.00000001 Inexact Rounded +addx62072 add 12345678 1E-10 -> 12345678.00000001 Inexact Rounded +addx62073 add 12345678 1E-11 -> 12345678.00000001 Inexact Rounded +addx62074 add 12345678 1E-12 -> 12345678.00000001 Inexact Rounded +addx62075 add 12345678 1E-13 -> 12345678.00000001 Inexact Rounded +addx62076 add 12345678 1E-14 -> 12345678.00000001 Inexact Rounded +addx62077 add 12345678 1E-15 -> 12345678.00000001 Inexact Rounded +addx62078 add 12345678 1E-16 -> 12345678.00000001 Inexact Rounded +addx62079 add 12345678 1E-17 -> 12345678.00000001 Inexact Rounded +addx62080 add 12345678 1E-18 -> 12345678.00000001 Inexact Rounded +addx62081 add 12345678 1E-19 -> 12345678.00000001 Inexact Rounded +addx62082 add 12345678 1E-20 -> 12345678.00000001 Inexact Rounded +addx62083 add 12345678 1E-25 -> 12345678.00000001 Inexact Rounded +addx62084 add 12345678 1E-30 -> 12345678.00000001 Inexact Rounded +addx62085 add 12345678 1E-31 -> 12345678.00000001 Inexact Rounded +addx62086 add 12345678 1E-32 -> 12345678.00000001 Inexact Rounded +addx62087 add 12345678 1E-33 -> 12345678.00000001 Inexact Rounded +addx62088 add 12345678 1E-34 -> 12345678.00000001 Inexact Rounded +addx62089 add 12345678 1E-35 -> 12345678.00000001 Inexact Rounded + +-- payload decapitate +precision: 5 +addx62100 add 11 sNaN123456789 -> NaN56789 Invalid_operation +addx62101 add -11 -sNaN123456789 -> -NaN56789 Invalid_operation +addx62102 add 11 NaN123456789 -> NaN56789 +addx62103 add -11 -NaN123456789 -> -NaN56789 -- Null tests addx9990 add 10 # -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/base.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/base.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/base.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- base.decTest -- base decimal <--> string conversions -- --- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,8 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 +extended: 1 -- This file tests base conversions from string to a decimal number -- and back to a string (in either Scientific or Engineering form) @@ -26,11 +27,10 @@ -- to conform to emax and precision settings (that is, numbers will -- conform to rules and exponent will be in permitted range). -precision: 15 +precision: 16 rounding: half_up -maxExponent: 999999999 -minExponent: -999999999 -extended: 1 +maxExponent: 384 +minExponent: -383 basx001 toSci 0 -> 0 basx002 toSci 1 -> 1 @@ -73,41 +73,62 @@ -- String [many more examples are implicitly tested elsewhere] -- strings without E cannot generate E in result -basx100 toSci "12" -> '12' -basx101 toSci "-76" -> '-76' -basx102 toSci "12.76" -> '12.76' -basx103 toSci "+12.76" -> '12.76' -basx104 toSci "012.76" -> '12.76' -basx105 toSci "+0.003" -> '0.003' -basx106 toSci "17." -> '17' -basx107 toSci ".5" -> '0.5' -basx108 toSci "044" -> '44' -basx109 toSci "0044" -> '44' -basx110 toSci "0.0005" -> '0.0005' -basx111 toSci "00.00005" -> '0.00005' -basx112 toSci "0.000005" -> '0.000005' -basx113 toSci "0.0000050" -> '0.0000050' -basx114 toSci "0.0000005" -> '5E-7' -basx115 toSci "0.00000005" -> '5E-8' -basx116 toSci "12345678.543210" -> '12345678.543210' -basx117 toSci "2345678.543210" -> '2345678.543210' -basx118 toSci "345678.543210" -> '345678.543210' -basx119 toSci "0345678.54321" -> '345678.54321' -basx120 toSci "345678.5432" -> '345678.5432' -basx121 toSci "+345678.5432" -> '345678.5432' -basx122 toSci "+0345678.5432" -> '345678.5432' -basx123 toSci "+00345678.5432" -> '345678.5432' -basx124 toSci "-345678.5432" -> '-345678.5432' -basx125 toSci "-0345678.5432" -> '-345678.5432' -basx126 toSci "-00345678.5432" -> '-345678.5432' +basx040 toSci "12" -> '12' +basx041 toSci "-76" -> '-76' +basx042 toSci "12.76" -> '12.76' +basx043 toSci "+12.76" -> '12.76' +basx044 toSci "012.76" -> '12.76' +basx045 toSci "+0.003" -> '0.003' +basx046 toSci "17." -> '17' +basx047 toSci ".5" -> '0.5' +basx048 toSci "044" -> '44' +basx049 toSci "0044" -> '44' +basx050 toSci "0.0005" -> '0.0005' +basx051 toSci "00.00005" -> '0.00005' +basx052 toSci "0.000005" -> '0.000005' +basx053 toSci "0.0000050" -> '0.0000050' +basx054 toSci "0.0000005" -> '5E-7' +basx055 toSci "0.00000005" -> '5E-8' +basx056 toSci "12345678.543210" -> '12345678.543210' +basx057 toSci "2345678.543210" -> '2345678.543210' +basx058 toSci "345678.543210" -> '345678.543210' +basx059 toSci "0345678.54321" -> '345678.54321' +basx060 toSci "345678.5432" -> '345678.5432' +basx061 toSci "+345678.5432" -> '345678.5432' +basx062 toSci "+0345678.5432" -> '345678.5432' +basx063 toSci "+00345678.5432" -> '345678.5432' +basx064 toSci "-345678.5432" -> '-345678.5432' +basx065 toSci "-0345678.5432" -> '-345678.5432' +basx066 toSci "-00345678.5432" -> '-345678.5432' -- examples -basx127 toSci "5E-6" -> '0.000005' -basx128 toSci "50E-7" -> '0.0000050' -basx129 toSci "5E-7" -> '5E-7' - +basx067 toSci "5E-6" -> '0.000005' +basx068 toSci "50E-7" -> '0.0000050' +basx069 toSci "5E-7" -> '5E-7' -- [No exotics as no Unicode] +-- rounded with dots in all (including edge) places +basx071 toSci .1234567890123456123 -> 0.1234567890123456 Inexact Rounded +basx072 toSci 1.234567890123456123 -> 1.234567890123456 Inexact Rounded +basx073 toSci 12.34567890123456123 -> 12.34567890123456 Inexact Rounded +basx074 toSci 123.4567890123456123 -> 123.4567890123456 Inexact Rounded +basx075 toSci 1234.567890123456123 -> 1234.567890123456 Inexact Rounded +basx076 toSci 12345.67890123456123 -> 12345.67890123456 Inexact Rounded +basx077 toSci 123456.7890123456123 -> 123456.7890123456 Inexact Rounded +basx078 toSci 1234567.890123456123 -> 1234567.890123456 Inexact Rounded +basx079 toSci 12345678.90123456123 -> 12345678.90123456 Inexact Rounded +basx080 toSci 123456789.0123456123 -> 123456789.0123456 Inexact Rounded +basx081 toSci 1234567890.123456123 -> 1234567890.123456 Inexact Rounded +basx082 toSci 12345678901.23456123 -> 12345678901.23456 Inexact Rounded +basx083 toSci 123456789012.3456123 -> 123456789012.3456 Inexact Rounded +basx084 toSci 1234567890123.456123 -> 1234567890123.456 Inexact Rounded +basx085 toSci 12345678901234.56123 -> 12345678901234.56 Inexact Rounded +basx086 toSci 123456789012345.6123 -> 123456789012345.6 Inexact Rounded +basx087 toSci 1234567890123456.123 -> 1234567890123456 Inexact Rounded +basx088 toSci 12345678901234561.23 -> 1.234567890123456E+16 Inexact Rounded +basx089 toSci 123456789012345612.3 -> 1.234567890123456E+17 Inexact Rounded +basx090 toSci 1234567890123456123. -> 1.234567890123456E+18 Inexact Rounded + -- Numbers with E basx130 toSci "0.000E-1" -> '0.0000' basx131 toSci "0.000E-2" -> '0.00000' @@ -225,21 +246,6 @@ basx262 toSci "0.1265E+8" -> '1.265E+7' basx263 toSci "0.1265E+20" -> '1.265E+19' -basx270 toSci "0.09e999" -> '9E+997' -basx271 toSci "0.9e999" -> '9E+998' -basx272 toSci "9e999" -> '9E+999' -basx273 toSci "9.9e999" -> '9.9E+999' -basx274 toSci "9.99e999" -> '9.99E+999' -basx275 toSci "9.99e-999" -> '9.99E-999' -basx276 toSci "9.9e-999" -> '9.9E-999' -basx277 toSci "9e-999" -> '9E-999' -basx279 toSci "99e-999" -> '9.9E-998' -basx280 toSci "999e-999" -> '9.99E-997' -basx281 toSci '0.9e-998' -> '9E-999' -basx282 toSci '0.09e-997' -> '9E-999' -basx283 toSci '0.1e1000' -> '1E+999' -basx284 toSci '10e-1000' -> '1.0E-999' - -- some more negative zeros [systematic tests below] basx290 toSci "-0.000E-1" -> '-0.0000' basx291 toSci "-0.000E-2" -> '-0.00000' @@ -418,6 +424,22 @@ basx474 toSci 1000000009000 -> 1.00000001E+12 Rounded Inexact basx475 toEng 1000000009000 -> 1.00000001E+12 Rounded Inexact +-- all-nines rounding +precision: 9 +rounding: half_up +basx270 toSci 999999999 -> 999999999 +basx271 toSci 9999999990 -> 9.99999999E+9 Rounded +basx272 toSci 9999999991 -> 9.99999999E+9 Rounded Inexact +basx273 toSci 9999999992 -> 9.99999999E+9 Rounded Inexact +basx274 toSci 9999999993 -> 9.99999999E+9 Rounded Inexact +basx275 toSci 9999999994 -> 9.99999999E+9 Rounded Inexact +basx276 toSci 9999999995 -> 1.00000000E+10 Rounded Inexact +basx277 toSci 9999999996 -> 1.00000000E+10 Rounded Inexact +basx278 toSci 9999999997 -> 1.00000000E+10 Rounded Inexact +basx279 toSci 9999999998 -> 1.00000000E+10 Rounded Inexact +basx280 toSci 9999999999 -> 1.00000000E+10 Rounded Inexact +basx281 toSci 9999999999999999 -> 1.00000000E+16 Rounded Inexact + -- check rounding modes heeded precision: 5 rounding: ceiling @@ -425,11 +447,11 @@ bsrx402 toSci 1.234549 -> 1.2346 Rounded Inexact bsrx403 toSci 1.234550 -> 1.2346 Rounded Inexact bsrx404 toSci 1.234551 -> 1.2346 Rounded Inexact -rounding: down +rounding: up bsrx405 toSci 1.23450 -> 1.2345 Rounded -bsrx406 toSci 1.234549 -> 1.2345 Rounded Inexact -bsrx407 toSci 1.234550 -> 1.2345 Rounded Inexact -bsrx408 toSci 1.234551 -> 1.2345 Rounded Inexact +bsrx406 toSci 1.234549 -> 1.2346 Rounded Inexact +bsrx407 toSci 1.234550 -> 1.2346 Rounded Inexact +bsrx408 toSci 1.234551 -> 1.2346 Rounded Inexact rounding: floor bsrx410 toSci 1.23450 -> 1.2345 Rounded bsrx411 toSci 1.234549 -> 1.2345 Rounded Inexact @@ -464,11 +486,11 @@ bsrx502 toSci -1.234549 -> -1.2345 Rounded Inexact bsrx503 toSci -1.234550 -> -1.2345 Rounded Inexact bsrx504 toSci -1.234551 -> -1.2345 Rounded Inexact -rounding: down +rounding: up bsrx505 toSci -1.23450 -> -1.2345 Rounded -bsrx506 toSci -1.234549 -> -1.2345 Rounded Inexact -bsrx507 toSci -1.234550 -> -1.2345 Rounded Inexact -bsrx508 toSci -1.234551 -> -1.2345 Rounded Inexact +bsrx506 toSci -1.234549 -> -1.2346 Rounded Inexact +bsrx507 toSci -1.234550 -> -1.2346 Rounded Inexact +bsrx508 toSci -1.234551 -> -1.2346 Rounded Inexact rounding: floor bsrx510 toSci -1.23450 -> -1.2345 Rounded bsrx511 toSci -1.234549 -> -1.2346 Rounded Inexact @@ -498,6 +520,24 @@ bsrx534 toSci -1.234650 -> -1.2347 Rounded Inexact bsrx535 toSci -1.234551 -> -1.2346 Rounded Inexact +-- a few larger exponents +maxExponent: 999999999 +minExponent: -999999999 +basx480 toSci "0.09e999" -> '9E+997' +basx481 toSci "0.9e999" -> '9E+998' +basx482 toSci "9e999" -> '9E+999' +basx483 toSci "9.9e999" -> '9.9E+999' +basx484 toSci "9.99e999" -> '9.99E+999' +basx485 toSci "9.99e-999" -> '9.99E-999' +basx486 toSci "9.9e-999" -> '9.9E-999' +basx487 toSci "9e-999" -> '9E-999' +basx489 toSci "99e-999" -> '9.9E-998' +basx490 toSci "999e-999" -> '9.99E-997' +basx491 toSci '0.9e-998' -> '9E-999' +basx492 toSci '0.09e-997' -> '9E-999' +basx493 toSci '0.1e1000' -> '1E+999' +basx494 toSci '10e-1000' -> '1.0E-999' + rounding: half_up precision: 9 @@ -580,32 +620,23 @@ basx574 toSci "xNaN" -> NaN Conversion_syntax basx575 toSci "0sNaN" -> NaN Conversion_syntax --- subnormals and overflows -basx576 toSci '99e999999999' -> Infinity Overflow Inexact Rounded -basx577 toSci '999e999999999' -> Infinity Overflow Inexact Rounded -basx578 toSci '0.9e-999999999' -> 9E-1000000000 Subnormal -basx579 toSci '0.09e-999999999' -> 9E-1000000001 Subnormal -basx580 toSci '0.1e1000000000' -> 1E+999999999 -basx581 toSci '10e-1000000000' -> 1.0E-999999999 -basx582 toSci '0.9e9999999999' -> Infinity Overflow Inexact Rounded -basx583 toSci '99e-9999999999' -> 0E-1000000007 Underflow Subnormal Inexact Rounded -basx584 toSci '111e9999999999' -> Infinity Overflow Inexact Rounded -basx585 toSci '1111e-9999999999' -> 0E-1000000007 Underflow Subnormal Inexact Rounded -basx586 toSci '1111e-99999999999' -> 0E-1000000007 Underflow Subnormal Inexact Rounded -basx587 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded --- negatives the same -basx588 toSci '-99e999999999' -> -Infinity Overflow Inexact Rounded -basx589 toSci '-999e999999999' -> -Infinity Overflow Inexact Rounded -basx590 toSci '-0.9e-999999999' -> -9E-1000000000 Subnormal -basx591 toSci '-0.09e-999999999' -> -9E-1000000001 Subnormal -basx592 toSci '-0.1e1000000000' -> -1E+999999999 -basx593 toSci '-10e-1000000000' -> -1.0E-999999999 -basx594 toSci '-0.9e9999999999' -> -Infinity Overflow Inexact Rounded -basx595 toSci '-99e-9999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded -basx596 toSci '-111e9999999999' -> -Infinity Overflow Inexact Rounded -basx597 toSci '-1111e-9999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded -basx598 toSci '-1111e-99999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded -basx599 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded +-- some baddies with dots and Es and dots and specials +basx576 toSci 'e+1' -> NaN Conversion_syntax +basx577 toSci '.e+1' -> NaN Conversion_syntax +basx578 toSci '+.e+1' -> NaN Conversion_syntax +basx579 toSci '-.e+' -> NaN Conversion_syntax +basx580 toSci '-.e' -> NaN Conversion_syntax +basx581 toSci 'E+1' -> NaN Conversion_syntax +basx582 toSci '.E+1' -> NaN Conversion_syntax +basx583 toSci '+.E+1' -> NaN Conversion_syntax +basx584 toSci '-.E+' -> NaN Conversion_syntax +basx585 toSci '-.E' -> NaN Conversion_syntax + +basx586 toSci '.NaN' -> NaN Conversion_syntax +basx587 toSci '-.NaN' -> NaN Conversion_syntax +basx588 toSci '+.sNaN' -> NaN Conversion_syntax +basx589 toSci '+.Inf' -> NaN Conversion_syntax +basx590 toSci '.Infinity' -> NaN Conversion_syntax -- Zeros basx601 toSci 0.000000000 -> 0E-9 @@ -686,6 +717,17 @@ basx678 toSci 0.00E-8 -> 0E-10 basx679 toSci 0.00E-9 -> 0E-11 +basx680 toSci 000000. -> 0 +basx681 toSci 00000. -> 0 +basx682 toSci 0000. -> 0 +basx683 toSci 000. -> 0 +basx684 toSci 00. -> 0 +basx685 toSci 0. -> 0 +basx686 toSci +00000. -> 0 +basx687 toSci -00000. -> -0 +basx688 toSci +0. -> 0 +basx689 toSci -0. -> -0 + -- Specials precision: 4 basx700 toSci "NaN" -> NaN @@ -868,6 +910,62 @@ basx878 toEng 0.00E-8 -> 0.0E-9 basx879 toEng 0.00E-9 -> 0.00E-9 + +rounding: half_up +precision: 9 +-- subnormals and overflows +basx906 toSci '99e999999999' -> Infinity Overflow Inexact Rounded +basx907 toSci '999e999999999' -> Infinity Overflow Inexact Rounded +basx908 toSci '0.9e-999999999' -> 9E-1000000000 Subnormal +basx909 toSci '0.09e-999999999' -> 9E-1000000001 Subnormal +basx910 toSci '0.1e1000000000' -> 1E+999999999 +basx911 toSci '10e-1000000000' -> 1.0E-999999999 +basx912 toSci '0.9e9999999999' -> Infinity Overflow Inexact Rounded +basx913 toSci '99e-9999999999' -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +basx914 toSci '111e9999999999' -> Infinity Overflow Inexact Rounded +basx915 toSci '1111e-9999999999' -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +basx916 toSci '1111e-99999999999' -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +basx917 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +-- negatives the same +basx918 toSci '-99e999999999' -> -Infinity Overflow Inexact Rounded +basx919 toSci '-999e999999999' -> -Infinity Overflow Inexact Rounded +basx920 toSci '-0.9e-999999999' -> -9E-1000000000 Subnormal +basx921 toSci '-0.09e-999999999' -> -9E-1000000001 Subnormal +basx922 toSci '-0.1e1000000000' -> -1E+999999999 +basx923 toSci '-10e-1000000000' -> -1.0E-999999999 +basx924 toSci '-0.9e9999999999' -> -Infinity Overflow Inexact Rounded +basx925 toSci '-99e-9999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +basx926 toSci '-111e9999999999' -> -Infinity Overflow Inexact Rounded +basx927 toSci '-1111e-9999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +basx928 toSci '-1111e-99999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +basx929 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded + +rounding: ceiling +basx930 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +basx931 toSci '-7e1000000000' -> -9.99999999E+999999999 Overflow Inexact Rounded +rounding: up +basx932 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +basx933 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded +rounding: down +basx934 toSci '7e1000000000' -> 9.99999999E+999999999 Overflow Inexact Rounded +basx935 toSci '-7e1000000000' -> -9.99999999E+999999999 Overflow Inexact Rounded +rounding: floor +basx936 toSci '7e1000000000' -> 9.99999999E+999999999 Overflow Inexact Rounded +basx937 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded + +rounding: half_up +basx938 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +basx939 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded +rounding: half_even +basx940 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +basx941 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded +rounding: half_down +basx942 toSci '7e1000000000' -> Infinity Overflow Inexact Rounded +basx943 toSci '-7e1000000000' -> -Infinity Overflow Inexact Rounded + +rounding: half_even + + -- Giga exponent initial tests maxExponent: 999999999 minExponent: -999999999 @@ -987,8 +1085,8 @@ emax226 toSci 1E-8 -> 1E-8 Subnormal emax227 toSci 1E-9 -> 1E-9 Subnormal emax228 toSci 1E-10 -> 1E-10 Subnormal -emax229 toSci 1E-11 -> 0E-10 Underflow Subnormal Inexact Rounded -emax230 toSci 1E-12 -> 0E-10 Underflow Subnormal Inexact Rounded +emax229 toSci 1E-11 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +emax230 toSci 1E-12 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped maxexponent: 7 minexponent: -7 @@ -1003,7 +1101,7 @@ maxexponent: 9 minexponent: -9 -emax240 toSci 1E-21 -> 0E-17 Subnormal Underflow Inexact Rounded +emax240 toSci 1E-21 -> 0E-17 Subnormal Underflow Inexact Rounded Clamped emax241 toSci 1E-10 -> 1E-10 Subnormal emax242 toSci 1E-9 -> 1E-9 emax243 toSci 1E-8 -> 1E-8 @@ -1015,7 +1113,7 @@ maxexponent: 10 -- boundary minexponent: -10 -emax250 toSci 1E-21 -> 0E-18 Underflow Subnormal Inexact Rounded +emax250 toSci 1E-21 -> 0E-18 Underflow Subnormal Inexact Rounded Clamped emax251 toSci 1E-11 -> 1E-11 Subnormal emax252 toSci 1E-10 -> 1E-10 emax253 toSci 1E-9 -> 1E-9 @@ -1025,7 +1123,7 @@ emax257 toSci 1E+10 -> 1E+10 emax258 toSci 1E+11 -> Infinity Overflow Inexact Rounded -emax260 toSci 1.00E-21 -> 0E-18 Underflow Subnormal Inexact Rounded +emax260 toSci 1.00E-21 -> 0E-18 Underflow Subnormal Inexact Rounded Clamped emax261 toSci 1.00E-11 -> 1.00E-11 Subnormal emax262 toSci 1.00E-10 -> 1.00E-10 emax263 toSci 1.00E-9 -> 1.00E-9 @@ -1034,7 +1132,7 @@ emax266 toSci 1.00E+9 -> 1.00E+9 emax267 toSci 1.00E+10 -> 1.00E+10 emax268 toSci 1.00E+11 -> Infinity Overflow Inexact Rounded -emax270 toSci 9.99E-21 -> 0E-18 Underflow Subnormal Inexact Rounded +emax270 toSci 9.99E-21 -> 0E-18 Underflow Subnormal Inexact Rounded Clamped emax271 toSci 9.99E-11 -> 9.99E-11 Subnormal emax272 toSci 9.99E-10 -> 9.99E-10 emax273 toSci 9.99E-9 -> 9.99E-9 @@ -1046,7 +1144,7 @@ maxexponent: 99 minexponent: -99 -emax280 toSci 1E-120 -> 0E-107 Underflow Subnormal Inexact Rounded +emax280 toSci 1E-120 -> 0E-107 Underflow Subnormal Inexact Rounded Clamped emax281 toSci 1E-100 -> 1E-100 Subnormal emax282 toSci 1E-99 -> 1E-99 emax283 toSci 1E-98 -> 1E-98 @@ -1093,7 +1191,7 @@ maxexponent: 999999999 minexponent: -999999999 -emax347 toSci 1E-1000000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded +emax347 toSci 1E-1000000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped emax348 toSci 1E-1000000007 -> 1E-1000000007 Subnormal emax349 toSci 1E-1000000000 -> 1E-1000000000 Subnormal emax350 toSci 1E-999999999 -> 1E-999999999 @@ -1103,7 +1201,7 @@ emax354 toSci 1.000E-999999999 -> 1.000E-999999999 emax355 toSci 1.000E+999999999 -> 1.000E+999999999 emax356 toSci 1.000E+1000000000 -> Infinity Overflow Inexact Rounded -emax357 toSci 1.001E-1000000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded +emax357 toSci 1.001E-1000000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped emax358 toSci 1.001E-1000000007 -> 1E-1000000007 Subnormal Inexact Rounded Underflow emax359 toSci 1.001E-1000000000 -> 1.001E-1000000000 Subnormal emax360 toSci 1.001E-999999999 -> 1.001E-999999999 @@ -1113,7 +1211,7 @@ emax364 toSci 9.000E-999999999 -> 9.000E-999999999 emax365 toSci 9.000E+999999999 -> 9.000E+999999999 emax366 toSci 9.000E+1000000000 -> Infinity Overflow Inexact Rounded -emax367 toSci 9.999E-1000000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded +emax367 toSci 9.999E-1000000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped emax368 toSci 9.999E-1000000008 -> 1E-1000000007 Underflow Subnormal Inexact Rounded emax369 toSci 9.999E-1000000007 -> 1.0E-1000000006 Underflow Subnormal Inexact Rounded emax370 toSci 9.999E-1000000000 -> 9.999E-1000000000 Subnormal @@ -1129,11 +1227,11 @@ emax379 toSci -1.000E-999999999 -> -1.000E-999999999 emax380 toSci -1.000E+999999999 -> -1.000E+999999999 emax381 toSci -1.000E+1000000000 -> -Infinity Overflow Inexact Rounded -emax382 toSci -1.001E-1000000008 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +emax382 toSci -1.001E-1000000008 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped emax383 toSci -1.001E-999999999 -> -1.001E-999999999 emax384 toSci -1.001E+999999999 -> -1.001E+999999999 emax385 toSci -1.001E+1000000000 -> -Infinity Overflow Inexact Rounded -emax386 toSci -9.000E-1000000123 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +emax386 toSci -9.000E-1000000123 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped emax387 toSci -9.000E-999999999 -> -9.000E-999999999 emax388 toSci -9.000E+999999999 -> -9.000E+999999999 emax389 toSci -9.000E+1000000000 -> -Infinity Overflow Inexact Rounded @@ -1168,11 +1266,11 @@ emax417 toSci 0.000250E-999 -> 2E-1003 Underflow Subnormal Inexact Rounded emax418 toSci 0.000251E-999 -> 3E-1003 Underflow Subnormal Inexact Rounded emax419 toSci 0.00009E-999 -> 1E-1003 Underflow Subnormal Inexact Rounded -emax420 toSci 0.00005E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded -emax421 toSci 0.00003E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded -emax422 toSci 0.000009E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded -emax423 toSci 0.000005E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded -emax424 toSci 0.000003E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded +emax420 toSci 0.00005E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +emax421 toSci 0.00003E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +emax422 toSci 0.000009E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +emax423 toSci 0.000005E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +emax424 toSci 0.000003E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped emax425 toSci 0.001049E-999 -> 1.0E-1002 Underflow Subnormal Inexact Rounded emax426 toSci 0.001050E-999 -> 1.0E-1002 Underflow Subnormal Inexact Rounded @@ -1223,9 +1321,9 @@ emax473 toSci 0.0099999E-999 -> 1.00E-1001 Underflow Subnormal Inexact Rounded emax474 toSci 0.00099999E-999 -> 1.0E-1002 Underflow Subnormal Inexact Rounded emax475 toSci 0.000099999E-999 -> 1E-1003 Underflow Subnormal Inexact Rounded -emax476 toSci 0.0000099999E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded -emax477 toSci 0.00000099999E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded -emax478 toSci 0.000000099999E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded +emax476 toSci 0.0000099999E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +emax477 toSci 0.00000099999E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +emax478 toSci 0.000000099999E-999 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped -- Exponents with insignificant leading zeros precision: 16 @@ -1248,9 +1346,9 @@ basx1021 tosci 1e+2147483649 -> Infinity Overflow Inexact Rounded basx1022 tosci 1e+2147483648 -> Infinity Overflow Inexact Rounded basx1023 tosci 1e+2147483647 -> Infinity Overflow Inexact Rounded -basx1024 tosci 1e-2147483647 -> 0E-1000000014 Underflow Subnormal Inexact Rounded -basx1025 tosci 1e-2147483648 -> 0E-1000000014 Underflow Subnormal Inexact Rounded -basx1026 tosci 1e-2147483649 -> 0E-1000000014 Underflow Subnormal Inexact Rounded +basx1024 tosci 1e-2147483647 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped +basx1025 tosci 1e-2147483648 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped +basx1026 tosci 1e-2147483649 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped -- same unbalanced precision: 7 maxExponent: 96 @@ -1258,9 +1356,9 @@ basx1031 tosci 1e+2147483649 -> Infinity Overflow Inexact Rounded basx1032 tosci 1e+2147483648 -> Infinity Overflow Inexact Rounded basx1033 tosci 1e+2147483647 -> Infinity Overflow Inexact Rounded -basx1034 tosci 1e-2147483647 -> 0E-101 Underflow Subnormal Inexact Rounded -basx1035 tosci 1e-2147483648 -> 0E-101 Underflow Subnormal Inexact Rounded -basx1036 tosci 1e-2147483649 -> 0E-101 Underflow Subnormal Inexact Rounded +basx1034 tosci 1e-2147483647 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +basx1035 tosci 1e-2147483648 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +basx1036 tosci 1e-2147483649 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped -- check for double-rounded subnormals precision: 5 @@ -1270,3 +1368,44 @@ basx1042 toSci 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow basx1043 toSci 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow +-- clamped zeros [see also clamp.decTest] +precision: 34 +maxExponent: 6144 +minExponent: -6143 + +basx1061 apply 0e+10000 -> 0E+6144 Clamped +basx1062 apply 0e-10000 -> 0E-6176 Clamped +basx1063 apply -0e+10000 -> -0E+6144 Clamped +basx1064 apply -0e-10000 -> -0E-6176 Clamped + +precision: 16 +maxExponent: 384 +minExponent: -383 + +basx1065 apply 0e+10000 -> 0E+384 Clamped +basx1066 apply 0e-10000 -> 0E-398 Clamped +basx1067 apply -0e+10000 -> -0E+384 Clamped +basx1068 apply -0e-10000 -> -0E-398 Clamped + +-- same with IEEE clamping +clamp: 1 + +precision: 34 +maxExponent: 6144 +minExponent: -6143 + +basx1071 apply 0e+10000 -> 0E+6111 Clamped +basx1072 apply 0e-10000 -> 0E-6176 Clamped +basx1073 apply -0e+10000 -> -0E+6111 Clamped +basx1074 apply -0e-10000 -> -0E-6176 Clamped + +precision: 16 +maxExponent: 384 +minExponent: -383 + +basx1075 apply 0e+10000 -> 0E+369 Clamped +basx1076 apply 0e-10000 -> 0E-398 Clamped +basx1077 apply -0e+10000 -> -0E+369 Clamped +basx1078 apply -0e-10000 -> -0E-398 Clamped + + Modified: python/trunk/Lib/test/decimaltestdata/clamp.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/clamp.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/clamp.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- clamp.decTest -- clamped exponent tests (format-independent) -- --- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. -- +-- Copyright (c) IBM Corporation, 2000, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- This set of tests uses the same limits as the 8-byte concrete -- representation, but applies clamping without using format-specific @@ -73,10 +73,10 @@ clam093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded clam094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded clam095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded -clam096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded -clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded -clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded -clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded +clam096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped +clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped +clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped +clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped -- Same again, negatives -- Nmax and similar @@ -112,10 +112,10 @@ clam193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded clam194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded clam195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded -clam196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded -clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded -clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded -clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded +clam196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped +clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped +clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped +clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped -- zeros clam401 apply 0E-500 -> 0E-398 Clamped @@ -184,6 +184,20 @@ clam671 apply 9E+369 -> 9E+369 clam673 apply 9E+368 -> 9E+368 +-- subnormals clamped to 0-Etiny +precision: 16 +maxExponent: 384 +minExponent: -383 +clam681 apply 7E-398 -> 7E-398 Subnormal +clam682 apply 0E-398 -> 0E-398 +clam683 apply 7E-399 -> 1E-398 Subnormal Underflow Inexact Rounded +clam684 apply 4E-399 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded +clam685 apply 7E-400 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded +clam686 apply 7E-401 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded +clam687 apply 0E-399 -> 0E-398 Clamped +clam688 apply 0E-400 -> 0E-398 Clamped +clam689 apply 0E-401 -> 0E-398 Clamped + -- example from documentation precision: 7 rounding: half_even Modified: python/trunk/Lib/test/decimaltestdata/compare.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/compare.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/compare.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ --- compare.decTest -- decimal comparison -- --- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. -- +-- compare.decTest -- decimal comparison that allows quiet NaNs -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,11 +17,11 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- Note that we cannot assume add/subtract tests cover paths adequately, -- here, because the code might be quite different (comparison cannot --- overflow or underflow, so actual subtractions are not necesary). +-- overflow or underflow, so actual subtractions are not necessary). extended: 1 @@ -112,10 +112,10 @@ -- now some cases which might overflow if subtract were used maxexponent: 999999999 minexponent: -999999999 -comx090 compare 9.99999999E+999999999 9.99999999E+999999999 -> 0 -comx091 compare -9.99999999E+999999999 9.99999999E+999999999 -> -1 -comx092 compare 9.99999999E+999999999 -9.99999999E+999999999 -> 1 -comx093 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0 +comx095 compare 9.99999999E+999999999 9.99999999E+999999999 -> 0 +comx096 compare -9.99999999E+999999999 9.99999999E+999999999 -> -1 +comx097 compare 9.99999999E+999999999 -9.99999999E+999999999 -> 1 +comx098 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0 -- some differing length/exponent cases comx100 compare 7.0 7.0 -> 0 @@ -265,6 +265,21 @@ comx449 compare -8 -.9E+1 -> 1 comx450 compare -8 -90E-1 -> 1 +-- misalignment traps for little-endian +comx451 compare 1.0 0.1 -> 1 +comx452 compare 0.1 1.0 -> -1 +comx453 compare 10.0 0.1 -> 1 +comx454 compare 0.1 10.0 -> -1 +comx455 compare 100 1.0 -> 1 +comx456 compare 1.0 100 -> -1 +comx457 compare 1000 10.0 -> 1 +comx458 compare 10.0 1000 -> -1 +comx459 compare 10000 100.0 -> 1 +comx460 compare 100.0 10000 -> -1 +comx461 compare 100000 1000.0 -> 1 +comx462 compare 1000.0 100000 -> -1 +comx463 compare 1000000 10000.0 -> 1 +comx464 compare 10000.0 1000000 -> -1 -- testcases that subtract to lots of zeros at boundaries [pgr] precision: 40 @@ -362,7 +377,7 @@ comx569 compare 1E+13 1 -> 1 comx570 compare 1E+14 1 -> 1 comx571 compare 1E+15 1 -> 1 --- similar with an useful coefficient, one side only +-- similar with a useful coefficient, one side only comx580 compare 0.000000987654321 1E-15 -> 1 comx581 compare 0.000000987654321 1E-14 -> 1 comx582 compare 0.000000987654321 1E-13 -> 1 @@ -712,6 +727,32 @@ comx907 compare -1e-777777777 1e-411111111 -> -1 comx908 compare -1e-777777777 -1e-411111111 -> 1 +-- spread zeros +comx910 compare 0E-383 0 -> 0 +comx911 compare 0E-383 -0 -> 0 +comx912 compare -0E-383 0 -> 0 +comx913 compare -0E-383 -0 -> 0 +comx914 compare 0E-383 0E+384 -> 0 +comx915 compare 0E-383 -0E+384 -> 0 +comx916 compare -0E-383 0E+384 -> 0 +comx917 compare -0E-383 -0E+384 -> 0 +comx918 compare 0 0E+384 -> 0 +comx919 compare 0 -0E+384 -> 0 +comx920 compare -0 0E+384 -> 0 +comx921 compare -0 -0E+384 -> 0 +comx930 compare 0E+384 0 -> 0 +comx931 compare 0E+384 -0 -> 0 +comx932 compare -0E+384 0 -> 0 +comx933 compare -0E+384 -0 -> 0 +comx934 compare 0E+384 0E-383 -> 0 +comx935 compare 0E+384 -0E-383 -> 0 +comx936 compare -0E+384 0E-383 -> 0 +comx937 compare -0E+384 -0E-383 -> 0 +comx938 compare 0 0E-383 -> 0 +comx939 compare 0 -0E-383 -> 0 +comx940 compare -0 0E-383 -> 0 +comx941 compare -0 -0E-383 -> 0 + -- Null tests comx990 compare 10 # -> NaN Invalid_operation comx991 compare # 10 -> NaN Invalid_operation Deleted: /python/trunk/Lib/test/decimaltestdata/decimal128.decTest ============================================================================== --- /python/trunk/Lib/test/decimaltestdata/decimal128.decTest Thu Sep 13 20:13:15 2007 +++ (empty file) @@ -1,441 +0,0 @@ ------------------------------------------------------------------------- --- decimal128.decTest -- decimal sixteen-byte format testcases -- --- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc at uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.39 - --- This set of tests is for the sixteen-byte concrete representation. --- Its characteristics are: --- --- 1 bit sign --- 5 bits combination field --- 12 bits exponent continuation --- 110 bits coefficient continuation --- --- Total exponent length 14 bits --- Total coefficient length 114 bits (34 digits) --- --- Elimit = 12287 (maximum encoded exponent) --- Emax = 6144 (largest exponent value) --- Emin = -6143 (smallest exponent value) --- bias = 6176 (subtracted from encoded exponent) = -Etiny - -extended: 1 -precision: 34 -rounding: half_up -maxExponent: 6144 -minExponent: -6143 - --- General testcases --- (mostly derived from the Strawman 4 document and examples) -decg001 apply #A20780000000000000000000000003D0 -> -7.50 -decg002 apply -7.50 -> #A20780000000000000000000000003D0 - --- Normality -decf010 apply 1234567890123456789012345678901234 -> #2608134b9c1e28e56f3c127177823534 -decf011 apply 1234567890123456789012345678901234.0 -> #2608134b9c1e28e56f3c127177823534 Rounded -decf012 apply 1234567890123456789012345678901234.1 -> #2608134b9c1e28e56f3c127177823534 Rounded Inexact -decf013 apply -1234567890123456789012345678901234 -> #a608134b9c1e28e56f3c127177823534 -decf014 apply -1234567890123456789012345678901234.0 -> #a608134b9c1e28e56f3c127177823534 Rounded -decf015 apply -1234567890123456789012345678901234.1 -> #a608134b9c1e28e56f3c127177823534 Rounded Inexact - - --- Nmax and similar -decf022 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff -decf023 apply #77ffcff3fcff3fcff3fcff3fcff3fcff -> 9.999999999999999999999999999999999E+6144 -decf024 apply 1.234567890123456789012345678901234E+6144 -> #47ffd34b9c1e28e56f3c127177823534 -decf025 apply #47ffd34b9c1e28e56f3c127177823534 -> 1.234567890123456789012345678901234E+6144 --- fold-downs (more below) -decf030 apply 1.23E+6144 -> #47ffd300000000000000000000000000 Clamped -decf031 apply #47ffd300000000000000000000000000 -> 1.230000000000000000000000000000000E+6144 -decf032 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped -decf033 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144 - --- overflows -maxExponent: 9999 -- set high so conversion causes the overflow -minExponent: -9999 -decf040 apply 10E+6144 -> #78000000000000000000000000000000 Overflow Rounded Inexact -decf041 apply 1.000000000000000E+6145 -> #78000000000000000000000000000000 Overflow Rounded Inexact -maxExponent: 6144 -minExponent: -6143 - -decf051 apply 12345 -> #220800000000000000000000000049c5 -decf052 apply #220800000000000000000000000049c5 -> 12345 -decf053 apply 1234 -> #22080000000000000000000000000534 -decf054 apply #22080000000000000000000000000534 -> 1234 -decf055 apply 123 -> #220800000000000000000000000000a3 -decf056 apply #220800000000000000000000000000a3 -> 123 -decf057 apply 12 -> #22080000000000000000000000000012 -decf058 apply #22080000000000000000000000000012 -> 12 -decf059 apply 1 -> #22080000000000000000000000000001 -decf060 apply #22080000000000000000000000000001 -> 1 -decf061 apply 1.23 -> #220780000000000000000000000000a3 -decf062 apply #220780000000000000000000000000a3 -> 1.23 -decf063 apply 123.45 -> #220780000000000000000000000049c5 -decf064 apply #220780000000000000000000000049c5 -> 123.45 - --- Nmin and below -decf071 apply 1E-6143 -> #00084000000000000000000000000001 -decf072 apply #00084000000000000000000000000001 -> 1E-6143 -decf073 apply 1.000000000000000000000000000000000E-6143 -> #04000000000000000000000000000000 -decf074 apply #04000000000000000000000000000000 -> 1.000000000000000000000000000000000E-6143 -decf075 apply 1.000000000000000000000000000000001E-6143 -> #04000000000000000000000000000001 -decf076 apply #04000000000000000000000000000001 -> 1.000000000000000000000000000000001E-6143 - -decf077 apply 0.100000000000000000000000000000000E-6143 -> #00000800000000000000000000000000 Subnormal -decf078 apply #00000800000000000000000000000000 -> 1.00000000000000000000000000000000E-6144 Subnormal -decf079 apply 0.000000000000000000000000000000010E-6143 -> #00000000000000000000000000000010 Subnormal -decf080 apply #00000000000000000000000000000010 -> 1.0E-6175 Subnormal -decf081 apply 0.00000000000000000000000000000001E-6143 -> #00004000000000000000000000000001 Subnormal -decf082 apply #00004000000000000000000000000001 -> 1E-6175 Subnormal -decf083 apply 0.000000000000000000000000000000001E-6143 -> #00000000000000000000000000000001 Subnormal -decf084 apply #00000000000000000000000000000001 -> 1E-6176 Subnormal - --- underflows -decf090 apply 1e-6176 -> #00000000000000000000000000000001 Subnormal -decf091 apply 1.9e-6176 -> #00000000000000000000000000000002 Subnormal Underflow Inexact Rounded -decf092 apply 1.1e-6176 -> #00000000000000000000000000000001 Subnormal Underflow Inexact Rounded -decf093 apply 1.00000000001e-6176 -> #00000000000000000000000000000001 Subnormal Underflow Inexact Rounded -decf094 apply 1.00000000000001e-6176 -> #00000000000000000000000000000001 Subnormal Underflow Inexact Rounded -decf095 apply 1.000000000000001e-6176 -> #00000000000000000000000000000001 Subnormal Underflow Inexact Rounded -decf096 apply 0.1e-6176 -> #00000000000000000000000000000000 Subnormal Underflow Inexact Rounded -decf097 apply 0.00000000001e-6176 -> #00000000000000000000000000000000 Subnormal Underflow Inexact Rounded -decf098 apply 0.00000000000001e-6176 -> #00000000000000000000000000000000 Subnormal Underflow Inexact Rounded -decf099 apply 0.000000000000001e-6176 -> #00000000000000000000000000000000 Subnormal Underflow Inexact Rounded -decf100 apply 999999999999999999999999999999999e-6176 -> #00000ff3fcff3fcff3fcff3fcff3fcff Subnormal - --- same again, negatives --- Nmax and similar -decf122 apply -9.999999999999999999999999999999999E+6144 -> #f7ffcff3fcff3fcff3fcff3fcff3fcff -decf123 apply #f7ffcff3fcff3fcff3fcff3fcff3fcff -> -9.999999999999999999999999999999999E+6144 -decf124 apply -1.234567890123456789012345678901234E+6144 -> #c7ffd34b9c1e28e56f3c127177823534 -decf125 apply #c7ffd34b9c1e28e56f3c127177823534 -> -1.234567890123456789012345678901234E+6144 --- fold-downs (more below) -decf130 apply -1.23E+6144 -> #c7ffd300000000000000000000000000 Clamped -decf131 apply #c7ffd300000000000000000000000000 -> -1.230000000000000000000000000000000E+6144 -decf132 apply -1E+6144 -> #c7ffc000000000000000000000000000 Clamped -decf133 apply #c7ffc000000000000000000000000000 -> -1.000000000000000000000000000000000E+6144 - --- overflows -maxExponent: 9999 -- set high so conversion causes the overflow -minExponent: -9999 -decf140 apply -10E+6144 -> #f8000000000000000000000000000000 Overflow Rounded Inexact -decf141 apply -1.000000000000000E+6145 -> #f8000000000000000000000000000000 Overflow Rounded Inexact -maxExponent: 6144 -minExponent: -6143 - -decf151 apply -12345 -> #a20800000000000000000000000049c5 -decf152 apply #a20800000000000000000000000049c5 -> -12345 -decf153 apply -1234 -> #a2080000000000000000000000000534 -decf154 apply #a2080000000000000000000000000534 -> -1234 -decf155 apply -123 -> #a20800000000000000000000000000a3 -decf156 apply #a20800000000000000000000000000a3 -> -123 -decf157 apply -12 -> #a2080000000000000000000000000012 -decf158 apply #a2080000000000000000000000000012 -> -12 -decf159 apply -1 -> #a2080000000000000000000000000001 -decf160 apply #a2080000000000000000000000000001 -> -1 -decf161 apply -1.23 -> #a20780000000000000000000000000a3 -decf162 apply #a20780000000000000000000000000a3 -> -1.23 -decf163 apply -123.45 -> #a20780000000000000000000000049c5 -decf164 apply #a20780000000000000000000000049c5 -> -123.45 - --- Nmin and below -decf171 apply -1E-6143 -> #80084000000000000000000000000001 -decf172 apply #80084000000000000000000000000001 -> -1E-6143 -decf173 apply -1.000000000000000000000000000000000E-6143 -> #84000000000000000000000000000000 -decf174 apply #84000000000000000000000000000000 -> -1.000000000000000000000000000000000E-6143 -decf175 apply -1.000000000000000000000000000000001E-6143 -> #84000000000000000000000000000001 -decf176 apply #84000000000000000000000000000001 -> -1.000000000000000000000000000000001E-6143 - -decf177 apply -0.100000000000000000000000000000000E-6143 -> #80000800000000000000000000000000 Subnormal -decf178 apply #80000800000000000000000000000000 -> -1.00000000000000000000000000000000E-6144 Subnormal -decf179 apply -0.000000000000000000000000000000010E-6143 -> #80000000000000000000000000000010 Subnormal -decf180 apply #80000000000000000000000000000010 -> -1.0E-6175 Subnormal -decf181 apply -0.00000000000000000000000000000001E-6143 -> #80004000000000000000000000000001 Subnormal -decf182 apply #80004000000000000000000000000001 -> -1E-6175 Subnormal -decf183 apply -0.000000000000000000000000000000001E-6143 -> #80000000000000000000000000000001 Subnormal -decf184 apply #80000000000000000000000000000001 -> -1E-6176 Subnormal - --- underflows -decf190 apply -1e-6176 -> #80000000000000000000000000000001 Subnormal -decf191 apply -1.9e-6176 -> #80000000000000000000000000000002 Subnormal Underflow Inexact Rounded -decf192 apply -1.1e-6176 -> #80000000000000000000000000000001 Subnormal Underflow Inexact Rounded -decf193 apply -1.00000000001e-6176 -> #80000000000000000000000000000001 Subnormal Underflow Inexact Rounded -decf194 apply -1.00000000000001e-6176 -> #80000000000000000000000000000001 Subnormal Underflow Inexact Rounded -decf195 apply -1.000000000000001e-6176 -> #80000000000000000000000000000001 Subnormal Underflow Inexact Rounded -decf196 apply -0.1e-6176 -> #80000000000000000000000000000000 Subnormal Underflow Inexact Rounded -decf197 apply -0.00000000001e-6176 -> #80000000000000000000000000000000 Subnormal Underflow Inexact Rounded -decf198 apply -0.00000000000001e-6176 -> #80000000000000000000000000000000 Subnormal Underflow Inexact Rounded -decf199 apply -0.000000000000001e-6176 -> #80000000000000000000000000000000 Subnormal Underflow Inexact Rounded -decf200 apply -999999999999999999999999999999999e-6176 -> #80000ff3fcff3fcff3fcff3fcff3fcff Subnormal - --- zeros -decf400 apply 0E-8000 -> #00000000000000000000000000000000 Clamped -decf401 apply 0E-6177 -> #00000000000000000000000000000000 Clamped -decf402 apply 0E-6176 -> #00000000000000000000000000000000 -decf403 apply #00000000000000000000000000000000 -> 0E-6176 -decf404 apply 0.000000000000000000000000000000000E-6143 -> #00000000000000000000000000000000 -decf405 apply #00000000000000000000000000000000 -> 0E-6176 -decf406 apply 0E-2 -> #22078000000000000000000000000000 -decf407 apply #22078000000000000000000000000000 -> 0.00 -decf408 apply 0 -> #22080000000000000000000000000000 -decf409 apply #22080000000000000000000000000000 -> 0 -decf410 apply 0E+3 -> #2208c000000000000000000000000000 -decf411 apply #2208c000000000000000000000000000 -> 0E+3 -decf412 apply 0E+6111 -> #43ffc000000000000000000000000000 -decf413 apply #43ffc000000000000000000000000000 -> 0E+6111 --- clamped zeros... -decf414 apply 0E+6112 -> #43ffc000000000000000000000000000 Clamped -decf415 apply #43ffc000000000000000000000000000 -> 0E+6111 -decf416 apply 0E+6144 -> #43ffc000000000000000000000000000 Clamped -decf417 apply #43ffc000000000000000000000000000 -> 0E+6111 -decf418 apply 0E+8000 -> #43ffc000000000000000000000000000 Clamped -decf419 apply #43ffc000000000000000000000000000 -> 0E+6111 - --- negative zeros -decf420 apply -0E-8000 -> #80000000000000000000000000000000 Clamped -decf421 apply -0E-6177 -> #80000000000000000000000000000000 Clamped -decf422 apply -0E-6176 -> #80000000000000000000000000000000 -decf423 apply #80000000000000000000000000000000 -> -0E-6176 -decf424 apply -0.000000000000000000000000000000000E-6143 -> #80000000000000000000000000000000 -decf425 apply #80000000000000000000000000000000 -> -0E-6176 -decf426 apply -0E-2 -> #a2078000000000000000000000000000 -decf427 apply #a2078000000000000000000000000000 -> -0.00 -decf428 apply -0 -> #a2080000000000000000000000000000 -decf429 apply #a2080000000000000000000000000000 -> -0 -decf430 apply -0E+3 -> #a208c000000000000000000000000000 -decf431 apply #a208c000000000000000000000000000 -> -0E+3 -decf432 apply -0E+6111 -> #c3ffc000000000000000000000000000 -decf433 apply #c3ffc000000000000000000000000000 -> -0E+6111 --- clamped zeros... -decf434 apply -0E+6112 -> #c3ffc000000000000000000000000000 Clamped -decf435 apply #c3ffc000000000000000000000000000 -> -0E+6111 -decf436 apply -0E+6144 -> #c3ffc000000000000000000000000000 Clamped -decf437 apply #c3ffc000000000000000000000000000 -> -0E+6111 -decf438 apply -0E+8000 -> #c3ffc000000000000000000000000000 Clamped -decf439 apply #c3ffc000000000000000000000000000 -> -0E+6111 - --- Specials -decf500 apply Infinity -> #78000000000000000000000000000000 -decf501 apply #78787878787878787878787878787878 -> #78000000000000000000000000000000 -decf502 apply #78000000000000000000000000000000 -> Infinity -decf503 apply #79797979797979797979797979797979 -> #78000000000000000000000000000000 -decf504 apply #79000000000000000000000000000000 -> Infinity -decf505 apply #7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #78000000000000000000000000000000 -decf506 apply #7a000000000000000000000000000000 -> Infinity -decf507 apply #7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #78000000000000000000000000000000 -decf508 apply #7b000000000000000000000000000000 -> Infinity - -decf509 apply NaN -> #7c000000000000000000000000000000 -decf510 apply #7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #7c003c7c7c7c7c7c7c7c7c7c7c7c7c7c -decf511 apply #7c000000000000000000000000000000 -> NaN -decf512 apply #7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #7c003d7d7d7d7d7d7d7d7d7d7d7d7d7d -decf513 apply #7d000000000000000000000000000000 -> NaN -decf514 apply #7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #7e003e7e7c7e7e7e7e7c7e7e7e7e7c7e -decf515 apply #7e000000000000000000000000000000 -> sNaN -decf516 apply #7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #7e003f7f7c7f7f7f7f7c7f7f7f7f7c7f -decf517 apply #7f000000000000000000000000000000 -> sNaN -decf518 apply #7fffffffffffffffffffffffffffffff -> sNaN999999999999999999999999999999999 -decf519 apply #7fffffffffffffffffffffffffffffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff - -decf520 apply -Infinity -> #f8000000000000000000000000000000 -decf521 apply #f8787878787878787878787878787878 -> #f8000000000000000000000000000000 -decf522 apply #f8000000000000000000000000000000 -> -Infinity -decf523 apply #f9797979797979797979797979797979 -> #f8000000000000000000000000000000 -decf524 apply #f9000000000000000000000000000000 -> -Infinity -decf525 apply #fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #f8000000000000000000000000000000 -decf526 apply #fa000000000000000000000000000000 -> -Infinity -decf527 apply #fb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #f8000000000000000000000000000000 -decf528 apply #fb000000000000000000000000000000 -> -Infinity - -decf529 apply -NaN -> #fc000000000000000000000000000000 -decf530 apply #fc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #fc003c7c7c7c7c7c7c7c7c7c7c7c7c7c -decf531 apply #fc000000000000000000000000000000 -> -NaN -decf532 apply #fd7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #fc003d7d7d7d7d7d7d7d7d7d7d7d7d7d -decf533 apply #fd000000000000000000000000000000 -> -NaN -decf534 apply #fe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #fe003e7e7c7e7e7e7e7c7e7e7e7e7c7e -decf535 apply #fe000000000000000000000000000000 -> -sNaN -decf536 apply #ff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #fe003f7f7c7f7f7f7f7c7f7f7f7f7c7f -decf537 apply #ff000000000000000000000000000000 -> -sNaN -decf538 apply #ffffffffffffffffffffffffffffffff -> -sNaN999999999999999999999999999999999 -decf539 apply #ffffffffffffffffffffffffffffffff -> #fe000ff3fcff3fcff3fcff3fcff3fcff - -decf540 apply NaN -> #7c000000000000000000000000000000 -decf541 apply NaN0 -> #7c000000000000000000000000000000 -decf542 apply NaN1 -> #7c000000000000000000000000000001 -decf543 apply NaN12 -> #7c000000000000000000000000000012 -decf544 apply NaN79 -> #7c000000000000000000000000000079 -decf545 apply NaN12345 -> #7c0000000000000000000000000049c5 -decf546 apply NaN123456 -> #7c000000000000000000000000028e56 -decf547 apply NaN799799 -> #7c0000000000000000000000000f7fdf -decf548 apply NaN799799799799799799799799799799799 -> #7c003dff7fdff7fdff7fdff7fdff7fdf -decf549 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff -decf550 apply NaN1234567890123456789012345678901234 -> #7c000000000000000000000000000000 -- too many digits - --- fold-down full sequence -decf600 apply 1E+6145 -> #78000000000000000000000000000000 Overflow Inexact Rounded -decf601 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped -decf602 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144 -decf603 apply 1E+6143 -> #43ffc800000000000000000000000000 Clamped -decf604 apply #43ffc800000000000000000000000000 -> 1.00000000000000000000000000000000E+6143 -decf605 apply 1E+6142 -> #43ffc100000000000000000000000000 Clamped -decf606 apply #43ffc100000000000000000000000000 -> 1.0000000000000000000000000000000E+6142 -decf607 apply 1E+6141 -> #43ffc010000000000000000000000000 Clamped -decf608 apply #43ffc010000000000000000000000000 -> 1.000000000000000000000000000000E+6141 -decf609 apply 1E+6140 -> #43ffc002000000000000000000000000 Clamped -decf610 apply #43ffc002000000000000000000000000 -> 1.00000000000000000000000000000E+6140 -decf611 apply 1E+6139 -> #43ffc000400000000000000000000000 Clamped -decf612 apply #43ffc000400000000000000000000000 -> 1.0000000000000000000000000000E+6139 -decf613 apply 1E+6138 -> #43ffc000040000000000000000000000 Clamped -decf614 apply #43ffc000040000000000000000000000 -> 1.000000000000000000000000000E+6138 -decf615 apply 1E+6137 -> #43ffc000008000000000000000000000 Clamped -decf616 apply #43ffc000008000000000000000000000 -> 1.00000000000000000000000000E+6137 -decf617 apply 1E+6136 -> #43ffc000001000000000000000000000 Clamped -decf618 apply #43ffc000001000000000000000000000 -> 1.0000000000000000000000000E+6136 -decf619 apply 1E+6135 -> #43ffc000000100000000000000000000 Clamped -decf620 apply #43ffc000000100000000000000000000 -> 1.000000000000000000000000E+6135 -decf621 apply 1E+6134 -> #43ffc000000020000000000000000000 Clamped -decf622 apply #43ffc000000020000000000000000000 -> 1.00000000000000000000000E+6134 -decf623 apply 1E+6133 -> #43ffc000000004000000000000000000 Clamped -decf624 apply #43ffc000000004000000000000000000 -> 1.0000000000000000000000E+6133 -decf625 apply 1E+6132 -> #43ffc000000000400000000000000000 Clamped -decf626 apply #43ffc000000000400000000000000000 -> 1.000000000000000000000E+6132 -decf627 apply 1E+6131 -> #43ffc000000000080000000000000000 Clamped -decf628 apply #43ffc000000000080000000000000000 -> 1.00000000000000000000E+6131 -decf629 apply 1E+6130 -> #43ffc000000000010000000000000000 Clamped -decf630 apply #43ffc000000000010000000000000000 -> 1.0000000000000000000E+6130 -decf631 apply 1E+6129 -> #43ffc000000000001000000000000000 Clamped -decf632 apply #43ffc000000000001000000000000000 -> 1.000000000000000000E+6129 -decf633 apply 1E+6128 -> #43ffc000000000000200000000000000 Clamped -decf634 apply #43ffc000000000000200000000000000 -> 1.00000000000000000E+6128 -decf635 apply 1E+6127 -> #43ffc000000000000040000000000000 Clamped -decf636 apply #43ffc000000000000040000000000000 -> 1.0000000000000000E+6127 -decf637 apply 1E+6126 -> #43ffc000000000000004000000000000 Clamped -decf638 apply #43ffc000000000000004000000000000 -> 1.000000000000000E+6126 -decf639 apply 1E+6125 -> #43ffc000000000000000800000000000 Clamped -decf640 apply #43ffc000000000000000800000000000 -> 1.00000000000000E+6125 -decf641 apply 1E+6124 -> #43ffc000000000000000100000000000 Clamped -decf642 apply #43ffc000000000000000100000000000 -> 1.0000000000000E+6124 -decf643 apply 1E+6123 -> #43ffc000000000000000010000000000 Clamped -decf644 apply #43ffc000000000000000010000000000 -> 1.000000000000E+6123 -decf645 apply 1E+6122 -> #43ffc000000000000000002000000000 Clamped -decf646 apply #43ffc000000000000000002000000000 -> 1.00000000000E+6122 -decf647 apply 1E+6121 -> #43ffc000000000000000000400000000 Clamped -decf648 apply #43ffc000000000000000000400000000 -> 1.0000000000E+6121 -decf649 apply 1E+6120 -> #43ffc000000000000000000040000000 Clamped -decf650 apply #43ffc000000000000000000040000000 -> 1.000000000E+6120 -decf651 apply 1E+6119 -> #43ffc000000000000000000008000000 Clamped -decf652 apply #43ffc000000000000000000008000000 -> 1.00000000E+6119 -decf653 apply 1E+6118 -> #43ffc000000000000000000001000000 Clamped -decf654 apply #43ffc000000000000000000001000000 -> 1.0000000E+6118 -decf655 apply 1E+6117 -> #43ffc000000000000000000000100000 Clamped -decf656 apply #43ffc000000000000000000000100000 -> 1.000000E+6117 -decf657 apply 1E+6116 -> #43ffc000000000000000000000020000 Clamped -decf658 apply #43ffc000000000000000000000020000 -> 1.00000E+6116 -decf659 apply 1E+6115 -> #43ffc000000000000000000000004000 Clamped -decf660 apply #43ffc000000000000000000000004000 -> 1.0000E+6115 -decf661 apply 1E+6114 -> #43ffc000000000000000000000000400 Clamped -decf662 apply #43ffc000000000000000000000000400 -> 1.000E+6114 -decf663 apply 1E+6113 -> #43ffc000000000000000000000000080 Clamped -decf664 apply #43ffc000000000000000000000000080 -> 1.00E+6113 -decf665 apply 1E+6112 -> #43ffc000000000000000000000000010 Clamped -decf666 apply #43ffc000000000000000000000000010 -> 1.0E+6112 -decf667 apply 1E+6111 -> #43ffc000000000000000000000000001 -decf668 apply #43ffc000000000000000000000000001 -> 1E+6111 -decf669 apply 1E+6110 -> #43ff8000000000000000000000000001 -decf670 apply #43ff8000000000000000000000000001 -> 1E+6110 - --- Selected DPD codes -decf700 apply #22080000000000000000000000000000 -> 0 -decf701 apply #22080000000000000000000000000009 -> 9 -decf702 apply #22080000000000000000000000000010 -> 10 -decf703 apply #22080000000000000000000000000019 -> 19 -decf704 apply #22080000000000000000000000000020 -> 20 -decf705 apply #22080000000000000000000000000029 -> 29 -decf706 apply #22080000000000000000000000000030 -> 30 -decf707 apply #22080000000000000000000000000039 -> 39 -decf708 apply #22080000000000000000000000000040 -> 40 -decf709 apply #22080000000000000000000000000049 -> 49 -decf710 apply #22080000000000000000000000000050 -> 50 -decf711 apply #22080000000000000000000000000059 -> 59 -decf712 apply #22080000000000000000000000000060 -> 60 -decf713 apply #22080000000000000000000000000069 -> 69 -decf714 apply #22080000000000000000000000000070 -> 70 -decf715 apply #22080000000000000000000000000071 -> 71 -decf716 apply #22080000000000000000000000000072 -> 72 -decf717 apply #22080000000000000000000000000073 -> 73 -decf718 apply #22080000000000000000000000000074 -> 74 -decf719 apply #22080000000000000000000000000075 -> 75 -decf720 apply #22080000000000000000000000000076 -> 76 -decf721 apply #22080000000000000000000000000077 -> 77 -decf722 apply #22080000000000000000000000000078 -> 78 -decf723 apply #22080000000000000000000000000079 -> 79 - -decf730 apply #2208000000000000000000000000029e -> 994 -decf731 apply #2208000000000000000000000000029f -> 995 -decf732 apply #220800000000000000000000000002a0 -> 520 -decf733 apply #220800000000000000000000000002a1 -> 521 - --- DPD: one of each of the huffman groups -decf740 apply #220800000000000000000000000003f7 -> 777 -decf741 apply #220800000000000000000000000003f8 -> 778 -decf742 apply #220800000000000000000000000003eb -> 787 -decf743 apply #2208000000000000000000000000037d -> 877 -decf744 apply #2208000000000000000000000000039f -> 997 -decf745 apply #220800000000000000000000000003bf -> 979 -decf746 apply #220800000000000000000000000003df -> 799 -decf747 apply #2208000000000000000000000000006e -> 888 - - --- DPD all-highs cases (includes the 24 redundant codes) -decf750 apply #2208000000000000000000000000006e -> 888 -decf751 apply #2208000000000000000000000000016e -> 888 -decf752 apply #2208000000000000000000000000026e -> 888 -decf753 apply #2208000000000000000000000000036e -> 888 -decf754 apply #2208000000000000000000000000006f -> 889 -decf755 apply #2208000000000000000000000000016f -> 889 -decf756 apply #2208000000000000000000000000026f -> 889 -decf757 apply #2208000000000000000000000000036f -> 889 - -decf760 apply #2208000000000000000000000000007e -> 898 -decf761 apply #2208000000000000000000000000017e -> 898 -decf762 apply #2208000000000000000000000000027e -> 898 -decf763 apply #2208000000000000000000000000037e -> 898 -decf764 apply #2208000000000000000000000000007f -> 899 -decf765 apply #2208000000000000000000000000017f -> 899 -decf766 apply #2208000000000000000000000000027f -> 899 -decf767 apply #2208000000000000000000000000037f -> 899 - -decf770 apply #220800000000000000000000000000ee -> 988 -decf771 apply #220800000000000000000000000001ee -> 988 -decf772 apply #220800000000000000000000000002ee -> 988 -decf773 apply #220800000000000000000000000003ee -> 988 -decf774 apply #220800000000000000000000000000ef -> 989 -decf775 apply #220800000000000000000000000001ef -> 989 -decf776 apply #220800000000000000000000000002ef -> 989 -decf777 apply #220800000000000000000000000003ef -> 989 - -decf780 apply #220800000000000000000000000000fe -> 998 -decf781 apply #220800000000000000000000000001fe -> 998 -decf782 apply #220800000000000000000000000002fe -> 998 -decf783 apply #220800000000000000000000000003fe -> 998 -decf784 apply #220800000000000000000000000000ff -> 999 -decf785 apply #220800000000000000000000000001ff -> 999 -decf786 apply #220800000000000000000000000002ff -> 999 -decf787 apply #220800000000000000000000000003ff -> 999 - Deleted: /python/trunk/Lib/test/decimaltestdata/decimal32.decTest ============================================================================== --- /python/trunk/Lib/test/decimaltestdata/decimal32.decTest Thu Sep 13 20:13:15 2007 +++ (empty file) @@ -1,385 +0,0 @@ ------------------------------------------------------------------------- --- decimal32.decTest -- decimal four-byte format testcases -- --- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc at uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.39 - --- This set of tests is for the four-byte concrete representation. --- Its characteristics are: --- --- 1 bit sign --- 5 bits combination field --- 6 bits exponent continuation --- 20 bits coefficient continuation --- --- Total exponent length 8 bits --- Total coefficient length 24 bits (7 digits) --- --- Elimit = 191 (maximum encoded exponent) --- Emax = 96 (largest exponent value) --- Emin = -95 (smallest exponent value) --- bias = 101 (subtracted from encoded exponent) = -Etiny - -extended: 1 -precision: 7 -rounding: half_up -maxExponent: 96 -minExponent: -95 - --- General testcases --- (mostly derived from the Strawman 4 document and examples) -decd001 apply #A23003D0 -> -7.50 -decd002 apply -7.50 -> #A23003D0 - --- Normality -decd010 apply 1234567 -> #2654d2e7 -decd011 apply 1234567.0 -> #2654d2e7 Rounded -decd012 apply 1234567.1 -> #2654d2e7 Rounded Inexact -decd013 apply -1234567 -> #a654d2e7 -decd014 apply -1234567.0 -> #a654d2e7 Rounded -decd015 apply -1234567.1 -> #a654d2e7 Rounded Inexact - - --- Nmax and similar -decd022 apply 9.999999E+96 -> #77f3fcff -decd023 apply #77f3fcff -> 9.999999E+96 -decd024 apply 1.234567E+96 -> #47f4d2e7 -decd025 apply #47f4d2e7 -> 1.234567E+96 --- fold-downs (more below) -decd030 apply 1.23E+96 -> #47f4c000 Clamped -decd031 apply #47f4c000 -> 1.230000E+96 -decd032 apply 1E+96 -> #47f00000 Clamped -decd033 apply #47f00000 -> 1.000000E+96 - --- overflows -maxExponent: 999 -- set high so conversion causes the overflow -minExponent: -999 -decd040 apply 10E+96 -> #78000000 Overflow Rounded Inexact -decd041 apply 1.000000E+97 -> #78000000 Overflow Rounded Inexact -maxExponent: 96 -minExponent: -95 - -decd051 apply 12345 -> #225049c5 -decd052 apply #225049c5 -> 12345 -decd053 apply 1234 -> #22500534 -decd054 apply #22500534 -> 1234 -decd055 apply 123 -> #225000a3 -decd056 apply #225000a3 -> 123 -decd057 apply 12 -> #22500012 -decd058 apply #22500012 -> 12 -decd059 apply 1 -> #22500001 -decd060 apply #22500001 -> 1 -decd061 apply 1.23 -> #223000a3 -decd062 apply #223000a3 -> 1.23 -decd063 apply 123.45 -> #223049c5 -decd064 apply #223049c5 -> 123.45 - --- Nmin and below -decd071 apply 1E-95 -> #00600001 -decd072 apply #00600001 -> 1E-95 -decd073 apply 1.000000E-95 -> #04000000 -decd074 apply #04000000 -> 1.000000E-95 -decd075 apply 1.000001E-95 -> #04000001 -decd076 apply #04000001 -> 1.000001E-95 - -decd077 apply 0.100000E-95 -> #00020000 Subnormal -decd07x apply 1.00000E-96 -> 1.00000E-96 Subnormal -decd078 apply #00020000 -> 1.00000E-96 Subnormal -decd079 apply 0.000010E-95 -> #00000010 Subnormal -decd080 apply #00000010 -> 1.0E-100 Subnormal -decd081 apply 0.000001E-95 -> #00000001 Subnormal -decd082 apply #00000001 -> 1E-101 Subnormal -decd083 apply 1e-101 -> #00000001 Subnormal -decd084 apply #00000001 -> 1E-101 Subnormal -decd08x apply 1e-101 -> 1E-101 Subnormal - --- underflows -decd090 apply 1e-101 -> #00000001 Subnormal -decd091 apply 1.9e-101 -> #00000002 Subnormal Underflow Inexact Rounded -decd092 apply 1.1e-101 -> #00000001 Subnormal Underflow Inexact Rounded -decd093 apply 1.001e-101 -> #00000001 Subnormal Underflow Inexact Rounded -decd094 apply 1.000001e-101 -> #00000001 Subnormal Underflow Inexact Rounded -decd095 apply 1.0000001e-101 -> #00000001 Subnormal Underflow Inexact Rounded -decd096 apply 0.1e-101 -> #00000000 Subnormal Underflow Inexact Rounded -decd097 apply 0.001e-101 -> #00000000 Subnormal Underflow Inexact Rounded -decd098 apply 0.000001e-101 -> #00000000 Subnormal Underflow Inexact Rounded -decd099 apply 0.0000001e-101 -> #00000000 Subnormal Underflow Inexact Rounded - --- same again, negatives -- - --- Nmax and similar -decd122 apply -9.999999E+96 -> #f7f3fcff -decd123 apply #f7f3fcff -> -9.999999E+96 -decd124 apply -1.234567E+96 -> #c7f4d2e7 -decd125 apply #c7f4d2e7 -> -1.234567E+96 --- fold-downs (more below) -decd130 apply -1.23E+96 -> #c7f4c000 Clamped -decd131 apply #c7f4c000 -> -1.230000E+96 -decd132 apply -1E+96 -> #c7f00000 Clamped -decd133 apply #c7f00000 -> -1.000000E+96 - --- overflows -maxExponent: 999 -- set high so conversion causes the overflow -minExponent: -999 -decd140 apply -10E+96 -> #f8000000 Overflow Rounded Inexact -decd141 apply -1.000000E+97 -> #f8000000 Overflow Rounded Inexact -maxExponent: 96 -minExponent: -95 - -decd151 apply -12345 -> #a25049c5 -decd152 apply #a25049c5 -> -12345 -decd153 apply -1234 -> #a2500534 -decd154 apply #a2500534 -> -1234 -decd155 apply -123 -> #a25000a3 -decd156 apply #a25000a3 -> -123 -decd157 apply -12 -> #a2500012 -decd158 apply #a2500012 -> -12 -decd159 apply -1 -> #a2500001 -decd160 apply #a2500001 -> -1 -decd161 apply -1.23 -> #a23000a3 -decd162 apply #a23000a3 -> -1.23 -decd163 apply -123.45 -> #a23049c5 -decd164 apply #a23049c5 -> -123.45 - --- Nmin and below -decd171 apply -1E-95 -> #80600001 -decd172 apply #80600001 -> -1E-95 -decd173 apply -1.000000E-95 -> #84000000 -decd174 apply #84000000 -> -1.000000E-95 -decd175 apply -1.000001E-95 -> #84000001 -decd176 apply #84000001 -> -1.000001E-95 - -decd177 apply -0.100000E-95 -> #80020000 Subnormal -decd178 apply #80020000 -> -1.00000E-96 Subnormal -decd179 apply -0.000010E-95 -> #80000010 Subnormal -decd180 apply #80000010 -> -1.0E-100 Subnormal -decd181 apply -0.000001E-95 -> #80000001 Subnormal -decd182 apply #80000001 -> -1E-101 Subnormal -decd183 apply -1e-101 -> #80000001 Subnormal -decd184 apply #80000001 -> -1E-101 Subnormal - --- underflows -decd190 apply -1e-101 -> #80000001 Subnormal -decd191 apply -1.9e-101 -> #80000002 Subnormal Underflow Inexact Rounded -decd192 apply -1.1e-101 -> #80000001 Subnormal Underflow Inexact Rounded -decd193 apply -1.001e-101 -> #80000001 Subnormal Underflow Inexact Rounded -decd194 apply -1.000001e-101 -> #80000001 Subnormal Underflow Inexact Rounded -decd195 apply -1.0000001e-101 -> #80000001 Subnormal Underflow Inexact Rounded -decd196 apply -0.1e-101 -> #80000000 Subnormal Underflow Inexact Rounded -decd197 apply -0.001e-101 -> #80000000 Subnormal Underflow Inexact Rounded -decd198 apply -0.000001e-101 -> #80000000 Subnormal Underflow Inexact Rounded -decd199 apply -0.0000001e-101 -> #80000000 Subnormal Underflow Inexact Rounded - --- zeros -decd400 apply 0E-400 -> #00000000 Clamped -decd401 apply 0E-101 -> #00000000 -decd402 apply #00000000 -> 0E-101 -decd403 apply 0.000000E-95 -> #00000000 -decd404 apply #00000000 -> 0E-101 -decd405 apply 0E-2 -> #22300000 -decd406 apply #22300000 -> 0.00 -decd407 apply 0 -> #22500000 -decd408 apply #22500000 -> 0 -decd409 apply 0E+3 -> #22800000 -decd410 apply #22800000 -> 0E+3 -decd411 apply 0E+90 -> #43f00000 -decd412 apply #43f00000 -> 0E+90 --- clamped zeros... -decd413 apply 0E+91 -> #43f00000 Clamped -decd414 apply #43f00000 -> 0E+90 -decd415 apply 0E+96 -> #43f00000 Clamped -decd416 apply #43f00000 -> 0E+90 -decd417 apply 0E+400 -> #43f00000 Clamped -decd418 apply #43f00000 -> 0E+90 - --- negative zeros -decd420 apply -0E-400 -> #80000000 Clamped -decd421 apply -0E-101 -> #80000000 -decd422 apply #80000000 -> -0E-101 -decd423 apply -0.000000E-95 -> #80000000 -decd424 apply #80000000 -> -0E-101 -decd425 apply -0E-2 -> #a2300000 -decd426 apply #a2300000 -> -0.00 -decd427 apply -0 -> #a2500000 -decd428 apply #a2500000 -> -0 -decd429 apply -0E+3 -> #a2800000 -decd430 apply #a2800000 -> -0E+3 -decd431 apply -0E+90 -> #c3f00000 -decd432 apply #c3f00000 -> -0E+90 --- clamped zeros... -decd433 apply -0E+91 -> #c3f00000 Clamped -decd434 apply #c3f00000 -> -0E+90 -decd435 apply -0E+96 -> #c3f00000 Clamped -decd436 apply #c3f00000 -> -0E+90 -decd437 apply -0E+400 -> #c3f00000 Clamped -decd438 apply #c3f00000 -> -0E+90 - --- Specials -decd500 apply Infinity -> #78000000 -decd501 apply #78787878 -> #78000000 -decd502 apply #78000000 -> Infinity -decd503 apply #79797979 -> #78000000 -decd504 apply #79000000 -> Infinity -decd505 apply #7a7a7a7a -> #78000000 -decd506 apply #7a000000 -> Infinity -decd507 apply #7b7b7b7b -> #78000000 -decd508 apply #7b000000 -> Infinity -decd509 apply #7c7c7c7c -> #7c0c7c7c - -decd510 apply NaN -> #7c000000 -decd511 apply #7c000000 -> NaN -decd512 apply #7d7d7d7d -> #7c0d7d7d -decd513 apply #7d000000 -> NaN -decd514 apply #7e7e7e7e -> #7e0e7c7e -decd515 apply #7e000000 -> sNaN -decd516 apply #7f7f7f7f -> #7e0f7c7f -decd517 apply #7f000000 -> sNaN -decd518 apply #7fffffff -> sNaN999999 -decd519 apply #7fffffff -> #7e03fcff - -decd520 apply -Infinity -> #f8000000 -decd521 apply #f8787878 -> #f8000000 -decd522 apply #f8000000 -> -Infinity -decd523 apply #f9797979 -> #f8000000 -decd524 apply #f9000000 -> -Infinity -decd525 apply #fa7a7a7a -> #f8000000 -decd526 apply #fa000000 -> -Infinity -decd527 apply #fb7b7b7b -> #f8000000 -decd528 apply #fb000000 -> -Infinity - -decd529 apply -NaN -> #fc000000 -decd530 apply #fc7c7c7c -> #fc0c7c7c -decd531 apply #fc000000 -> -NaN -decd532 apply #fd7d7d7d -> #fc0d7d7d -decd533 apply #fd000000 -> -NaN -decd534 apply #fe7e7e7e -> #fe0e7c7e -decd535 apply #fe000000 -> -sNaN -decd536 apply #ff7f7f7f -> #fe0f7c7f -decd537 apply #ff000000 -> -sNaN -decd538 apply #ffffffff -> -sNaN999999 -decd539 apply #ffffffff -> #fe03fcff - --- diagnostic NaNs -decd540 apply NaN -> #7c000000 -decd541 apply NaN0 -> #7c000000 -decd542 apply NaN1 -> #7c000001 -decd543 apply NaN12 -> #7c000012 -decd544 apply NaN79 -> #7c000079 -decd545 apply NaN12345 -> #7c0049c5 -decd546 apply NaN123456 -> #7c028e56 -decd547 apply NaN799799 -> #7c0f7fdf -decd548 apply NaN999999 -> #7c03fcff -decd549 apply NaN1234567 -> #7c000000 -- too many digits - - --- fold-down full sequence -decd601 apply 1E+96 -> #47f00000 Clamped -decd602 apply #47f00000 -> 1.000000E+96 -decd603 apply 1E+95 -> #43f20000 Clamped -decd604 apply #43f20000 -> 1.00000E+95 -decd605 apply 1E+94 -> #43f04000 Clamped -decd606 apply #43f04000 -> 1.0000E+94 -decd607 apply 1E+93 -> #43f00400 Clamped -decd608 apply #43f00400 -> 1.000E+93 -decd609 apply 1E+92 -> #43f00080 Clamped -decd610 apply #43f00080 -> 1.00E+92 -decd611 apply 1E+91 -> #43f00010 Clamped -decd612 apply #43f00010 -> 1.0E+91 -decd613 apply 1E+90 -> #43f00001 -decd614 apply #43f00001 -> 1E+90 - - --- Selected DPD codes -decd700 apply #22500000 -> 0 -decd701 apply #22500009 -> 9 -decd702 apply #22500010 -> 10 -decd703 apply #22500019 -> 19 -decd704 apply #22500020 -> 20 -decd705 apply #22500029 -> 29 -decd706 apply #22500030 -> 30 -decd707 apply #22500039 -> 39 -decd708 apply #22500040 -> 40 -decd709 apply #22500049 -> 49 -decd710 apply #22500050 -> 50 -decd711 apply #22500059 -> 59 -decd712 apply #22500060 -> 60 -decd713 apply #22500069 -> 69 -decd714 apply #22500070 -> 70 -decd715 apply #22500071 -> 71 -decd716 apply #22500072 -> 72 -decd717 apply #22500073 -> 73 -decd718 apply #22500074 -> 74 -decd719 apply #22500075 -> 75 -decd720 apply #22500076 -> 76 -decd721 apply #22500077 -> 77 -decd722 apply #22500078 -> 78 -decd723 apply #22500079 -> 79 - -decd730 apply #2250029e -> 994 -decd731 apply #2250029f -> 995 -decd732 apply #225002a0 -> 520 -decd733 apply #225002a1 -> 521 - --- DPD: one of each of the huffman groups -decd740 apply #225003f7 -> 777 -decd741 apply #225003f8 -> 778 -decd742 apply #225003eb -> 787 -decd743 apply #2250037d -> 877 -decd744 apply #2250039f -> 997 -decd745 apply #225003bf -> 979 -decd746 apply #225003df -> 799 -decd747 apply #2250006e -> 888 - - --- DPD all-highs cases (includes the 24 redundant codes) -decd750 apply #2250006e -> 888 -decd751 apply #2250016e -> 888 -decd752 apply #2250026e -> 888 -decd753 apply #2250036e -> 888 -decd754 apply #2250006f -> 889 -decd755 apply #2250016f -> 889 -decd756 apply #2250026f -> 889 -decd757 apply #2250036f -> 889 - -decd760 apply #2250007e -> 898 -decd761 apply #2250017e -> 898 -decd762 apply #2250027e -> 898 -decd763 apply #2250037e -> 898 -decd764 apply #2250007f -> 899 -decd765 apply #2250017f -> 899 -decd766 apply #2250027f -> 899 -decd767 apply #2250037f -> 899 - -decd770 apply #225000ee -> 988 -decd771 apply #225001ee -> 988 -decd772 apply #225002ee -> 988 -decd773 apply #225003ee -> 988 -decd774 apply #225000ef -> 989 -decd775 apply #225001ef -> 989 -decd776 apply #225002ef -> 989 -decd777 apply #225003ef -> 989 - -decd780 apply #225000fe -> 998 -decd781 apply #225001fe -> 998 -decd782 apply #225002fe -> 998 -decd783 apply #225003fe -> 998 -decd784 apply #225000ff -> 999 -decd785 apply #225001ff -> 999 -decd786 apply #225002ff -> 999 -decd787 apply #225003ff -> 999 - Deleted: /python/trunk/Lib/test/decimaltestdata/decimal64.decTest ============================================================================== --- /python/trunk/Lib/test/decimaltestdata/decimal64.decTest Thu Sep 13 20:13:15 2007 +++ (empty file) @@ -1,444 +0,0 @@ ------------------------------------------------------------------------- --- decimal64.decTest -- decimal eight-byte format testcases -- --- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc at uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.39 - --- This set of tests is for the eight-byte concrete representation. --- Its characteristics are: --- --- 1 bit sign --- 5 bits combination field --- 8 bits exponent continuation --- 50 bits coefficient continuation --- --- Total exponent length 10 bits --- Total coefficient length 54 bits (16 digits) --- --- Elimit = 767 (maximum encoded exponent) --- Emax = 384 (largest exponent value) --- Emin = -383 (smallest exponent value) --- bias = 398 (subtracted from encoded exponent) = -Etiny - -extended: 1 -precision: 16 -rounding: half_up -maxExponent: 384 -minExponent: -383 - --- General testcases --- (mostly derived from the Strawman 4 document and examples) -dece001 apply #A2300000000003D0 -> -7.50 -dece002 apply -7.50 -> #A2300000000003D0 - --- Normality -dece010 apply 1234567890123456 -> #263934b9c1e28e56 -dece011 apply 1234567890123456.0 -> #263934b9c1e28e56 Rounded -dece012 apply 1234567890123456.1 -> #263934b9c1e28e56 Rounded Inexact -dece013 apply -1234567890123456 -> #a63934b9c1e28e56 -dece014 apply -1234567890123456.0 -> #a63934b9c1e28e56 Rounded -dece015 apply -1234567890123456.1 -> #a63934b9c1e28e56 Rounded Inexact - - --- Nmax and similar -dece022 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff -dece023 apply #77fcff3fcff3fcff -> 9.999999999999999E+384 -dece024 apply 1.234567890123456E+384 -> #47fd34b9c1e28e56 -dece025 apply #47fd34b9c1e28e56 -> 1.234567890123456E+384 --- fold-downs (more below) -dece030 apply 1.23E+384 -> #47fd300000000000 Clamped -dece031 apply #47fd300000000000 -> 1.230000000000000E+384 -dece032 apply 1E+384 -> #47fc000000000000 Clamped -dece033 apply #47fc000000000000 -> 1.000000000000000E+384 - --- overflows -maxExponent: 999 -- set high so conversion causes the overflow -minExponent: -999 -dece040 apply 10E+384 -> #7800000000000000 Overflow Rounded Inexact -dece041 apply 1.000000000000000E+385 -> #7800000000000000 Overflow Rounded Inexact -maxExponent: 384 -minExponent: -383 - -dece051 apply 12345 -> #22380000000049c5 -dece052 apply #22380000000049c5 -> 12345 -dece053 apply 1234 -> #2238000000000534 -dece054 apply #2238000000000534 -> 1234 -dece055 apply 123 -> #22380000000000a3 -dece056 apply #22380000000000a3 -> 123 -dece057 apply 12 -> #2238000000000012 -dece058 apply #2238000000000012 -> 12 -dece059 apply 1 -> #2238000000000001 -dece060 apply #2238000000000001 -> 1 -dece061 apply 1.23 -> #22300000000000a3 -dece062 apply #22300000000000a3 -> 1.23 -dece063 apply 123.45 -> #22300000000049c5 -dece064 apply #22300000000049c5 -> 123.45 - --- Nmin and below -dece071 apply 1E-383 -> #003c000000000001 -dece072 apply #003c000000000001 -> 1E-383 -dece073 apply 1.000000000000000E-383 -> #0400000000000000 -dece074 apply #0400000000000000 -> 1.000000000000000E-383 -dece075 apply 1.000000000000001E-383 -> #0400000000000001 -dece076 apply #0400000000000001 -> 1.000000000000001E-383 - -dece077 apply 0.100000000000000E-383 -> #0000800000000000 Subnormal -dece078 apply #0000800000000000 -> 1.00000000000000E-384 Subnormal -dece079 apply 0.000000000000010E-383 -> #0000000000000010 Subnormal -dece080 apply #0000000000000010 -> 1.0E-397 Subnormal -dece081 apply 0.00000000000001E-383 -> #0004000000000001 Subnormal -dece082 apply #0004000000000001 -> 1E-397 Subnormal -dece083 apply 0.000000000000001E-383 -> #0000000000000001 Subnormal -dece084 apply #0000000000000001 -> 1E-398 Subnormal - --- underflows -dece090 apply 1e-398 -> #0000000000000001 Subnormal -dece091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded -dece092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded -dece093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded -dece094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded -dece095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded -dece096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded -dece097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded -dece098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded -dece099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded - --- Same again, negatives --- Nmax and similar -dece122 apply -9.999999999999999E+384 -> #f7fcff3fcff3fcff -dece123 apply #f7fcff3fcff3fcff -> -9.999999999999999E+384 -dece124 apply -1.234567890123456E+384 -> #c7fd34b9c1e28e56 -dece125 apply #c7fd34b9c1e28e56 -> -1.234567890123456E+384 --- fold-downs (more below) -dece130 apply -1.23E+384 -> #c7fd300000000000 Clamped -dece131 apply #c7fd300000000000 -> -1.230000000000000E+384 -dece132 apply -1E+384 -> #c7fc000000000000 Clamped -dece133 apply #c7fc000000000000 -> -1.000000000000000E+384 - --- overflows -maxExponent: 999 -- set high so conversion causes the overflow -minExponent: -999 -dece140 apply -10E+384 -> #f800000000000000 Overflow Rounded Inexact -dece141 apply -1.000000000000000E+385 -> #f800000000000000 Overflow Rounded Inexact -maxExponent: 384 -minExponent: -383 - -dece151 apply -12345 -> #a2380000000049c5 -dece152 apply #a2380000000049c5 -> -12345 -dece153 apply -1234 -> #a238000000000534 -dece154 apply #a238000000000534 -> -1234 -dece155 apply -123 -> #a2380000000000a3 -dece156 apply #a2380000000000a3 -> -123 -dece157 apply -12 -> #a238000000000012 -dece158 apply #a238000000000012 -> -12 -dece159 apply -1 -> #a238000000000001 -dece160 apply #a238000000000001 -> -1 -dece161 apply -1.23 -> #a2300000000000a3 -dece162 apply #a2300000000000a3 -> -1.23 -dece163 apply -123.45 -> #a2300000000049c5 -dece164 apply #a2300000000049c5 -> -123.45 - --- Nmin and below -dece171 apply -1E-383 -> #803c000000000001 -dece172 apply #803c000000000001 -> -1E-383 -dece173 apply -1.000000000000000E-383 -> #8400000000000000 -dece174 apply #8400000000000000 -> -1.000000000000000E-383 -dece175 apply -1.000000000000001E-383 -> #8400000000000001 -dece176 apply #8400000000000001 -> -1.000000000000001E-383 - -dece177 apply -0.100000000000000E-383 -> #8000800000000000 Subnormal -dece178 apply #8000800000000000 -> -1.00000000000000E-384 Subnormal -dece179 apply -0.000000000000010E-383 -> #8000000000000010 Subnormal -dece180 apply #8000000000000010 -> -1.0E-397 Subnormal -dece181 apply -0.00000000000001E-383 -> #8004000000000001 Subnormal -dece182 apply #8004000000000001 -> -1E-397 Subnormal -dece183 apply -0.000000000000001E-383 -> #8000000000000001 Subnormal -dece184 apply #8000000000000001 -> -1E-398 Subnormal - --- underflows -dece189 apply -1e-398 -> #8000000000000001 Subnormal -dece190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded -dece191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded -dece192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded -dece193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded -dece194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded -dece195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded -dece196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded -dece197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded -dece198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded -dece199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded - --- zeros -dece401 apply 0E-500 -> #0000000000000000 Clamped -dece402 apply 0E-400 -> #0000000000000000 Clamped -dece403 apply 0E-398 -> #0000000000000000 -dece404 apply #0000000000000000 -> 0E-398 -dece405 apply 0.000000000000000E-383 -> #0000000000000000 -dece406 apply #0000000000000000 -> 0E-398 -dece407 apply 0E-2 -> #2230000000000000 -dece408 apply #2230000000000000 -> 0.00 -dece409 apply 0 -> #2238000000000000 -dece410 apply #2238000000000000 -> 0 -dece411 apply 0E+3 -> #2244000000000000 -dece412 apply #2244000000000000 -> 0E+3 -dece413 apply 0E+369 -> #43fc000000000000 -dece414 apply #43fc000000000000 -> 0E+369 --- clamped zeros... -dece415 apply 0E+370 -> #43fc000000000000 Clamped -dece416 apply #43fc000000000000 -> 0E+369 -dece417 apply 0E+384 -> #43fc000000000000 Clamped -dece418 apply #43fc000000000000 -> 0E+369 -dece419 apply 0E+400 -> #43fc000000000000 Clamped -dece420 apply #43fc000000000000 -> 0E+369 -dece421 apply 0E+500 -> #43fc000000000000 Clamped -dece422 apply #43fc000000000000 -> 0E+369 - --- negative zeros -dece431 apply -0E-400 -> #8000000000000000 Clamped -dece432 apply -0E-400 -> #8000000000000000 Clamped -dece433 apply -0E-398 -> #8000000000000000 -dece434 apply #8000000000000000 -> -0E-398 -dece435 apply -0.000000000000000E-383 -> #8000000000000000 -dece436 apply #8000000000000000 -> -0E-398 -dece437 apply -0E-2 -> #a230000000000000 -dece438 apply #a230000000000000 -> -0.00 -dece439 apply -0 -> #a238000000000000 -dece440 apply #a238000000000000 -> -0 -dece441 apply -0E+3 -> #a244000000000000 -dece442 apply #a244000000000000 -> -0E+3 -dece443 apply -0E+369 -> #c3fc000000000000 -dece444 apply #c3fc000000000000 -> -0E+369 --- clamped zeros... -dece445 apply -0E+370 -> #c3fc000000000000 Clamped -dece446 apply #c3fc000000000000 -> -0E+369 -dece447 apply -0E+384 -> #c3fc000000000000 Clamped -dece448 apply #c3fc000000000000 -> -0E+369 -dece449 apply -0E+400 -> #c3fc000000000000 Clamped -dece450 apply #c3fc000000000000 -> -0E+369 -dece451 apply -0E+500 -> #c3fc000000000000 Clamped -dece452 apply #c3fc000000000000 -> -0E+369 - --- Specials -dece500 apply Infinity -> #7800000000000000 -dece501 apply #7878787878787878 -> #7800000000000000 -dece502 apply #7800000000000000 -> Infinity -dece503 apply #7979797979797979 -> #7800000000000000 -dece504 apply #7900000000000000 -> Infinity -dece505 apply #7a7a7a7a7a7a7a7a -> #7800000000000000 -dece506 apply #7a00000000000000 -> Infinity -dece507 apply #7b7b7b7b7b7b7b7b -> #7800000000000000 -dece508 apply #7b00000000000000 -> Infinity - -dece509 apply NaN -> #7c00000000000000 -dece510 apply #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c -dece511 apply #7c00000000000000 -> NaN -dece512 apply #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d -dece513 apply #7d00000000000000 -> NaN -dece514 apply #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e -dece515 apply #7e00000000000000 -> sNaN -dece516 apply #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f -dece517 apply #7f00000000000000 -> sNaN -dece518 apply #7fffffffffffffff -> sNaN999999999999999 -dece519 apply #7fffffffffffffff -> #7e00ff3fcff3fcff - -dece520 apply -Infinity -> #f800000000000000 -dece521 apply #f878787878787878 -> #f800000000000000 -dece522 apply #f800000000000000 -> -Infinity -dece523 apply #f979797979797979 -> #f800000000000000 -dece524 apply #f900000000000000 -> -Infinity -dece525 apply #fa7a7a7a7a7a7a7a -> #f800000000000000 -dece526 apply #fa00000000000000 -> -Infinity -dece527 apply #fb7b7b7b7b7b7b7b -> #f800000000000000 -dece528 apply #fb00000000000000 -> -Infinity - -dece529 apply -NaN -> #fc00000000000000 -dece530 apply #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c -dece531 apply #fc00000000000000 -> -NaN -dece532 apply #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d -dece533 apply #fd00000000000000 -> -NaN -dece534 apply #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e -dece535 apply #fe00000000000000 -> -sNaN -dece536 apply #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f -dece537 apply #ff00000000000000 -> -sNaN -dece538 apply #ffffffffffffffff -> -sNaN999999999999999 -dece539 apply #ffffffffffffffff -> #fe00ff3fcff3fcff - --- diagnostic NaNs -dece540 apply NaN -> #7c00000000000000 -dece541 apply NaN0 -> #7c00000000000000 -dece542 apply NaN1 -> #7c00000000000001 -dece543 apply NaN12 -> #7c00000000000012 -dece544 apply NaN79 -> #7c00000000000079 -dece545 apply NaN12345 -> #7c000000000049c5 -dece546 apply NaN123456 -> #7c00000000028e56 -dece547 apply NaN799799 -> #7c000000000f7fdf -dece548 apply NaN799799799799799 -> #7c03dff7fdff7fdf -dece549 apply NaN999999999999999 -> #7c00ff3fcff3fcff -dece550 apply NaN1234567890123456 -> #7c00000000000000 -- too many digits - --- fold-down full sequence -dece601 apply 1E+384 -> #47fc000000000000 Clamped -dece602 apply #47fc000000000000 -> 1.000000000000000E+384 -dece603 apply 1E+383 -> #43fc800000000000 Clamped -dece604 apply #43fc800000000000 -> 1.00000000000000E+383 -dece605 apply 1E+382 -> #43fc100000000000 Clamped -dece606 apply #43fc100000000000 -> 1.0000000000000E+382 -dece607 apply 1E+381 -> #43fc010000000000 Clamped -dece608 apply #43fc010000000000 -> 1.000000000000E+381 -dece609 apply 1E+380 -> #43fc002000000000 Clamped -dece610 apply #43fc002000000000 -> 1.00000000000E+380 -dece611 apply 1E+379 -> #43fc000400000000 Clamped -dece612 apply #43fc000400000000 -> 1.0000000000E+379 -dece613 apply 1E+378 -> #43fc000040000000 Clamped -dece614 apply #43fc000040000000 -> 1.000000000E+378 -dece615 apply 1E+377 -> #43fc000008000000 Clamped -dece616 apply #43fc000008000000 -> 1.00000000E+377 -dece617 apply 1E+376 -> #43fc000001000000 Clamped -dece618 apply #43fc000001000000 -> 1.0000000E+376 -dece619 apply 1E+375 -> #43fc000000100000 Clamped -dece620 apply #43fc000000100000 -> 1.000000E+375 -dece621 apply 1E+374 -> #43fc000000020000 Clamped -dece622 apply #43fc000000020000 -> 1.00000E+374 -dece623 apply 1E+373 -> #43fc000000004000 Clamped -dece624 apply #43fc000000004000 -> 1.0000E+373 -dece625 apply 1E+372 -> #43fc000000000400 Clamped -dece626 apply #43fc000000000400 -> 1.000E+372 -dece627 apply 1E+371 -> #43fc000000000080 Clamped -dece628 apply #43fc000000000080 -> 1.00E+371 -dece629 apply 1E+370 -> #43fc000000000010 Clamped -dece630 apply #43fc000000000010 -> 1.0E+370 -dece631 apply 1E+369 -> #43fc000000000001 -dece632 apply #43fc000000000001 -> 1E+369 -dece633 apply 1E+368 -> #43f8000000000001 -dece634 apply #43f8000000000001 -> 1E+368 --- same with 9s -dece641 apply 9E+384 -> #77fc000000000000 Clamped -dece642 apply #77fc000000000000 -> 9.000000000000000E+384 -dece643 apply 9E+383 -> #43fc8c0000000000 Clamped -dece644 apply #43fc8c0000000000 -> 9.00000000000000E+383 -dece645 apply 9E+382 -> #43fc1a0000000000 Clamped -dece646 apply #43fc1a0000000000 -> 9.0000000000000E+382 -dece647 apply 9E+381 -> #43fc090000000000 Clamped -dece648 apply #43fc090000000000 -> 9.000000000000E+381 -dece649 apply 9E+380 -> #43fc002300000000 Clamped -dece650 apply #43fc002300000000 -> 9.00000000000E+380 -dece651 apply 9E+379 -> #43fc000680000000 Clamped -dece652 apply #43fc000680000000 -> 9.0000000000E+379 -dece653 apply 9E+378 -> #43fc000240000000 Clamped -dece654 apply #43fc000240000000 -> 9.000000000E+378 -dece655 apply 9E+377 -> #43fc000008c00000 Clamped -dece656 apply #43fc000008c00000 -> 9.00000000E+377 -dece657 apply 9E+376 -> #43fc000001a00000 Clamped -dece658 apply #43fc000001a00000 -> 9.0000000E+376 -dece659 apply 9E+375 -> #43fc000000900000 Clamped -dece660 apply #43fc000000900000 -> 9.000000E+375 -dece661 apply 9E+374 -> #43fc000000023000 Clamped -dece662 apply #43fc000000023000 -> 9.00000E+374 -dece663 apply 9E+373 -> #43fc000000006800 Clamped -dece664 apply #43fc000000006800 -> 9.0000E+373 -dece665 apply 9E+372 -> #43fc000000002400 Clamped -dece666 apply #43fc000000002400 -> 9.000E+372 -dece667 apply 9E+371 -> #43fc00000000008c Clamped -dece668 apply #43fc00000000008c -> 9.00E+371 -dece669 apply 9E+370 -> #43fc00000000001a Clamped -dece670 apply #43fc00000000001a -> 9.0E+370 -dece671 apply 9E+369 -> #43fc000000000009 -dece672 apply #43fc000000000009 -> 9E+369 -dece673 apply 9E+368 -> #43f8000000000009 -dece674 apply #43f8000000000009 -> 9E+368 - - --- Selected DPD codes -dece700 apply #2238000000000000 -> 0 -dece701 apply #2238000000000009 -> 9 -dece702 apply #2238000000000010 -> 10 -dece703 apply #2238000000000019 -> 19 -dece704 apply #2238000000000020 -> 20 -dece705 apply #2238000000000029 -> 29 -dece706 apply #2238000000000030 -> 30 -dece707 apply #2238000000000039 -> 39 -dece708 apply #2238000000000040 -> 40 -dece709 apply #2238000000000049 -> 49 -dece710 apply #2238000000000050 -> 50 -dece711 apply #2238000000000059 -> 59 -dece712 apply #2238000000000060 -> 60 -dece713 apply #2238000000000069 -> 69 -dece714 apply #2238000000000070 -> 70 -dece715 apply #2238000000000071 -> 71 -dece716 apply #2238000000000072 -> 72 -dece717 apply #2238000000000073 -> 73 -dece718 apply #2238000000000074 -> 74 -dece719 apply #2238000000000075 -> 75 -dece720 apply #2238000000000076 -> 76 -dece721 apply #2238000000000077 -> 77 -dece722 apply #2238000000000078 -> 78 -dece723 apply #2238000000000079 -> 79 - -dece730 apply #223800000000029e -> 994 -dece731 apply #223800000000029f -> 995 -dece732 apply #22380000000002a0 -> 520 -dece733 apply #22380000000002a1 -> 521 - --- DPD: one of each of the huffman groups -dece740 apply #22380000000003f7 -> 777 -dece741 apply #22380000000003f8 -> 778 -dece742 apply #22380000000003eb -> 787 -dece743 apply #223800000000037d -> 877 -dece744 apply #223800000000039f -> 997 -dece745 apply #22380000000003bf -> 979 -dece746 apply #22380000000003df -> 799 -dece747 apply #223800000000006e -> 888 - - --- DPD all-highs cases (includes the 24 redundant codes) -dece750 apply #223800000000006e -> 888 -dece751 apply #223800000000016e -> 888 -dece752 apply #223800000000026e -> 888 -dece753 apply #223800000000036e -> 888 -dece754 apply #223800000000006f -> 889 -dece755 apply #223800000000016f -> 889 -dece756 apply #223800000000026f -> 889 -dece757 apply #223800000000036f -> 889 - -dece760 apply #223800000000007e -> 898 -dece761 apply #223800000000017e -> 898 -dece762 apply #223800000000027e -> 898 -dece763 apply #223800000000037e -> 898 -dece764 apply #223800000000007f -> 899 -dece765 apply #223800000000017f -> 899 -dece766 apply #223800000000027f -> 899 -dece767 apply #223800000000037f -> 899 - -dece770 apply #22380000000000ee -> 988 -dece771 apply #22380000000001ee -> 988 -dece772 apply #22380000000002ee -> 988 -dece773 apply #22380000000003ee -> 988 -dece774 apply #22380000000000ef -> 989 -dece775 apply #22380000000001ef -> 989 -dece776 apply #22380000000002ef -> 989 -dece777 apply #22380000000003ef -> 989 - -dece780 apply #22380000000000fe -> 998 -dece781 apply #22380000000001fe -> 998 -dece782 apply #22380000000002fe -> 998 -dece783 apply #22380000000003fe -> 998 -dece784 apply #22380000000000ff -> 999 -dece785 apply #22380000000001ff -> 999 -dece786 apply #22380000000002ff -> 999 -dece787 apply #22380000000003ff -> 999 - Modified: python/trunk/Lib/test/decimaltestdata/divide.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/divide.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/divide.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- divide.decTest -- decimal division -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 precision: 9 @@ -47,41 +47,45 @@ divx018 divide 2. 2 -> 1 divx019 divide 20 20 -> 1 -divx020 divide 187 187 -> 1 -divx021 divide 5 2 -> 2.5 -divx022 divide 5 2.0 -> 2.5 -divx023 divide 5 2.000 -> 2.5 -divx024 divide 5 0.20 -> 25 -divx025 divide 5 0.200 -> 25 -divx026 divide 10 1 -> 10 -divx027 divide 100 1 -> 100 -divx028 divide 1000 1 -> 1000 -divx029 divide 1000 100 -> 10 - -divx030 divide 1 2 -> 0.5 -divx031 divide 1 4 -> 0.25 -divx032 divide 1 8 -> 0.125 -divx033 divide 1 16 -> 0.0625 -divx034 divide 1 32 -> 0.03125 -divx035 divide 1 64 -> 0.015625 -divx040 divide 1 -2 -> -0.5 -divx041 divide 1 -4 -> -0.25 -divx042 divide 1 -8 -> -0.125 -divx043 divide 1 -16 -> -0.0625 -divx044 divide 1 -32 -> -0.03125 -divx045 divide 1 -64 -> -0.015625 -divx050 divide -1 2 -> -0.5 -divx051 divide -1 4 -> -0.25 -divx052 divide -1 8 -> -0.125 -divx053 divide -1 16 -> -0.0625 -divx054 divide -1 32 -> -0.03125 -divx055 divide -1 64 -> -0.015625 -divx060 divide -1 -2 -> 0.5 -divx061 divide -1 -4 -> 0.25 -divx062 divide -1 -8 -> 0.125 -divx063 divide -1 -16 -> 0.0625 -divx064 divide -1 -32 -> 0.03125 -divx065 divide -1 -64 -> 0.015625 +divx020 divide 187 187 -> 1 +divx021 divide 5 2 -> 2.5 +divx022 divide 50 20 -> 2.5 +divx023 divide 500 200 -> 2.5 +divx024 divide 50.0 20.0 -> 2.5 +divx025 divide 5.00 2.00 -> 2.5 +divx026 divide 5 2.0 -> 2.5 +divx027 divide 5 2.000 -> 2.5 +divx028 divide 5 0.20 -> 25 +divx029 divide 5 0.200 -> 25 +divx030 divide 10 1 -> 10 +divx031 divide 100 1 -> 100 +divx032 divide 1000 1 -> 1000 +divx033 divide 1000 100 -> 10 + +divx035 divide 1 2 -> 0.5 +divx036 divide 1 4 -> 0.25 +divx037 divide 1 8 -> 0.125 +divx038 divide 1 16 -> 0.0625 +divx039 divide 1 32 -> 0.03125 +divx040 divide 1 64 -> 0.015625 +divx041 divide 1 -2 -> -0.5 +divx042 divide 1 -4 -> -0.25 +divx043 divide 1 -8 -> -0.125 +divx044 divide 1 -16 -> -0.0625 +divx045 divide 1 -32 -> -0.03125 +divx046 divide 1 -64 -> -0.015625 +divx047 divide -1 2 -> -0.5 +divx048 divide -1 4 -> -0.25 +divx049 divide -1 8 -> -0.125 +divx050 divide -1 16 -> -0.0625 +divx051 divide -1 32 -> -0.03125 +divx052 divide -1 64 -> -0.015625 +divx053 divide -1 -2 -> 0.5 +divx054 divide -1 -4 -> 0.25 +divx055 divide -1 -8 -> 0.125 +divx056 divide -1 -16 -> 0.0625 +divx057 divide -1 -32 -> 0.03125 +divx058 divide -1 -64 -> 0.015625 divx070 divide 999999999 1 -> 999999999 divx071 divide 999999999.4 1 -> 999999999 Inexact Rounded @@ -763,9 +767,9 @@ divx964 divide 1e-600000000 1e+400000005 -> 1E-1000000005 Subnormal divx965 divide 1e-600000000 1e+400000006 -> 1E-1000000006 Subnormal divx966 divide 1e-600000000 1e+400000007 -> 1E-1000000007 Subnormal -divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded -divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded -divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded +divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -- [no equivalent of 'subnormal' for overflow] divx970 divide 1e+600000000 1e-400000001 -> Infinity Overflow Inexact Rounded divx971 divide 1e+600000000 1e-400000002 -> Infinity Overflow Inexact Rounded @@ -779,10 +783,10 @@ divx979 divide 1e+600000000 1e-400000010 -> Infinity Overflow Inexact Rounded -- Sign after overflow and underflow -divx980 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded -divx981 divide 1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded -divx982 divide -1e-600000000 1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded -divx983 divide -1e-600000000 -1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded +divx980 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +divx981 divide 1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +divx982 divide -1e-600000000 1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +divx983 divide -1e-600000000 -1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped divx984 divide 1e+600000000 1e-400000009 -> Infinity Overflow Inexact Rounded divx985 divide 1e+600000000 -1e-400000009 -> -Infinity Overflow Inexact Rounded divx986 divide -1e+600000000 1e-400000009 -> -Infinity Overflow Inexact Rounded @@ -812,6 +816,38 @@ -- 1.465811965811965811965811965811965811966E+7000 divx1010 divide 343E6000 234E-1000 -> Infinity Overflow Inexact Rounded +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 + +-- Examples from SQL proposal (Krishna Kulkarni) +precision: 7 +divx1021 divide 1E0 1E0 -> 1 +divx1022 divide 1E0 2E0 -> 0.5 +divx1023 divide 1E0 3E0 -> 0.3333333 Inexact Rounded +divx1024 divide 100E-2 1000E-3 -> 1 +divx1025 divide 24E-1 2E0 -> 1.2 +divx1026 divide 2400E-3 2E0 -> 1.200 +divx1027 divide 5E0 2E0 -> 2.5 +divx1028 divide 5E0 20E-1 -> 2.5 +divx1029 divide 5E0 2000E-3 -> 2.5 +divx1030 divide 5E0 2E-1 -> 25 +divx1031 divide 5E0 20E-2 -> 25 +divx1032 divide 480E-2 3E0 -> 1.60 +divx1033 divide 47E-1 2E0 -> 2.35 + +-- ECMAScript bad examples +rounding: half_down +precision: 7 +divx1050 divide 5 9 -> 0.5555556 Inexact Rounded +rounding: half_even +divx1051 divide 5 11 -> 0.4545455 Inexact Rounded + +-- payload decapitate +precision: 5 +divx1055 divide sNaN987654321 1 -> NaN54321 Invalid_operation + -- Null tests divx9998 divide 10 # -> NaN Invalid_operation divx9999 divide # 10 -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/divideint.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/divideint.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/divideint.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- divideint.decTest -- decimal integer division -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 precision: 9 @@ -234,6 +234,22 @@ dvix287 divideint 0.1 9999e-999999997 -> NaN Division_impossible dvix288 divideint 0.1 99999e-999999997 -> NaN Division_impossible +-- GD edge cases: lhs smaller than rhs but more digits +dvix301 divideint 0.9 2 -> 0 +dvix302 divideint 0.9 2.0 -> 0 +dvix303 divideint 0.9 2.1 -> 0 +dvix304 divideint 0.9 2.00 -> 0 +dvix305 divideint 0.9 2.01 -> 0 +dvix306 divideint 0.12 1 -> 0 +dvix307 divideint 0.12 1.0 -> 0 +dvix308 divideint 0.12 1.00 -> 0 +dvix309 divideint 0.12 1.0 -> 0 +dvix310 divideint 0.12 1.00 -> 0 +dvix311 divideint 0.12 2 -> 0 +dvix312 divideint 0.12 2.0 -> 0 +dvix313 divideint 0.12 2.1 -> 0 +dvix314 divideint 0.12 2.00 -> 0 +dvix315 divideint 0.12 2.01 -> 0 -- overflow and underflow tests [from divide] maxexponent: 999999999 Modified: python/trunk/Lib/test/decimaltestdata/inexact.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/inexact.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/inexact.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- inexact.decTest -- decimal inexact and rounded edge cases -- --- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 precision: 9 Modified: python/trunk/Lib/test/decimaltestdata/max.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/max.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/max.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- max.decTest -- decimal maximum -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding @@ -331,6 +331,33 @@ maxx466 max -1000 -1E+3 -> -1000 maxx467 max -1E+3 -1000 -> -1000 +-- rounding (results treated as though plus) +maxexponent: 999999999 +minexponent: -999999999 +precision: 3 + +maxx470 max 1 .5 -> 1 +maxx471 max 10 5 -> 10 +maxx472 max 100 50 -> 100 +maxx473 max 1000 500 -> 1.00E+3 Rounded +maxx474 max 10000 5000 -> 1.00E+4 Rounded +maxx475 max 6 .5 -> 6 +maxx476 max 66 5 -> 66 +maxx477 max 666 50 -> 666 +maxx478 max 6666 500 -> 6.67E+3 Rounded Inexact +maxx479 max 66666 5000 -> 6.67E+4 Rounded Inexact +maxx480 max 33333 5000 -> 3.33E+4 Rounded Inexact +maxx481 max .5 1 -> 1 +maxx482 max .5 10 -> 10 +maxx483 max .5 100 -> 100 +maxx484 max .5 1000 -> 1.00E+3 Rounded +maxx485 max .5 10000 -> 1.00E+4 Rounded +maxx486 max .5 6 -> 6 +maxx487 max .5 66 -> 66 +maxx488 max .5 666 -> 666 +maxx489 max .5 6666 -> 6.67E+3 Rounded Inexact +maxx490 max .5 66666 -> 6.67E+4 Rounded Inexact +maxx491 max .5 33333 -> 3.33E+4 Rounded Inexact -- overflow tests maxexponent: 999999999 @@ -348,13 +375,13 @@ maxx512 max 0.10E-999 0 -> 1.0E-1000 Subnormal maxx513 max 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded maxx514 max 0.01E-999 0 -> 1E-1001 Subnormal --- next is rounded to Emin +-- next is rounded to Nmin maxx515 max 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow maxx516 max 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow maxx517 max 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow -maxx518 max 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow -maxx519 max 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow -maxx520 max 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow +maxx518 max 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +maxx519 max 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +maxx520 max 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped maxx530 max -1.00E-999 0 -> 0 maxx531 max -0.1E-999 0 -> 0 @@ -368,6 +395,27 @@ maxx539 max -0.0009E-999 0 -> 0 maxx540 max -0.0001E-999 0 -> 0 +-- misalignment traps for little-endian +precision: 9 +maxx551 max 1.0 0.1 -> 1.0 +maxx552 max 0.1 1.0 -> 1.0 +maxx553 max 10.0 0.1 -> 10.0 +maxx554 max 0.1 10.0 -> 10.0 +maxx555 max 100 1.0 -> 100 +maxx556 max 1.0 100 -> 100 +maxx557 max 1000 10.0 -> 1000 +maxx558 max 10.0 1000 -> 1000 +maxx559 max 10000 100.0 -> 10000 +maxx560 max 100.0 10000 -> 10000 +maxx661 max 100000 1000.0 -> 100000 +maxx662 max 1000.0 100000 -> 100000 +maxx663 max 1000000 10000.0 -> 1000000 +maxx664 max 10000.0 1000000 -> 1000000 + +-- payload decapitate +precision: 5 +maxx670 max 11 -sNaN12345678901 -> -NaN78901 Invalid_operation + -- Null tests maxx900 max 10 # -> NaN Invalid_operation maxx901 max # 10 -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/min.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/min.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/min.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- min.decTest -- decimal minimum -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- we assume that base comparison is tested in compare.decTest, so -- these mainly cover special cases and rounding @@ -320,6 +320,34 @@ mnmx466 min -1000 -1E+3 -> -1E+3 mnmx467 min -1E+3 -1000 -> -1E+3 +-- rounding (results treated as though plus) +maxexponent: 999999999 +minexponent: -999999999 +precision: 3 + +mnmx470 min 1 5 -> 1 +mnmx471 min 10 50 -> 10 +mnmx472 min 100 500 -> 100 +mnmx473 min 1000 5000 -> 1.00E+3 Rounded +mnmx474 min 10000 50000 -> 1.00E+4 Rounded +mnmx475 min 6 50 -> 6 +mnmx476 min 66 500 -> 66 +mnmx477 min 666 5000 -> 666 +mnmx478 min 6666 50000 -> 6.67E+3 Rounded Inexact +mnmx479 min 66666 500000 -> 6.67E+4 Rounded Inexact +mnmx480 min 33333 500000 -> 3.33E+4 Rounded Inexact +mnmx481 min 75401 1 -> 1 +mnmx482 min 75402 10 -> 10 +mnmx483 min 75403 100 -> 100 +mnmx484 min 75404 1000 -> 1.00E+3 Rounded +mnmx485 min 75405 10000 -> 1.00E+4 Rounded +mnmx486 min 75406 6 -> 6 +mnmx487 min 75407 66 -> 66 +mnmx488 min 75408 666 -> 666 +mnmx489 min 75409 6666 -> 6.67E+3 Rounded Inexact +mnmx490 min 75410 66666 -> 6.67E+4 Rounded Inexact +mnmx491 min 75411 33333 -> 3.33E+4 Rounded Inexact + -- overflow tests maxexponent: 999999999 @@ -349,14 +377,30 @@ mnmx532 min -0.10E-999 0 -> -1.0E-1000 Subnormal mnmx533 min -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded mnmx534 min -0.01E-999 0 -> -1E-1001 Subnormal --- next is rounded to Emin +-- next is rounded to Nmin mnmx535 min -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow mnmx536 min -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow mnmx537 min -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow -mnmx538 min -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow -mnmx539 min -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow -mnmx540 min -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow +mnmx538 min -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +mnmx539 min -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +mnmx540 min -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +-- misalignment traps for little-endian +precision: 9 +mnmx551 min 1.0 0.1 -> 0.1 +mnmx552 min 0.1 1.0 -> 0.1 +mnmx553 min 10.0 0.1 -> 0.1 +mnmx554 min 0.1 10.0 -> 0.1 +mnmx555 min 100 1.0 -> 1.0 +mnmx556 min 1.0 100 -> 1.0 +mnmx557 min 1000 10.0 -> 10.0 +mnmx558 min 10.0 1000 -> 10.0 +mnmx559 min 10000 100.0 -> 100.0 +mnmx560 min 100.0 10000 -> 100.0 +mnmx561 min 100000 1000.0 -> 1000.0 +mnmx562 min 1000.0 100000 -> 1000.0 +mnmx563 min 1000000 10000.0 -> 10000.0 +mnmx564 min 10000.0 1000000 -> 10000.0 -- Null tests mnm900 min 10 # -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/minus.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/minus.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/minus.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- minus.decTest -- decimal negation -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- This set of tests primarily tests the existence of the operator. -- Subtraction, rounding, and more overflows are tested elsewhere. @@ -127,9 +127,9 @@ minx115 minus 0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow minx116 minus 0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow minx117 minus 0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow -minx118 minus 0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow -minx119 minus 0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow -minx120 minus 0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow +minx118 minus 0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +minx119 minus 0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +minx120 minus 0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped minx130 minus -1.00E-999 -> 1.00E-999 minx131 minus -0.1E-999 -> 1E-1000 Subnormal @@ -140,9 +140,9 @@ minx135 minus -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow minx136 minus -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow minx137 minus -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow -minx138 minus -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -minx139 minus -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -minx140 minus -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow +minx138 minus -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +minx139 minus -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +minx140 minus -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped -- long operand checks Modified: python/trunk/Lib/test/decimaltestdata/multiply.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/multiply.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/multiply.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- multiply.decTest -- decimal multiplication -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 precision: 9 @@ -44,21 +44,28 @@ mulx015 multiply 2.50 4 -> 10.00 precision: 6 mulx016 multiply 2.50 4 -> 10.00 -mulx017 multiply 9.999999999 9.999999999 -> 100.000 Inexact Rounded +mulx017 multiply 9.999999999 9.999999999 -> 100.000 Inexact Rounded +mulx018 multiply 9.999999999 -9.999999999 -> -100.000 Inexact Rounded +mulx019 multiply -9.999999999 9.999999999 -> -100.000 Inexact Rounded +mulx020 multiply -9.999999999 -9.999999999 -> 100.000 Inexact Rounded -- 1999.12.21: next one is a edge case if intermediate longs are used precision: 15 -mulx019 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded +mulx059 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded precision: 30 mulx160 multiply 999999999999 9765625 -> 9765624999990234375 precision: 9 ----- -- zeros, etc. -mulx020 multiply 0 0 -> 0 -mulx021 multiply 0 -0 -> -0 -mulx022 multiply -0 0 -> -0 -mulx023 multiply -0 -0 -> 0 +mulx021 multiply 0 0 -> 0 +mulx022 multiply 0 -0 -> -0 +mulx023 multiply -0 0 -> -0 +mulx024 multiply -0 -0 -> 0 +mulx025 multiply -0.0 -0.0 -> 0.00 +mulx026 multiply -0.0 -0.0 -> 0.00 +mulx027 multiply -0.0 -0.0 -> 0.00 +mulx028 multiply -0.0 -0.0 -> 0.00 mulx030 multiply 5.00 1E-3 -> 0.00500 mulx031 multiply 00.00 0.000 -> 0.00000 mulx032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0 @@ -94,17 +101,17 @@ -- test some intermediate lengths precision: 9 -mulx080 multiply 0.1 123456789 -> 12345678.9 -mulx081 multiply 0.1 1234567891 -> 123456789 Inexact Rounded -mulx082 multiply 0.1 12345678912 -> 1.23456789E+9 Inexact Rounded -mulx083 multiply 0.1 12345678912345 -> 1.23456789E+12 Inexact Rounded -mulx084 multiply 0.1 123456789 -> 12345678.9 +mulx080 multiply 0.1 123456789 -> 12345678.9 +mulx081 multiply 0.1 1234567891 -> 123456789 Inexact Rounded +mulx082 multiply 0.1 12345678912 -> 1.23456789E+9 Inexact Rounded +mulx083 multiply 0.1 12345678912345 -> 1.23456789E+12 Inexact Rounded +mulx084 multiply 0.1 123456789 -> 12345678.9 precision: 8 -mulx085 multiply 0.1 12345678912 -> 1.2345679E+9 Inexact Rounded -mulx086 multiply 0.1 12345678912345 -> 1.2345679E+12 Inexact Rounded +mulx085 multiply 0.1 12345678912 -> 1.2345679E+9 Inexact Rounded +mulx086 multiply 0.1 12345678912345 -> 1.2345679E+12 Inexact Rounded precision: 7 -mulx087 multiply 0.1 12345678912 -> 1.234568E+9 Inexact Rounded -mulx088 multiply 0.1 12345678912345 -> 1.234568E+12 Inexact Rounded +mulx087 multiply 0.1 12345678912 -> 1.234568E+9 Inexact Rounded +mulx088 multiply 0.1 12345678912345 -> 1.234568E+12 Inexact Rounded precision: 9 mulx090 multiply 123456789 0.1 -> 12345678.9 @@ -280,6 +287,41 @@ precision: 1 mulx278 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1E+5 Inexact Rounded +-- test some edge cases with exact rounding +maxexponent: 9999 +minexponent: -9999 +precision: 9 +mulx301 multiply 9 9 -> 81 +mulx302 multiply 9 90 -> 810 +mulx303 multiply 9 900 -> 8100 +mulx304 multiply 9 9000 -> 81000 +mulx305 multiply 9 90000 -> 810000 +mulx306 multiply 9 900000 -> 8100000 +mulx307 multiply 9 9000000 -> 81000000 +mulx308 multiply 9 90000000 -> 810000000 +mulx309 multiply 9 900000000 -> 8.10000000E+9 Rounded +mulx310 multiply 9 9000000000 -> 8.10000000E+10 Rounded +mulx311 multiply 9 90000000000 -> 8.10000000E+11 Rounded +mulx312 multiply 9 900000000000 -> 8.10000000E+12 Rounded +mulx313 multiply 9 9000000000000 -> 8.10000000E+13 Rounded +mulx314 multiply 9 90000000000000 -> 8.10000000E+14 Rounded +mulx315 multiply 9 900000000000000 -> 8.10000000E+15 Rounded +mulx316 multiply 9 9000000000000000 -> 8.10000000E+16 Rounded +mulx317 multiply 9 90000000000000000 -> 8.10000000E+17 Rounded +mulx318 multiply 9 900000000000000000 -> 8.10000000E+18 Rounded +mulx319 multiply 9 9000000000000000000 -> 8.10000000E+19 Rounded +mulx320 multiply 9 90000000000000000000 -> 8.10000000E+20 Rounded +mulx321 multiply 9 900000000000000000000 -> 8.10000000E+21 Rounded +mulx322 multiply 9 9000000000000000000000 -> 8.10000000E+22 Rounded +mulx323 multiply 9 90000000000000000000000 -> 8.10000000E+23 Rounded + +-- fastpath breakers +precision: 29 +mulx330 multiply 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603 -> 1.6487212707001281468486507878 Inexact Rounded +precision: 55 +mulx331 multiply 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428 -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded + + -- tryzeros cases precision: 7 rounding: half_up @@ -486,10 +528,10 @@ mulx752 multiply 1e+777777777 -1e+411111111 -> -Infinity Overflow Inexact Rounded mulx753 multiply -1e+777777777 1e+411111111 -> -Infinity Overflow Inexact Rounded mulx754 multiply -1e+777777777 -1e+411111111 -> Infinity Overflow Inexact Rounded -mulx755 multiply 1e-777777777 1e-411111111 -> 0E-1000000007 Underflow Subnormal Inexact Rounded -mulx756 multiply 1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded -mulx757 multiply -1e-777777777 1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded -mulx758 multiply -1e-777777777 -1e-411111111 -> 0E-1000000007 Underflow Subnormal Inexact Rounded +mulx755 multiply 1e-777777777 1e-411111111 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +mulx756 multiply 1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +mulx757 multiply -1e-777777777 1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +mulx758 multiply -1e-777777777 -1e-411111111 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -- 'subnormal' boundary (all hard underflow or overflow in base arithemtic) precision: 9 @@ -500,9 +542,9 @@ mulx764 multiply 1e-600000000 1e-400000005 -> 1E-1000000005 Subnormal mulx765 multiply 1e-600000000 1e-400000006 -> 1E-1000000006 Subnormal mulx766 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal -mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded -mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded -mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded +mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -- [no equivalent of 'subnormal' for overflow] mulx770 multiply 1e+600000000 1e+400000001 -> Infinity Overflow Inexact Rounded mulx771 multiply 1e+600000000 1e+400000002 -> Infinity Overflow Inexact Rounded @@ -520,31 +562,31 @@ mulx780 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal mulx781 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal mulx782 multiply 1e-600000000 1e-400000097 -> 1E-1000000097 Subnormal -mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded +mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded Clamped precision: 999 mulx784 multiply 1e-600000000 1e-400000997 -> 1E-1000000997 Subnormal -mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded +mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded Clamped -- following testcases [through mulx800] not yet run against code precision: 9999 mulx786 multiply 1e-600000000 1e-400009997 -> 1E-1000009997 Subnormal -mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded +mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded Clamped precision: 99999 mulx788 multiply 1e-600000000 1e-400099997 -> 1E-1000099997 Subnormal -mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded +mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded Clamped precision: 999999 mulx790 multiply 1e-600000000 1e-400999997 -> 1E-1000999997 Subnormal -mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded +mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded Clamped precision: 9999999 mulx792 multiply 1e-600000000 1e-409999997 -> 1E-1009999997 Subnormal -mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded +mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded Clamped precision: 99999999 mulx794 multiply 1e-600000000 1e-499999997 -> 1E-1099999997 Subnormal -mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded +mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded Clamped precision: 999999999 mulx796 multiply 1e-999999999 1e-999999997 -> 1E-1999999996 Subnormal mulx797 multiply 1e-999999999 1e-999999998 -> 1E-1999999997 Subnormal -mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded +mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded Clamped mulx799 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal mulx800 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal @@ -573,19 +615,19 @@ mulx817 multiply 2.51E-999 1e-4 -> 3E-1003 Underflow Subnormal Inexact Rounded mulx818 multiply 1E-999 1e-4 -> 1E-1003 Subnormal -mulx819 multiply 3E-999 1e-5 -> 0E-1003 Underflow Subnormal Inexact Rounded -mulx820 multiply 5E-999 1e-5 -> 0E-1003 Underflow Subnormal Inexact Rounded +mulx819 multiply 3E-999 1e-5 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped +mulx820 multiply 5E-999 1e-5 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped mulx821 multiply 7E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded mulx822 multiply 9E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded mulx823 multiply 9.9E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded mulx824 multiply 1E-999 -1e-4 -> -1E-1003 Subnormal -mulx825 multiply 3E-999 -1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded -mulx826 multiply -5E-999 1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded +mulx825 multiply 3E-999 -1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped +mulx826 multiply -5E-999 1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped mulx827 multiply 7E-999 -1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded mulx828 multiply -9E-999 1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded mulx829 multiply 9.9E-999 -1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded -mulx830 multiply 3.0E-999 -1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded +mulx830 multiply 3.0E-999 -1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped mulx831 multiply 1.0E-501 1e-501 -> 1.0E-1002 Subnormal mulx832 multiply 2.0E-501 2e-501 -> 4.0E-1002 Subnormal @@ -595,7 +637,7 @@ mulx836 multiply 40.0E-501 40e-501 -> 1.6000E-999 -- squares -mulx840 multiply 1E-502 1e-502 -> 0E-1003 Underflow Subnormal Inexact Rounded +mulx840 multiply 1E-502 1e-502 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped mulx841 multiply 1E-501 1e-501 -> 1E-1002 Subnormal mulx842 multiply 2E-501 2e-501 -> 4E-1002 Subnormal mulx843 multiply 4E-501 4e-501 -> 1.6E-1001 Subnormal @@ -604,7 +646,7 @@ mulx846 multiply 40E-501 40e-501 -> 1.600E-999 -- cubes -mulx850 multiply 1E-670 1e-335 -> 0E-1003 Underflow Subnormal Inexact Rounded +mulx850 multiply 1E-670 1e-335 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped mulx851 multiply 1E-668 1e-334 -> 1E-1002 Subnormal mulx852 multiply 4E-668 2e-334 -> 8E-1002 Subnormal mulx853 multiply 9E-668 3e-334 -> 2.7E-1001 Subnormal @@ -612,7 +654,7 @@ mulx855 multiply 25E-668 5e-334 -> 1.25E-1000 Subnormal mulx856 multiply 10E-668 100e-334 -> 1.000E-999 --- test from 0.099 ** 999 at 15 digits +-- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent precision: 19 mulx860 multiply 6636851557994578716E-520 6636851557994578716E-520 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded @@ -629,14 +671,16 @@ precision: 5 maxexponent: 79 minexponent: -79 -mulx881 multiply 1.2347E-40 1.2347E-40 -> 1.524E-80 Inexact Rounded Subnormal Underflow -mulx882 multiply 1.234E-40 1.234E-40 -> 1.523E-80 Inexact Rounded Subnormal Underflow -mulx883 multiply 1.23E-40 1.23E-40 -> 1.513E-80 Inexact Rounded Subnormal Underflow -mulx884 multiply 1.2E-40 1.2E-40 -> 1.44E-80 Subnormal -mulx885 multiply 1.2E-40 1.2E-41 -> 1.44E-81 Subnormal -mulx886 multiply 1.2E-40 1.2E-42 -> 1.4E-82 Subnormal Inexact Rounded Underflow -mulx887 multiply 1.2E-40 1.3E-42 -> 1.6E-82 Subnormal Inexact Rounded Underflow -mulx888 multiply 1.3E-40 1.3E-42 -> 1.7E-82 Subnormal Inexact Rounded Underflow +mulx881 multiply 1.2347E-40 1.2347E-40 -> 1.524E-80 Inexact Rounded Subnormal Underflow +mulx882 multiply 1.234E-40 1.234E-40 -> 1.523E-80 Inexact Rounded Subnormal Underflow +mulx883 multiply 1.23E-40 1.23E-40 -> 1.513E-80 Inexact Rounded Subnormal Underflow +mulx884 multiply 1.2E-40 1.2E-40 -> 1.44E-80 Subnormal +mulx885 multiply 1.2E-40 1.2E-41 -> 1.44E-81 Subnormal +mulx886 multiply 1.2E-40 1.2E-42 -> 1.4E-82 Subnormal Inexact Rounded Underflow +mulx887 multiply 1.2E-40 1.3E-42 -> 1.6E-82 Subnormal Inexact Rounded Underflow +mulx888 multiply 1.3E-40 1.3E-42 -> 1.7E-82 Subnormal Inexact Rounded Underflow +mulx889 multiply 1.3E-40 1.3E-43 -> 2E-83 Subnormal Inexact Rounded Underflow +mulx890 multiply 1.3E-41 1.3E-43 -> 0E-83 Clamped Subnormal Inexact Rounded Underflow mulx891 multiply 1.2345E-39 1.234E-40 -> 1.5234E-79 Inexact Rounded mulx892 multiply 1.23456E-39 1.234E-40 -> 1.5234E-79 Inexact Rounded @@ -645,7 +689,43 @@ mulx895 multiply 1.2345E-41 1.234E-40 -> 1.52E-81 Inexact Rounded Subnormal Underflow mulx896 multiply 1.23456E-41 1.234E-40 -> 1.52E-81 Inexact Rounded Subnormal Underflow +-- Now explore the case where we get a normal result with Underflow +precision: 16 +rounding: half_up +maxExponent: 384 +minExponent: -383 + +mulx900 multiply 0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded +mulx901 multiply 0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded +mulx902 multiply 9.999999999999999E-383 0.0999999999999 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded +mulx903 multiply 9.999999999999999E-383 0.09999999999999 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded +mulx904 multiply 9.999999999999999E-383 0.099999999999999 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded +mulx905 multiply 9.999999999999999E-383 0.0999999999999999 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded +-- prove operands are exact +mulx906 multiply 9.999999999999999E-383 1 -> 9.999999999999999E-383 +mulx907 multiply 1 0.09999999999999999 -> 0.09999999999999999 +-- the next rounds to Nmin +mulx908 multiply 9.999999999999999E-383 0.09999999999999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +mulx909 multiply 9.999999999999999E-383 0.099999999999999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +mulx910 multiply 9.999999999999999E-383 0.0999999999999999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded +mulx911 multiply 9.999999999999999E-383 0.09999999999999999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded + + +-- Examples from SQL proposal (Krishna Kulkarni) +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 +mulx1001 multiply 130E-2 120E-2 -> 1.5600 +mulx1002 multiply 130E-2 12E-1 -> 1.560 +mulx1003 multiply 130E-2 1E0 -> 1.30 +mulx1004 multiply 1E2 1E4 -> 1E+6 + +-- payload decapitate +precision: 5 +mulx1010 multiply 11 -sNaN1234567890 -> -NaN67890 Invalid_operation + -- Null tests -mulx900 multiply 10 # -> NaN Invalid_operation -mulx901 multiply # 10 -> NaN Invalid_operation +mulx990 multiply 10 # -> NaN Invalid_operation +mulx991 multiply # 10 -> NaN Invalid_operation Deleted: /python/trunk/Lib/test/decimaltestdata/normalize.decTest ============================================================================== --- /python/trunk/Lib/test/decimaltestdata/normalize.decTest Thu Sep 13 20:13:15 2007 +++ (empty file) @@ -1,225 +0,0 @@ ------------------------------------------------------------------------- --- normalize.decTest -- remove trailing zeros -- --- Copyright (c) IBM Corporation, 2003. All rights reserved. -- ------------------------------------------------------------------------- --- Please see the document "General Decimal Arithmetic Testcases" -- --- at http://www2.hursley.ibm.com/decimal for the description of -- --- these testcases. -- --- -- --- These testcases are experimental ('beta' versions), and they -- --- may contain errors. They are offered on an as-is basis. In -- --- particular, achieving the same results as the tests here is not -- --- a guarantee that an implementation complies with any Standard -- --- or specification. The tests are not exhaustive. -- --- -- --- Please send comments, suggestions, and corrections to the author: -- --- Mike Cowlishaw, IBM Fellow -- --- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- --- mfc at uk.ibm.com -- ------------------------------------------------------------------------- -version: 2.39 - -extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minexponent: -999 - -nrmx001 normalize '1' -> '1' -nrmx002 normalize '-1' -> '-1' -nrmx003 normalize '1.00' -> '1' -nrmx004 normalize '-1.00' -> '-1' -nrmx005 normalize '0' -> '0' -nrmx006 normalize '0.00' -> '0' -nrmx007 normalize '00.0' -> '0' -nrmx008 normalize '00.00' -> '0' -nrmx009 normalize '00' -> '0' -nrmx010 normalize '0E+1' -> '0' -nrmx011 normalize '0E+5' -> '0' - -nrmx012 normalize '-2' -> '-2' -nrmx013 normalize '2' -> '2' -nrmx014 normalize '-2.00' -> '-2' -nrmx015 normalize '2.00' -> '2' -nrmx016 normalize '-0' -> '-0' -nrmx017 normalize '-0.00' -> '-0' -nrmx018 normalize '-00.0' -> '-0' -nrmx019 normalize '-00.00' -> '-0' -nrmx020 normalize '-00' -> '-0' -nrmx021 normalize '-0E+5' -> '-0' -nrmx022 normalize '-0E+1' -> '-0' - -nrmx030 normalize '+0.1' -> '0.1' -nrmx031 normalize '-0.1' -> '-0.1' -nrmx032 normalize '+0.01' -> '0.01' -nrmx033 normalize '-0.01' -> '-0.01' -nrmx034 normalize '+0.001' -> '0.001' -nrmx035 normalize '-0.001' -> '-0.001' -nrmx036 normalize '+0.000001' -> '0.000001' -nrmx037 normalize '-0.000001' -> '-0.000001' -nrmx038 normalize '+0.000000000001' -> '1E-12' -nrmx039 normalize '-0.000000000001' -> '-1E-12' - -nrmx041 normalize 1.1 -> 1.1 -nrmx042 normalize 1.10 -> 1.1 -nrmx043 normalize 1.100 -> 1.1 -nrmx044 normalize 1.110 -> 1.11 -nrmx045 normalize -1.1 -> -1.1 -nrmx046 normalize -1.10 -> -1.1 -nrmx047 normalize -1.100 -> -1.1 -nrmx048 normalize -1.110 -> -1.11 -nrmx049 normalize 9.9 -> 9.9 -nrmx050 normalize 9.90 -> 9.9 -nrmx051 normalize 9.900 -> 9.9 -nrmx052 normalize 9.990 -> 9.99 -nrmx053 normalize -9.9 -> -9.9 -nrmx054 normalize -9.90 -> -9.9 -nrmx055 normalize -9.900 -> -9.9 -nrmx056 normalize -9.990 -> -9.99 - --- some trailing fractional zeros with zeros in units -nrmx060 normalize 10.0 -> 1E+1 -nrmx061 normalize 10.00 -> 1E+1 -nrmx062 normalize 100.0 -> 1E+2 -nrmx063 normalize 100.00 -> 1E+2 -nrmx064 normalize 1.1000E+3 -> 1.1E+3 -nrmx065 normalize 1.10000E+3 -> 1.1E+3 -nrmx066 normalize -10.0 -> -1E+1 -nrmx067 normalize -10.00 -> -1E+1 -nrmx068 normalize -100.0 -> -1E+2 -nrmx069 normalize -100.00 -> -1E+2 -nrmx070 normalize -1.1000E+3 -> -1.1E+3 -nrmx071 normalize -1.10000E+3 -> -1.1E+3 - --- some insignificant trailing zeros with positive exponent -nrmx080 normalize 10E+1 -> 1E+2 -nrmx081 normalize 100E+1 -> 1E+3 -nrmx082 normalize 1.0E+2 -> 1E+2 -nrmx083 normalize 1.0E+3 -> 1E+3 -nrmx084 normalize 1.1E+3 -> 1.1E+3 -nrmx085 normalize 1.00E+3 -> 1E+3 -nrmx086 normalize 1.10E+3 -> 1.1E+3 -nrmx087 normalize -10E+1 -> -1E+2 -nrmx088 normalize -100E+1 -> -1E+3 -nrmx089 normalize -1.0E+2 -> -1E+2 -nrmx090 normalize -1.0E+3 -> -1E+3 -nrmx091 normalize -1.1E+3 -> -1.1E+3 -nrmx092 normalize -1.00E+3 -> -1E+3 -nrmx093 normalize -1.10E+3 -> -1.1E+3 - --- some significant trailing zeros, were we to be trimming -nrmx100 normalize 11 -> 11 -nrmx101 normalize 10 -> 1E+1 -nrmx102 normalize 10. -> 1E+1 -nrmx103 normalize 1.1E+1 -> 11 -nrmx104 normalize 1.0E+1 -> 1E+1 -nrmx105 normalize 1.10E+2 -> 1.1E+2 -nrmx106 normalize 1.00E+2 -> 1E+2 -nrmx107 normalize 1.100E+3 -> 1.1E+3 -nrmx108 normalize 1.000E+3 -> 1E+3 -nrmx109 normalize 1.000000E+6 -> 1E+6 -nrmx110 normalize -11 -> -11 -nrmx111 normalize -10 -> -1E+1 -nrmx112 normalize -10. -> -1E+1 -nrmx113 normalize -1.1E+1 -> -11 -nrmx114 normalize -1.0E+1 -> -1E+1 -nrmx115 normalize -1.10E+2 -> -1.1E+2 -nrmx116 normalize -1.00E+2 -> -1E+2 -nrmx117 normalize -1.100E+3 -> -1.1E+3 -nrmx118 normalize -1.000E+3 -> -1E+3 -nrmx119 normalize -1.00000E+5 -> -1E+5 -nrmx120 normalize -1.000000E+6 -> -1E+6 -nrmx121 normalize -10.00000E+6 -> -1E+7 -nrmx122 normalize -100.0000E+6 -> -1E+8 -nrmx123 normalize -1000.000E+6 -> -1E+9 -nrmx124 normalize -10000.00E+6 -> -1E+10 -nrmx125 normalize -100000.0E+6 -> -1E+11 -nrmx126 normalize -1000000.E+6 -> -1E+12 - --- examples from decArith -nrmx140 normalize '2.1' -> '2.1' -nrmx141 normalize '-2.0' -> '-2' -nrmx142 normalize '1.200' -> '1.2' -nrmx143 normalize '-120' -> '-1.2E+2' -nrmx144 normalize '120.00' -> '1.2E+2' -nrmx145 normalize '0.00' -> '0' - --- overflow tests -maxexponent: 999999999 -minexponent: -999999999 -precision: 3 -nrmx160 normalize 9.999E+999999999 -> Infinity Inexact Overflow Rounded -nrmx161 normalize -9.999E+999999999 -> -Infinity Inexact Overflow Rounded - --- subnormals and underflow -precision: 3 -maxexponent: 999 -minexponent: -999 -nrmx210 normalize 1.00E-999 -> 1E-999 -nrmx211 normalize 0.1E-999 -> 1E-1000 Subnormal -nrmx212 normalize 0.10E-999 -> 1E-1000 Subnormal -nrmx213 normalize 0.100E-999 -> 1E-1000 Subnormal Rounded -nrmx214 normalize 0.01E-999 -> 1E-1001 Subnormal --- next is rounded to Emin -nrmx215 normalize 0.999E-999 -> 1E-999 Inexact Rounded Subnormal Underflow -nrmx216 normalize 0.099E-999 -> 1E-1000 Inexact Rounded Subnormal Underflow -nrmx217 normalize 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow -nrmx218 normalize 0.001E-999 -> 0 Inexact Rounded Subnormal Underflow -nrmx219 normalize 0.0009E-999 -> 0 Inexact Rounded Subnormal Underflow -nrmx220 normalize 0.0001E-999 -> 0 Inexact Rounded Subnormal Underflow - -nrmx230 normalize -1.00E-999 -> -1E-999 -nrmx231 normalize -0.1E-999 -> -1E-1000 Subnormal -nrmx232 normalize -0.10E-999 -> -1E-1000 Subnormal -nrmx233 normalize -0.100E-999 -> -1E-1000 Subnormal Rounded -nrmx234 normalize -0.01E-999 -> -1E-1001 Subnormal --- next is rounded to Emin -nrmx235 normalize -0.999E-999 -> -1E-999 Inexact Rounded Subnormal Underflow -nrmx236 normalize -0.099E-999 -> -1E-1000 Inexact Rounded Subnormal Underflow -nrmx237 normalize -0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow -nrmx238 normalize -0.001E-999 -> -0 Inexact Rounded Subnormal Underflow -nrmx239 normalize -0.0009E-999 -> -0 Inexact Rounded Subnormal Underflow -nrmx240 normalize -0.0001E-999 -> -0 Inexact Rounded Subnormal Underflow - --- more reshaping -precision: 9 -nrmx260 normalize '56260E-10' -> '0.000005626' -nrmx261 normalize '56260E-5' -> '0.5626' -nrmx262 normalize '56260E-2' -> '562.6' -nrmx263 normalize '56260E-1' -> '5626' -nrmx265 normalize '56260E-0' -> '5.626E+4' -nrmx266 normalize '56260E+0' -> '5.626E+4' -nrmx267 normalize '56260E+1' -> '5.626E+5' -nrmx268 normalize '56260E+2' -> '5.626E+6' -nrmx269 normalize '56260E+3' -> '5.626E+7' -nrmx270 normalize '56260E+4' -> '5.626E+8' -nrmx271 normalize '56260E+5' -> '5.626E+9' -nrmx272 normalize '56260E+6' -> '5.626E+10' -nrmx280 normalize '-56260E-10' -> '-0.000005626' -nrmx281 normalize '-56260E-5' -> '-0.5626' -nrmx282 normalize '-56260E-2' -> '-562.6' -nrmx283 normalize '-56260E-1' -> '-5626' -nrmx285 normalize '-56260E-0' -> '-5.626E+4' -nrmx286 normalize '-56260E+0' -> '-5.626E+4' -nrmx287 normalize '-56260E+1' -> '-5.626E+5' -nrmx288 normalize '-56260E+2' -> '-5.626E+6' -nrmx289 normalize '-56260E+3' -> '-5.626E+7' -nrmx290 normalize '-56260E+4' -> '-5.626E+8' -nrmx291 normalize '-56260E+5' -> '-5.626E+9' -nrmx292 normalize '-56260E+6' -> '-5.626E+10' - - --- specials -nrmx820 normalize 'Inf' -> 'Infinity' -nrmx821 normalize '-Inf' -> '-Infinity' -nrmx822 normalize NaN -> NaN -nrmx823 normalize sNaN -> NaN Invalid_operation -nrmx824 normalize NaN101 -> NaN101 -nrmx825 normalize sNaN010 -> NaN10 Invalid_operation -nrmx827 normalize -NaN -> -NaN -nrmx828 normalize -sNaN -> -NaN Invalid_operation -nrmx829 normalize -NaN101 -> -NaN101 -nrmx830 normalize -sNaN010 -> -NaN10 Invalid_operation - --- Null test -nrmx900 normalize # -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/plus.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/plus.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/plus.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- plus.decTest -- decimal monadic addition -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- This set of tests primarily tests the existence of the operator. -- Addition and rounding, and most overflows, are tested elsewhere. @@ -138,9 +138,9 @@ plux215 plus 0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow plux216 plus 0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow plux217 plus 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow -plux218 plus 0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -plux219 plus 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -plux220 plus 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow +plux218 plus 0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +plux219 plus 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +plux220 plus 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped plux230 plus -1.00E-999 -> -1.00E-999 plux231 plus -0.1E-999 -> -1E-1000 Subnormal @@ -151,9 +151,23 @@ plux235 plus -0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow plux236 plus -0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow plux237 plus -0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow -plux238 plus -0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow -plux239 plus -0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow -plux240 plus -0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow +plux238 plus -0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +plux239 plus -0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +plux240 plus -0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped + +-- subnormals clamped to 0-Etiny +precision: 16 +maxExponent: 384 +minExponent: -383 +plux251 plus 7E-398 -> 7E-398 Subnormal +plux252 plus 0E-398 -> 0E-398 +plux253 plus 7E-399 -> 1E-398 Subnormal Underflow Inexact Rounded +plux254 plus 4E-399 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded +plux255 plus 7E-400 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded +plux256 plus 7E-401 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded +plux257 plus 0E-399 -> 0E-398 Clamped +plux258 plus 0E-400 -> 0E-398 Clamped +plux259 plus 0E-401 -> 0E-398 Clamped -- long operand checks maxexponent: 999 Modified: python/trunk/Lib/test/decimaltestdata/power.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/power.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/power.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ----------------------------------------------------------------------- --- power.decTest -- decimal exponentiation -- --- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. -- +------------------------------------------------------------------------ +-- power.decTest -- decimal exponentiation [power(x, y)] -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,17 +17,17 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 --- This set of testcases tests raising numbers to an integer power only. --- If arbitrary powers were supported, 1 ulp differences would be --- permitted. +-- In addition to the power operator testcases here, see also the file +-- powersqrt.decTest which includes all the tests from +-- squareroot.decTest implemented using power(x, 0.5) extended: 1 -precision: 9 -rounding: half_up -maxExponent: 999 -minexponent: -999 +precision: 16 +rounding: half_even +maxExponent: 384 +minExponent: -383 -- base checks. Note 0**0 is an error. powx001 power '0' '0' -> NaN Invalid_operation @@ -52,51 +52,54 @@ powx022 power '2' '12' -> '4096' powx023 power '2' '15' -> '32768' powx024 power '2' '16' -> '65536' -powx025 power '2' '31' -> '2.14748365E+9' Inexact Rounded +powx025 power '2' '31' -> '2147483648' +-- NB 0 not stripped in next +powx026 power '2' '32' -> '4294967296' + +precision: 9 +powx027 power '2' '31' -> '2.14748365E+9' Inexact Rounded -- NB 0 not stripped in next -powx026 power '2' '32' -> '4.29496730E+9' Inexact Rounded +powx028 power '2' '32' -> '4.29496730E+9' Inexact Rounded precision: 10 -powx027 power '2' '31' -> '2147483648' -powx028 power '2' '32' -> '4294967296' +powx029 power '2' '31' -> '2147483648' +powx030 power '2' '32' -> '4294967296' precision: 9 -powx030 power '3' '2' -> 9 -powx031 power '4' '2' -> 16 -powx032 power '5' '2' -> 25 -powx033 power '6' '2' -> 36 -powx034 power '7' '2' -> 49 -powx035 power '8' '2' -> 64 -powx036 power '9' '2' -> 81 -powx037 power '10' '2' -> 100 -powx038 power '11' '2' -> 121 -powx039 power '12' '2' -> 144 - -powx040 power '3' '3' -> 27 -powx041 power '4' '3' -> 64 -powx042 power '5' '3' -> 125 -powx043 power '6' '3' -> 216 -powx044 power '7' '3' -> 343 - -powx050 power '10' '0' -> 1 -powx051 power '10' '1' -> 10 -powx052 power '10' '2' -> 100 -powx053 power '10' '3' -> 1000 -powx054 power '10' '4' -> 10000 -powx055 power '10' '5' -> 100000 -powx056 power '10' '6' -> 1000000 -powx057 power '10' '7' -> 10000000 -powx058 power '10' '8' -> 100000000 -powx059 power '10' '9' -> 1.00000000E+9 Rounded -powx060 power '10' '22' -> 1.00000000E+22 Rounded -powx061 power '10' '77' -> 1.00000000E+77 Rounded -powx062 power '10' '99' -> 1.00000000E+99 Rounded - -maxexponent: 999999999 -minexponent: -999999999 -powx063 power '10' '999999999' -> '1.00000000E+999999999' Rounded -powx064 power '10' '999999998' -> '1.00000000E+999999998' Rounded -powx065 power '10' '999999997' -> '1.00000000E+999999997' Rounded -powx066 power '10' '333333333' -> '1.00000000E+333333333' Rounded +powx031 power '3' '2' -> 9 +powx032 power '4' '2' -> 16 +powx033 power '5' '2' -> 25 +powx034 power '6' '2' -> 36 +powx035 power '7' '2' -> 49 +powx036 power '8' '2' -> 64 +powx037 power '9' '2' -> 81 +powx038 power '10' '2' -> 100 +powx039 power '11' '2' -> 121 +powx040 power '12' '2' -> 144 + +powx041 power '3' '3' -> 27 +powx042 power '4' '3' -> 64 +powx043 power '5' '3' -> 125 +powx044 power '6' '3' -> 216 +powx045 power '7' '3' -> 343 +powx047 power '-3' '3' -> -27 +powx048 power '-4' '3' -> -64 +powx049 power '-5' '3' -> -125 +powx050 power '-6' '3' -> -216 +powx051 power '-7' '3' -> -343 + +powx052 power '10' '0' -> 1 +powx053 power '10' '1' -> 10 +powx054 power '10' '2' -> 100 +powx055 power '10' '3' -> 1000 +powx056 power '10' '4' -> 10000 +powx057 power '10' '5' -> 100000 +powx058 power '10' '6' -> 1000000 +powx059 power '10' '7' -> 10000000 +powx060 power '10' '8' -> 100000000 +powx061 power '10' '9' -> 1.00000000E+9 Rounded +powx062 power '10' '22' -> 1.00000000E+22 Rounded +powx063 power '10' '77' -> 1.00000000E+77 Rounded +powx064 power '10' '99' -> 1.00000000E+99 Rounded powx070 power '0.3' '0' -> '1' powx071 power '0.3' '1' -> '0.3' @@ -127,71 +130,52 @@ powx095 power 101 7 -> 1.07213535E+14 Inexact Rounded -- negative powers -powx101 power '2' '-1' -> 0.5 -powx102 power '2' '-2' -> 0.25 -powx103 power '2' '-4' -> 0.0625 -powx104 power '2' '-8' -> 0.00390625 -powx105 power '2' '-16' -> 0.0000152587891 Inexact Rounded -powx106 power '2' '-32' -> 2.32830644E-10 Inexact Rounded -powx108 power '2' '-64' -> 5.42101086E-20 Inexact Rounded -powx110 power '10' '-8' -> 1E-8 -powx111 power '10' '-7' -> 1E-7 -powx112 power '10' '-6' -> 0.000001 -powx113 power '10' '-5' -> 0.00001 -powx114 power '10' '-4' -> 0.0001 -powx115 power '10' '-3' -> 0.001 -powx116 power '10' '-2' -> 0.01 -powx117 power '10' '-1' -> 0.1 - -powx118 power '10' '-333333333' -> 1E-333333333 -powx119 power '10' '-999999998' -> 1E-999999998 -powx120 power '10' '-999999999' -> 1E-999999999 -powx121 power '10' '-77' -> '1E-77' -powx122 power '10' '-22' -> '1E-22' - -powx123 power '2' '-1' -> '0.5' -powx124 power '2' '-2' -> '0.25' -powx125 power '2' '-4' -> '0.0625' -powx126 power '0' '-1' -> Infinity Division_by_zero -powx127 power '0' '-2' -> Infinity Division_by_zero -powx128 power -0 '-1' -> -Infinity Division_by_zero -powx129 power -0 '-2' -> Infinity Division_by_zero - --- out-of-range edge cases -powx181 power '7' '999999998' -> 2.10892313E+845098038 Inexact Rounded -powx182 power '7' '999999999' -> 1.47624619E+845098039 Inexact Rounded -powx183 power '7' '1000000000' -> NaN Invalid_operation -powx184 power '7' '1000000001' -> NaN Invalid_operation -powx185 power '7' '10000000000' -> NaN Invalid_operation -powx186 power '7' '-1000000001' -> NaN Invalid_operation -powx187 power '7' '-1000000000' -> NaN Invalid_operation -powx189 power '7' '-999999999' -> 6.77393787E-845098040 Inexact Rounded -powx190 power '7' '-999999998' -> 4.74175651E-845098039 Inexact Rounded - --- some baddies [more below] -powx191 power '2' '2.000001' -> NaN Invalid_operation -powx192 power '2' '2.00000000' -> 4 -powx193 power '2' '2.000000001' -> NaN Invalid_operation -powx194 power '2' '2.0000000001' -> NaN Invalid_operation +powx099 power '1' '-1' -> 1 +powx100 power '3' '-1' -> 0.333333333 Inexact Rounded +powx101 power '2' '-1' -> 0.5 +powx102 power '2' '-2' -> 0.25 +powx103 power '2' '-4' -> 0.0625 +powx104 power '2' '-8' -> 0.00390625 +powx105 power '2' '-16' -> 0.0000152587891 Inexact Rounded +powx106 power '2' '-32' -> 2.32830644E-10 Inexact Rounded +powx108 power '2' '-64' -> 5.42101086E-20 Inexact Rounded +powx110 power '10' '-8' -> 1E-8 +powx111 power '10' '-7' -> 1E-7 +powx112 power '10' '-6' -> 0.000001 +powx113 power '10' '-5' -> 0.00001 +powx114 power '10' '-4' -> 0.0001 +powx115 power '10' '-3' -> 0.001 +powx116 power '10' '-2' -> 0.01 +powx117 power '10' '-1' -> 0.1 +powx121 power '10' '-77' -> '1E-77' +powx122 power '10' '-22' -> '1E-22' + +powx123 power '2' '-1' -> '0.5' +powx124 power '2' '-2' -> '0.25' +powx125 power '2' '-4' -> '0.0625' + +powx126 power '0' '-1' -> Infinity +powx127 power '0' '-2' -> Infinity +powx128 power -0 '-1' -> -Infinity +powx129 power -0 '-2' -> Infinity -- "0.5" tests from original Rexx diagnostics [loop unrolled] -powx200 power 0.5 0 -> 1 -powx201 power 0.5 1 -> 0.5 -powx202 power 0.5 2 -> 0.25 -powx203 power 0.5 3 -> 0.125 -powx204 power 0.5 4 -> 0.0625 -powx205 power 0.5 5 -> 0.03125 -powx206 power 0.5 6 -> 0.015625 -powx207 power 0.5 7 -> 0.0078125 -powx208 power 0.5 8 -> 0.00390625 -powx209 power 0.5 9 -> 0.001953125 -powx210 power 0.5 10 -> 0.0009765625 +powx200 power 0.5 0 -> 1 +powx201 power 0.5 1 -> 0.5 +powx202 power 0.5 2 -> 0.25 +powx203 power 0.5 3 -> 0.125 +powx204 power 0.5 4 -> 0.0625 +powx205 power 0.5 5 -> 0.03125 +powx206 power 0.5 6 -> 0.015625 +powx207 power 0.5 7 -> 0.0078125 +powx208 power 0.5 8 -> 0.00390625 +powx209 power 0.5 9 -> 0.001953125 +powx210 power 0.5 10 -> 0.0009765625 + +powx211 power 1 100000000 -> 1 +powx212 power 1 999999998 -> 1 +powx213 power 1 999999999 -> 1 --- A (rare) case where the last digit is not within 0.5 ULP -precision: 9 -powx215 power "-21971575.0E+31454441" "-7" -> "-4.04549503E-220181139" Inexact Rounded -precision: 20 -powx216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded -- The Vienna case. Checks both setup and 1/acc working precision -- Modified 1998.12.14 as RHS no longer rounded before use (must fit) @@ -201,185 +185,64 @@ -- Modified 2002.10.06 -- finally, no input rounding -- With input rounding, result would be 8.74E-2226 precision: 3 +maxexponent: 5000 +minexponent: -5000 powx219 power '123456789E+10' '-1.23000e+2' -> '5.54E-2226' Inexact Rounded --- whole number checks -precision: 9 -powx221 power 1 1234 -> 1 -precision: 4 -powx222 power 1 1234 -> 1 -precision: 3 -powx223 power 1 1234 -> 1 -powx224 power 1 12.34e+2 -> 1 -powx225 power 1 12.3 -> NaN Invalid_operation -powx226 power 1 12.0 -> 1 -powx227 power 1 1.01 -> NaN Invalid_operation -powx228 power 2 1.00 -> 2 -powx229 power 2 2.00 -> 4 -precision: 9 -powx230 power 1 1.0001 -> NaN Invalid_operation -powx231 power 1 1.0000001 -> NaN Invalid_operation -powx232 power 1 1.0000000001 -> NaN Invalid_operation -powx233 power 1 1.0000000000001 -> NaN Invalid_operation -precision: 5 -powx234 power 1 1.0001 -> NaN Invalid_operation -powx235 power 1 1.0000001 -> NaN Invalid_operation -powx236 power 1 1.0000000001 -> NaN Invalid_operation -powx237 power 1 1.0000000000001 -> NaN Invalid_operation -powx238 power 1 1.0000000000001 -> NaN Invalid_operation - -maxexponent: 999999999 -minexponent: -999999999 -powx239 power 1 5.67E-987654321 -> NaN Invalid_operation - -powx240 power 1 100000000 -> 1 -powx241 power 1 999999998 -> 1 -powx242 power 1 999999999 -> 1 -powx243 power 1 1000000000 -> NaN Invalid_operation -powx244 power 1 9999999999 -> NaN Invalid_operation - --- Checks for 'Too much precision needed' --- For x^12, digits+elength+1 = digits+3 -precision: 999999999 -powx249 add 1 1 -> 2 -- check basic operation at this precision -powx250 power 2 12 -> Infinity Overflow -precision: 999999998 -powx251 power 2 12 -> Infinity Overflow -precision: 999999997 -powx252 power 2 12 -> Infinity Overflow -precision: 999999996 -powx253 power 2 12 -> 4096 -precision: 999999995 -powx254 power 2 12 -> 4096 - -- zeros maxexponent: +96 minexponent: -95 precision: 7 -powx260 power 0E-34 3 -> 0E-101 Clamped -powx261 power 0E-33 3 -> 0E-99 -powx262 power 0E-32 3 -> 0E-96 -powx263 power 0E-30 3 -> 0E-90 -powx264 power 0E-10 3 -> 0E-30 -powx265 power 0E-1 3 -> 0.000 -powx266 power 0E+0 3 -> 0 -powx267 power 0 3 -> 0 -powx268 power 0E+1 3 -> 0E+3 -powx269 power 0E+10 3 -> 0E+30 -powx270 power 0E+30 3 -> 0E+90 -powx271 power 0E+32 3 -> 0E+96 -powx272 power 0E+33 3 -> 0E+96 Clamped - --- overflow and underflow tests -maxexponent: 999999999 -minexponent: -999999999 -precision: 9 -powx280 power 9 999999999 -> 3.05550054E+954242508 Inexact Rounded -powx281 power 10 999999999 -> 1.00000000E+999999999 Rounded -powx282 power 10.0001 999999999 -> Infinity Overflow Inexact Rounded -powx283 power 10.1 999999999 -> Infinity Overflow Inexact Rounded -powx284 power 11 999999999 -> Infinity Overflow Inexact Rounded -powx285 power 12 999999999 -> Infinity Overflow Inexact Rounded -powx286 power 999 999999999 -> Infinity Overflow Inexact Rounded -powx287 power 999999 999999999 -> Infinity Overflow Inexact Rounded -powx288 power 999999999 999999999 -> Infinity Overflow Inexact Rounded -powx289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded - -powx290 power 0.5 999999999 -> 4.33559594E-301029996 Inexact Rounded -powx291 power 0.1 999999999 -> 1E-999999999 -- unrounded -powx292 power 0.09 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx293 power 0.05 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx294 power 0.01 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx295 power 0.0001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx297 power 0.0000001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx298 power 0.0000000001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx299 power 1E-999999999 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped - -powx310 power -9 999999999 -> -3.05550054E+954242508 Inexact Rounded -powx311 power -10 999999999 -> -1.00000000E+999999999 Rounded -powx312 power -10.0001 999999999 -> -Infinity Overflow Inexact Rounded -powx313 power -10.1 999999999 -> -Infinity Overflow Inexact Rounded -powx314 power -11 999999999 -> -Infinity Overflow Inexact Rounded -powx315 power -12 999999999 -> -Infinity Overflow Inexact Rounded -powx316 power -999 999999999 -> -Infinity Overflow Inexact Rounded -powx317 power -999999 999999999 -> -Infinity Overflow Inexact Rounded -powx318 power -999999999 999999999 -> -Infinity Overflow Inexact Rounded -powx319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded - -powx320 power -0.5 999999999 -> -4.33559594E-301029996 Inexact Rounded -powx321 power -0.1 999999999 -> -1E-999999999 -powx322 power -0.09 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx323 power -0.05 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx324 power -0.01 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx325 power -0.0001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx327 power -0.0000001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx328 power -0.0000000001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx329 power -1E-999999999 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx223 power 0E-30 3 -> 0 +powx224 power 0E-10 3 -> 0 +powx225 power 0E-1 3 -> 0 +powx226 power 0E+0 3 -> 0 +powx227 power 0 3 -> 0 +powx228 power 0E+1 3 -> 0 +powx229 power 0E+10 3 -> 0 +powx230 power 0E+30 3 -> 0 +powx231 power 3 0E-30 -> 1 +powx232 power 3 0E-10 -> 1 +powx233 power 3 0E-1 -> 1 +powx234 power 3 0E+0 -> 1 +powx235 power 3 0 -> 1 +powx236 power 3 0E+1 -> 1 +powx237 power 3 0E+10 -> 1 +powx238 power 3 0E+30 -> 1 +powx239 power 0E-30 -3 -> Infinity +powx240 power 0E-10 -3 -> Infinity +powx241 power 0E-1 -3 -> Infinity +powx242 power 0E+0 -3 -> Infinity +powx243 power 0 -3 -> Infinity +powx244 power 0E+1 -3 -> Infinity +powx245 power 0E+10 -3 -> Infinity +powx246 power 0E+30 -3 -> Infinity +powx247 power -3 0E-30 -> 1 +powx248 power -3 0E-10 -> 1 +powx249 power -3 0E-1 -> 1 +powx250 power -3 0E+0 -> 1 +powx251 power -3 0 -> 1 +powx252 power -3 0E+1 -> 1 +powx253 power -3 0E+10 -> 1 +powx254 power -3 0E+30 -> 1 --- note no trim of next result -powx330 power -9 999999998 -> 3.39500060E+954242507 Inexact Rounded -powx331 power -10 999999998 -> 1.00000000E+999999998 Rounded -powx332 power -10.0001 999999998 -> Infinity Overflow Inexact Rounded -powx333 power -10.1 999999998 -> Infinity Overflow Inexact Rounded -powx334 power -11 999999998 -> Infinity Overflow Inexact Rounded -powx335 power -12 999999998 -> Infinity Overflow Inexact Rounded -powx336 power -999 999999998 -> Infinity Overflow Inexact Rounded -powx337 power -999999 999999998 -> Infinity Overflow Inexact Rounded -powx338 power -999999999 999999998 -> Infinity Overflow Inexact Rounded -powx339 power -9.9E999999999 999999998 -> Infinity Overflow Inexact Rounded - -powx340 power -0.5 999999998 -> 8.67119187E-301029996 Inexact Rounded -powx341 power -0.1 999999998 -> 1E-999999998 -- NB exact unrounded -powx342 power -0.09 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx343 power -0.05 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx344 power -0.01 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx345 power -0.0001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx347 power -0.0000001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx348 power -0.0000000001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx349 power -1E-999999999 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped - --- some subnormals +-- a few lhs negatives precision: 9 --- [precision is 9, so smallest exponent is -1000000007 -powx350 power 1e-1 500000000 -> 1E-500000000 -powx351 power 1e-2 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped -powx352 power 1e-2 500000000 -> 1E-1000000000 Subnormal -powx353 power 1e-2 500000001 -> 1E-1000000002 Subnormal -powx354 power 1e-2 500000002 -> 1E-1000000004 Subnormal -powx355 power 1e-2 500000003 -> 1E-1000000006 Subnormal -powx356 power 1e-2 500000004 -> 0E-1000000007 Underflow Subnormal Inexact Rounded - -powx360 power 0.010001 500000000 -> 4.34941988E-999978287 Inexact Rounded -powx361 power 0.010000001 500000000 -> 5.18469257E-999999979 Inexact Rounded -powx362 power 0.010000001 500000001 -> 5.18469309E-999999981 Inexact Rounded -powx363 power 0.0100000009 500000000 -> 3.49342003E-999999981 Inexact Rounded -powx364 power 0.0100000001 500000000 -> 1.48413155E-999999998 Inexact Rounded -powx365 power 0.01 500000000 -> 1E-1000000000 Subnormal -powx366 power 0.0099999999 500000000 -> 6.7379E-1000000003 Underflow Subnormal Inexact Rounded -powx367 power 0.0099999998 500000000 -> 4.54E-1000000005 Underflow Subnormal Inexact Rounded -powx368 power 0.0099999997 500000000 -> 3E-1000000007 Underflow Subnormal Inexact Rounded -powx369 power 0.0099999996 500000000 -> 0E-1000000007 Underflow Subnormal Inexact Rounded -powx370 power 0.009 500000000 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped - --- 1/subnormal -> overflow -powx371 power 1e-1 -500000000 -> 1E+500000000 -powx372 power 1e-2 -999999999 -> Infinity Overflow Inexact Rounded -powx373 power 1e-2 -500000000 -> Infinity Overflow Inexact Rounded -powx374 power 1e-2 -500000001 -> Infinity Overflow Inexact Rounded -powx375 power 1e-2 -500000002 -> Infinity Overflow Inexact Rounded -powx376 power 1e-2 -500000003 -> Infinity Overflow Inexact Rounded -powx377 power 1e-2 -500000004 -> Infinity Overflow Inexact Rounded - -powx381 power 0.010001 -500000000 -> 2.29915719E+999978286 Inexact Rounded -powx382 power 0.010000001 -500000000 -> 1.92875467E+999999978 Inexact Rounded -powx383 power 0.010000001 -500000001 -> 1.92875448E+999999980 Inexact Rounded -powx384 power 0.0100000009 -500000000 -> 2.86252438E+999999980 Inexact Rounded -powx385 power 0.0100000001 -500000000 -> 6.73794717E+999999997 Inexact Rounded -powx386 power 0.01 -500000000 -> Infinity Overflow Inexact Rounded -powx387 power 0.009999 -500000000 -> Infinity Overflow Inexact Rounded - --- negative power giving subnormal -powx388 power 100.000001 -500000000 -> 6.7379E-1000000003 Underflow Subnormal Inexact Rounded +maxExponent: 999 +minexponent: -999 +powx260 power -10 '0' -> 1 +powx261 power -10 '1' -> -10 +powx262 power -10 '2' -> 100 +powx263 power -10 '3' -> -1000 +powx264 power -10 '4' -> 10000 +powx265 power -10 '5' -> -100000 +powx266 power -10 '6' -> 1000000 +powx267 power -10 '7' -> -10000000 +powx268 power -10 '8' -> 100000000 +powx269 power -10 '9' -> -1.00000000E+9 Rounded +powx270 power -10 '22' -> 1.00000000E+22 Rounded +powx271 power -10 '77' -> -1.00000000E+77 Rounded +powx272 power -10 '99' -> -1.00000000E+99 Rounded -- some more edge cases precision: 15 @@ -389,8 +252,9 @@ powx392 power 0.099 999 -> 4.360732062E-1004 Underflow Subnormal Inexact Rounded powx393 power 0.098 999 -> 1.71731E-1008 Underflow Subnormal Inexact Rounded powx394 power 0.097 999 -> 6E-1013 Underflow Subnormal Inexact Rounded -powx395 power 0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded +powx395 power 0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped powx396 power 0.01 999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped +powx397 power 0.02 100000000 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped -- multiply tests are here to aid checking and test for consistent handling -- of underflow @@ -399,7 +263,7 @@ minexponent: -999 -- squares -mulx400 multiply 1E-502 1e-502 -> 0E-1003 Subnormal Inexact Underflow Rounded +mulx400 multiply 1E-502 1e-502 -> 0E-1003 Subnormal Inexact Underflow Rounded Clamped mulx401 multiply 1E-501 1e-501 -> 1E-1002 Subnormal mulx402 multiply 2E-501 2e-501 -> 4E-1002 Subnormal mulx403 multiply 4E-501 4e-501 -> 1.6E-1001 Subnormal @@ -407,7 +271,7 @@ mulx405 multiply 30E-501 30e-501 -> 9.00E-1000 Subnormal mulx406 multiply 40E-501 40e-501 -> 1.600E-999 -powx400 power 1E-502 2 -> 0E-1003 Underflow Subnormal Inexact Rounded +powx400 power 1E-502 2 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped powx401 power 1E-501 2 -> 1E-1002 Subnormal powx402 power 2E-501 2 -> 4E-1002 Subnormal powx403 power 4E-501 2 -> 1.6E-1001 Subnormal @@ -416,7 +280,7 @@ powx406 power 40E-501 2 -> 1.600E-999 -- cubes -mulx410 multiply 1E-670 1e-335 -> 0E-1003 Underflow Subnormal Inexact Rounded +mulx410 multiply 1E-670 1e-335 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped mulx411 multiply 1E-668 1e-334 -> 1E-1002 Subnormal mulx412 multiply 4E-668 2e-334 -> 8E-1002 Subnormal mulx413 multiply 9E-668 3e-334 -> 2.7E-1001 Subnormal @@ -424,7 +288,7 @@ mulx415 multiply 25E-668 5e-334 -> 1.25E-1000 Subnormal mulx416 multiply 10E-668 100e-334 -> 1.000E-999 -powx410 power 1E-335 3 -> 0E-1003 Underflow Subnormal Inexact Rounded +powx410 power 1E-335 3 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped powx411 power 1E-334 3 -> 1E-1002 Subnormal powx412 power 2E-334 3 -> 8E-1002 Subnormal powx413 power 3E-334 3 -> 2.7E-1001 Subnormal @@ -442,24 +306,24 @@ powx423 power 2.5E+499 -2 -> 1.6E-999 powx424 power 2.5E+500 -2 -> 1.6E-1001 Subnormal powx425 power 2.5E+501 -2 -> 2E-1003 Underflow Subnormal Inexact Rounded -powx426 power 2.5E+502 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded +powx426 power 2.5E+502 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped powx427 power 0.25E+499 -2 -> 1.6E-997 powx428 power 0.25E+500 -2 -> 1.6E-999 powx429 power 0.25E+501 -2 -> 1.6E-1001 Subnormal powx430 power 0.25E+502 -2 -> 2E-1003 Underflow Subnormal Inexact Rounded -powx431 power 0.25E+503 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded +powx431 power 0.25E+503 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped powx432 power 0.04E+499 -2 -> 6.25E-996 powx433 power 0.04E+500 -2 -> 6.25E-998 powx434 power 0.04E+501 -2 -> 6.25E-1000 Subnormal -powx435 power 0.04E+502 -2 -> 6.3E-1002 Underflow Subnormal Inexact Rounded +powx435 power 0.04E+502 -2 -> 6.2E-1002 Underflow Subnormal Inexact Rounded powx436 power 0.04E+503 -2 -> 1E-1003 Underflow Subnormal Inexact Rounded -powx437 power 0.04E+504 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded +powx437 power 0.04E+504 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped powx441 power 0.04E+334 -3 -> 1.5625E-998 powx442 power 0.04E+335 -3 -> 1.56E-1001 Underflow Subnormal Inexact Rounded -powx443 power 0.04E+336 -3 -> 0E-1003 Underflow Subnormal Inexact Rounded +powx443 power 0.04E+336 -3 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped powx444 power 0.25E+333 -3 -> 6.4E-998 powx445 power 0.25E+334 -3 -> 6.4E-1001 Subnormal powx446 power 0.25E+335 -3 -> 1E-1003 Underflow Subnormal Inexact Rounded @@ -467,7 +331,7 @@ -- check sign for cubes and a few squares powx448 power -0.04E+334 -3 -> -1.5625E-998 powx449 power -0.04E+335 -3 -> -1.56E-1001 Underflow Subnormal Inexact Rounded -powx450 power -0.04E+336 -3 -> -0E-1003 Underflow Subnormal Inexact Rounded +powx450 power -0.04E+336 -3 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped powx451 power -0.25E+333 -3 -> -6.4E-998 powx452 power -0.25E+334 -3 -> -6.4E-1001 Subnormal powx453 power -0.25E+335 -3 -> -1E-1003 Underflow Subnormal Inexact Rounded @@ -475,7 +339,7 @@ powx455 power -0.04E+499 -2 -> 6.25E-996 powx456 power -0.04E+500 -2 -> 6.25E-998 powx457 power -0.04E+501 -2 -> 6.25E-1000 Subnormal -powx458 power -0.04E+502 -2 -> 6.3E-1002 Underflow Subnormal Inexact Rounded +powx458 power -0.04E+502 -2 -> 6.2E-1002 Underflow Subnormal Inexact Rounded -- test -0s precision: 9 @@ -488,123 +352,124 @@ powx566 power -1 0 -> 1 powx567 power -1 -0 -> 1 powx568 power 0 1 -> 0 -powx569 power 0 -1 -> Infinity Division_by_zero +powx569 power 0 -1 -> Infinity powx570 power -0 1 -> -0 -powx571 power -0 -1 -> -Infinity Division_by_zero +powx571 power -0 -1 -> -Infinity powx572 power 0 2 -> 0 -powx573 power 0 -2 -> Infinity Division_by_zero +powx573 power 0 -2 -> Infinity powx574 power -0 2 -> 0 -powx575 power -0 -2 -> Infinity Division_by_zero +powx575 power -0 -2 -> Infinity powx576 power 0 3 -> 0 -powx577 power 0 -3 -> Infinity Division_by_zero +powx577 power 0 -3 -> Infinity powx578 power -0 3 -> -0 -powx579 power -0 -3 -> -Infinity Division_by_zero +powx579 power -0 -3 -> -Infinity -- Specials -powx580 power Inf -Inf -> NaN Invalid_operation +powx580 power Inf -Inf -> 0 powx581 power Inf -1000 -> 0 powx582 power Inf -1 -> 0 -powx583 power Inf -0 -> 1 -powx584 power Inf 0 -> 1 -powx585 power Inf 1 -> Infinity -powx586 power Inf 1000 -> Infinity -powx587 power Inf Inf -> NaN Invalid_operation -powx588 power -1000 Inf -> NaN Invalid_operation -powx589 power -Inf Inf -> NaN Invalid_operation -powx590 power -1 Inf -> NaN Invalid_operation -powx591 power -0 Inf -> NaN Invalid_operation -powx592 power 0 Inf -> NaN Invalid_operation -powx593 power 1 Inf -> NaN Invalid_operation -powx594 power 1000 Inf -> NaN Invalid_operation -powx595 power Inf Inf -> NaN Invalid_operation +powx583 power Inf -0.5 -> 0 +powx584 power Inf -0 -> 1 +powx585 power Inf 0 -> 1 +powx586 power Inf 0.5 -> Infinity +powx587 power Inf 1 -> Infinity +powx588 power Inf 1000 -> Infinity +powx589 power Inf Inf -> Infinity +powx590 power -1000 Inf -> NaN Invalid_operation +powx591 power -Inf Inf -> NaN Invalid_operation +powx592 power -1 Inf -> NaN Invalid_operation +powx593 power -0.5 Inf -> NaN Invalid_operation +powx594 power -0 Inf -> 0 +powx595 power 0 Inf -> 0 +powx596 power 0.5 Inf -> 0 +powx597 power 1 Inf -> 1.00000000 Inexact Rounded +powx598 power 1000 Inf -> Infinity +powx599 power Inf Inf -> Infinity powx600 power -Inf -Inf -> NaN Invalid_operation powx601 power -Inf -1000 -> 0 powx602 power -Inf -1 -> -0 -powx603 power -Inf -0 -> 1 -powx604 power -Inf 0 -> 1 -powx605 power -Inf 1 -> -Infinity -powx606 power -Inf 1000 -> Infinity -powx607 power -Inf Inf -> NaN Invalid_operation -powx608 power -1000 Inf -> NaN Invalid_operation -powx609 power -Inf -Inf -> NaN Invalid_operation -powx610 power -1 -Inf -> NaN Invalid_operation -powx611 power -0 -Inf -> NaN Invalid_operation -powx612 power 0 -Inf -> NaN Invalid_operation -powx613 power 1 -Inf -> NaN Invalid_operation -powx614 power 1000 -Inf -> NaN Invalid_operation -powx615 power Inf -Inf -> NaN Invalid_operation +powx603 power -Inf -0.5 -> NaN Invalid_operation +powx604 power -Inf -0 -> 1 +powx605 power -Inf 0 -> 1 +powx606 power -Inf 0.5 -> NaN Invalid_operation +powx607 power -Inf 1 -> -Infinity +powx608 power -Inf 1000 -> Infinity +powx609 power -Inf Inf -> NaN Invalid_operation +powx610 power -1000 Inf -> NaN Invalid_operation +powx611 power -Inf -Inf -> NaN Invalid_operation +powx612 power -1 -Inf -> NaN Invalid_operation +powx613 power -0.5 -Inf -> NaN Invalid_operation +powx614 power -0 -Inf -> Infinity +powx615 power 0 -Inf -> Infinity +powx616 power 0.5 -Inf -> Infinity +powx617 power 1 -Inf -> 1.00000000 Inexact Rounded +powx618 power 1000 -Inf -> 0 +powx619 power Inf -Inf -> 0 -powx621 power NaN -Inf -> NaN Invalid_operation +powx621 power NaN -Inf -> NaN powx622 power NaN -1000 -> NaN powx623 power NaN -1 -> NaN -powx624 power NaN -0 -> NaN -powx625 power NaN 0 -> NaN -powx626 power NaN 1 -> NaN -powx627 power NaN 1000 -> NaN -powx628 power NaN Inf -> NaN Invalid_operation -powx629 power NaN NaN -> NaN -powx630 power -Inf NaN -> NaN -powx631 power -1000 NaN -> NaN -powx632 power -1 NaN -> NaN -powx633 power -0 NaN -> NaN -powx634 power 0 NaN -> NaN -powx635 power 1 NaN -> NaN -powx636 power 1000 NaN -> NaN -powx637 power Inf NaN -> NaN +powx624 power NaN -0.5 -> NaN +powx625 power NaN -0 -> NaN +powx626 power NaN 0 -> NaN +powx627 power NaN 0.5 -> NaN +powx628 power NaN 1 -> NaN +powx629 power NaN 1000 -> NaN +powx630 power NaN Inf -> NaN +powx631 power NaN NaN -> NaN +powx632 power -Inf NaN -> NaN +powx633 power -1000 NaN -> NaN +powx634 power -1 NaN -> NaN +powx635 power -0 NaN -> NaN +powx636 power 0 NaN -> NaN +powx637 power 1 NaN -> NaN +powx638 power 1000 NaN -> NaN +powx639 power Inf NaN -> NaN powx641 power sNaN -Inf -> NaN Invalid_operation powx642 power sNaN -1000 -> NaN Invalid_operation powx643 power sNaN -1 -> NaN Invalid_operation -powx644 power sNaN -0 -> NaN Invalid_operation -powx645 power sNaN 0 -> NaN Invalid_operation -powx646 power sNaN 1 -> NaN Invalid_operation -powx647 power sNaN 1000 -> NaN Invalid_operation -powx648 power sNaN NaN -> NaN Invalid_operation -powx649 power sNaN sNaN -> NaN Invalid_operation -powx650 power NaN sNaN -> NaN Invalid_operation -powx651 power -Inf sNaN -> NaN Invalid_operation -powx652 power -1000 sNaN -> NaN Invalid_operation -powx653 power -1 sNaN -> NaN Invalid_operation -powx654 power -0 sNaN -> NaN Invalid_operation -powx655 power 0 sNaN -> NaN Invalid_operation -powx656 power 1 sNaN -> NaN Invalid_operation -powx657 power 1000 sNaN -> NaN Invalid_operation -powx658 power Inf sNaN -> NaN Invalid_operation -powx659 power NaN sNaN -> NaN Invalid_operation +powx644 power sNaN -0.5 -> NaN Invalid_operation +powx645 power sNaN -0 -> NaN Invalid_operation +powx646 power sNaN 0 -> NaN Invalid_operation +powx647 power sNaN 0.5 -> NaN Invalid_operation +powx648 power sNaN 1 -> NaN Invalid_operation +powx649 power sNaN 1000 -> NaN Invalid_operation +powx650 power sNaN NaN -> NaN Invalid_operation +powx651 power sNaN sNaN -> NaN Invalid_operation +powx652 power NaN sNaN -> NaN Invalid_operation +powx653 power -Inf sNaN -> NaN Invalid_operation +powx654 power -1000 sNaN -> NaN Invalid_operation +powx655 power -1 sNaN -> NaN Invalid_operation +powx656 power -0.5 sNaN -> NaN Invalid_operation +powx657 power -0 sNaN -> NaN Invalid_operation +powx658 power 0 sNaN -> NaN Invalid_operation +powx659 power 0.5 sNaN -> NaN Invalid_operation +powx660 power 1 sNaN -> NaN Invalid_operation +powx661 power 1000 sNaN -> NaN Invalid_operation +powx662 power Inf sNaN -> NaN Invalid_operation +powx663 power NaN sNaN -> NaN Invalid_operation -- NaN propagation -powx660 power NaN3 sNaN7 -> NaN7 Invalid_operation -powx661 power sNaN8 NaN6 -> NaN8 Invalid_operation -powx662 power 1 sNaN7 -> NaN7 Invalid_operation -powx663 power sNaN8 1 -> NaN8 Invalid_operation -powx664 power Inf sNaN7 -> NaN7 Invalid_operation -powx665 power sNaN8 Inf -> NaN Invalid_operation -powx666 power Inf NaN9 -> NaN9 -powx667 power NaN6 Inf -> NaN Invalid_operation -powx668 power 1 NaN5 -> NaN5 -powx669 power NaN2 1 -> NaN2 -powx670 power NaN2 Nan4 -> NaN2 -powx671 power NaN Nan4 -> NaN -powx672 power NaN345 Nan -> NaN345 -powx673 power Inf -sNaN7 -> -NaN7 Invalid_operation -powx674 power -sNaN8 Inf -> NaN Invalid_operation -powx675 power Inf -NaN9 -> -NaN9 -powx676 power -NaN6 Inf -> NaN Invalid_operation -powx677 power -NaN2 -Nan4 -> -NaN2 - --- Examples from extended specification -powx690 power Inf -2 -> 0 -powx691 power Inf -1 -> 0 -powx692 power Inf 0 -> 1 -powx693 power Inf 1 -> Infinity -powx694 power Inf 2 -> Infinity -powx695 power -Inf -2 -> 0 -powx696 power -Inf -1 -> -0 -powx697 power -Inf 0 -> 1 -powx698 power -Inf 1 -> -Infinity -powx699 power -Inf 2 -> Infinity -powx700 power 0 0 -> NaN Invalid_operation +powx670 power NaN3 sNaN7 -> NaN7 Invalid_operation +powx671 power sNaN8 NaN6 -> NaN8 Invalid_operation +powx672 power 1 sNaN7 -> NaN7 Invalid_operation +powx673 power sNaN8 1 -> NaN8 Invalid_operation +powx674 power Inf sNaN7 -> NaN7 Invalid_operation +powx675 power sNaN8 Inf -> NaN8 Invalid_operation +powx676 power Inf NaN9 -> NaN9 +powx677 power NaN6 Inf -> NaN6 +powx678 power 1 NaN5 -> NaN5 +powx679 power NaN2 1 -> NaN2 +powx680 power NaN2 Nan4 -> NaN2 +powx681 power NaN Nan4 -> NaN +powx682 power NaN345 Nan -> NaN345 +powx683 power Inf -sNaN7 -> -NaN7 Invalid_operation +powx684 power -sNaN8 Inf -> -NaN8 Invalid_operation +powx685 power Inf -NaN9 -> -NaN9 +powx686 power -NaN6 Inf -> -NaN6 +powx687 power -NaN2 -Nan4 -> -NaN2 -- long operand and RHS range checks maxexponent: 999 @@ -616,15 +481,6 @@ powx704 power 1234567891 1 -> 1.23456789E+9 Inexact Rounded powx705 power 12345678901 1 -> 1.23456789E+10 Inexact Rounded powx706 power 1234567896 1 -> 1.23456790E+9 Inexact Rounded -powx707 power 1 12345678000 -> NaN Invalid_operation -powx708 power 1 1234567800 -> NaN Invalid_operation -powx709 power 1 1234567890 -> NaN Invalid_operation -powx710 power 1 11234567891 -> NaN Invalid_operation -powx711 power 1 12345678901 -> NaN Invalid_operation -powx712 power 1 1234567896 -> NaN Invalid_operation -powx713 power 1 -1234567896 -> NaN Invalid_operation -powx714 power 1 1000000000 -> NaN Invalid_operation -powx715 power 1 -1000000000 -> NaN Invalid_operation precision: 15 -- still checking @@ -634,12 +490,182 @@ powx744 power 1234567891 1 -> 1234567891 powx745 power 12345678901 1 -> 12345678901 powx746 power 1234567896 1 -> 1234567896 -powx747 power 1 12345678000 -> NaN Invalid_operation -powx748 power 1 -1234567896 -> NaN Invalid_operation -powx749 power 1 1000000000 -> NaN Invalid_operation -powx740 power 1 -1000000000 -> NaN Invalid_operation --- check for double-rounded subnormals +maxexponent: 999999 +minexponent: -999999 +precision: 9 + +-- near out-of-range edge cases +powx163 power '10' '999999' -> '1.00000000E+999999' Rounded +powx164 power '10' '999998' -> '1.00000000E+999998' Rounded +powx165 power '10' '999997' -> '1.00000000E+999997' Rounded +powx166 power '10' '333333' -> '1.00000000E+333333' Rounded +powx183 power '7' '1000000' -> 1.09651419E+845098 Inexact Rounded +powx184 power '7' '1000001' -> 7.67559934E+845098 Inexact Rounded +powx186 power '7' '-1000001' -> 1.30282986E-845099 Inexact Rounded +powx187 power '7' '-1000000' -> 9.11980901E-845099 Inexact Rounded +powx118 power '10' '-333333' -> 1E-333333 +powx119 power '10' '-999998' -> 1E-999998 +powx120 power '10' '-999999' -> 1E-999999 +powx181 power '7' '999998' -> 2.23778406E+845096 Inexact Rounded +powx182 power '7' '999999' -> 1.56644884E+845097 Inexact Rounded +powx189 power '7' '-999999' -> 6.38386631E-845098 Inexact Rounded +powx190 power '7' '-999998' -> 4.46870641E-845097 Inexact Rounded + +-- overflow and underflow tests +precision: 9 + +powx277 power 9 999999 -> 3.59084629E+954241 Inexact Rounded +powx278 power 9.99999999 999999 -> 9.99000501E+999998 Inexact Rounded +powx279 power 10 999999 -> 1.00000000E+999999 Rounded +powx280 power 10.0000001 999999 -> 1.01005016E+999999 Inexact Rounded +powx281 power 10.000001 999999 -> 1.10517080E+999999 Inexact Rounded +powx282 power 10.00001 999999 -> 2.71827775E+999999 Inexact Rounded +powx283 power 10.0001 999999 -> Infinity Overflow Inexact Rounded +powx285 power 11 999999 -> Infinity Overflow Inexact Rounded +powx286 power 12 999999 -> Infinity Overflow Inexact Rounded +powx287 power 999 999999 -> Infinity Overflow Inexact Rounded +powx288 power 999999999 999999 -> Infinity Overflow Inexact Rounded +powx289 power 9.9E999999999 999999 -> Infinity Overflow Inexact Rounded + +powx290 power 0.5 999999 -> 2.02006812E-301030 Inexact Rounded +powx291 power 0.1 999999 -> 1E-999999 -- unrounded +powx292 power 0.09 999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx293 power 0.05 999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx294 power 0.01 999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx295 power 0.0001 999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx297 power 0.0000001 999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx298 power 0.0000000001 999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx299 power 1E-999999999 999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped + +powx310 power -9 999999 -> -3.59084629E+954241 Inexact Rounded +powx311 power -10 999999 -> -1.00000000E+999999 Rounded +powx312 power -10.0001 999999 -> -Infinity Overflow Inexact Rounded +powx313 power -10.1 999999 -> -Infinity Overflow Inexact Rounded +powx314 power -11 999999 -> -Infinity Overflow Inexact Rounded +powx315 power -12 999999 -> -Infinity Overflow Inexact Rounded +powx316 power -999 999999 -> -Infinity Overflow Inexact Rounded +powx317 power -999999 999999 -> -Infinity Overflow Inexact Rounded +powx318 power -999999999 999999 -> -Infinity Overflow Inexact Rounded +powx319 power -9.9E999999999 999999 -> -Infinity Overflow Inexact Rounded + +powx320 power -0.5 999999 -> -2.02006812E-301030 Inexact Rounded +powx321 power -0.1 999999 -> -1E-999999 +powx322 power -0.09 999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx323 power -0.05 999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx324 power -0.01 999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx325 power -0.0001 999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx327 power -0.0000001 999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx328 power -0.0000000001 999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx329 power -1E-999999999 999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped + +-- note no trim of next result +powx330 power -9 999998 -> 3.98982921E+954240 Inexact Rounded +powx331 power -10 999998 -> 1.00000000E+999998 Rounded +powx332 power -10.0001 999998 -> Infinity Overflow Inexact Rounded +powx333 power -10.1 999998 -> Infinity Overflow Inexact Rounded +powx334 power -11 999998 -> Infinity Overflow Inexact Rounded +powx335 power -12 999998 -> Infinity Overflow Inexact Rounded +powx336 power -999 999998 -> Infinity Overflow Inexact Rounded +powx337 power -999999 999998 -> Infinity Overflow Inexact Rounded +powx338 power -999999999 999998 -> Infinity Overflow Inexact Rounded +powx339 power -9.9E999999999 999998 -> Infinity Overflow Inexact Rounded + +powx340 power -0.5 999998 -> 4.04013624E-301030 Inexact Rounded +powx341 power -0.1 999998 -> 1E-999998 -- NB exact unrounded +powx342 power -0.09 999998 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx343 power -0.05 999998 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx344 power -0.01 999998 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx345 power -0.0001 999998 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx347 power -0.0000001 999998 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx348 power -0.0000000001 999998 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx349 power -1E-999999999 999998 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped + +-- some subnormals +precision: 9 +-- [precision is 9, so smallest exponent is -1000000007 +powx350 power 1e-1 500000 -> 1E-500000 +powx351 power 1e-2 999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped +powx352 power 1e-2 500000 -> 1E-1000000 Subnormal +powx353 power 1e-2 500001 -> 1E-1000002 Subnormal +powx354 power 1e-2 500002 -> 1E-1000004 Subnormal +powx355 power 1e-2 500003 -> 1E-1000006 Subnormal +powx356 power 1e-2 500004 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped + +powx360 power 0.010001 500000 -> 5.17176082E-999979 Inexact Rounded +powx361 power 0.010000001 500000 -> 1.0512711E-1000000 Underflow Subnormal Inexact Rounded +powx362 power 0.010000001 500001 -> 1.05127E-1000002 Underflow Subnormal Inexact Rounded +powx363 power 0.0100000009 500000 -> 1.0460279E-1000000 Underflow Subnormal Inexact Rounded +powx364 power 0.0100000001 500000 -> 1.0050125E-1000000 Underflow Subnormal Inexact Rounded +powx365 power 0.01 500000 -> 1E-1000000 Subnormal +powx366 power 0.0099999999 500000 -> 9.950125E-1000001 Underflow Subnormal Inexact Rounded +powx367 power 0.0099999998 500000 -> 9.900498E-1000001 Underflow Subnormal Inexact Rounded +powx368 power 0.0099999997 500000 -> 9.851119E-1000001 Underflow Subnormal Inexact Rounded +powx369 power 0.0099999996 500000 -> 9.801987E-1000001 Underflow Subnormal Inexact Rounded +powx370 power 0.009 500000 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped + +-- 1/subnormal -> overflow +powx371 power 1e-1 -500000 -> 1E+500000 +powx372 power 1e-2 -999999 -> Infinity Overflow Inexact Rounded +powx373 power 1e-2 -500000 -> Infinity Overflow Inexact Rounded +powx374 power 1e-2 -500001 -> Infinity Overflow Inexact Rounded +powx375 power 1e-2 -500002 -> Infinity Overflow Inexact Rounded +powx376 power 1e-2 -500003 -> Infinity Overflow Inexact Rounded +powx377 power 1e-2 -500004 -> Infinity Overflow Inexact Rounded + +powx381 power 0.010001 -500000 -> 1.93357743E+999978 Inexact Rounded +powx382 power 0.010000001 -500000 -> 9.51229427E+999999 Inexact Rounded +powx383 power 0.010000001 -500001 -> Infinity Overflow Inexact Rounded +powx384 power 0.0100000009 -500000 -> 9.55997484E+999999 Inexact Rounded +powx385 power 0.0100000001 -500000 -> 9.95012479E+999999 Inexact Rounded +powx386 power 0.01 -500000 -> Infinity Overflow Inexact Rounded +powx387 power 0.009999 -500000 -> Infinity Overflow Inexact Rounded + +-- negative power giving subnormal +powx388 power 100.000001 -500000 -> 9.950125E-1000001 Underflow Subnormal Inexact Rounded + + +-- test some 'false integer' boundaries +precision: 16 +rounding: half_even +maxExponent: 384 +minExponent: -383 +powx501 power 100 1E+1 -> 1.000000000000000E+20 Rounded +powx502 power 100 1E+2 -> 1.000000000000000E+200 Rounded +powx503 power 100 1E+3 -> Infinity Overflow Inexact Rounded +powx504 power 100 1E+4 -> Infinity Overflow Inexact Rounded +powx505 power 100 1E+5 -> Infinity Overflow Inexact Rounded +powx506 power 100 1E+6 -> Infinity Overflow Inexact Rounded +powx507 power 100 1E+7 -> Infinity Overflow Inexact Rounded +powx508 power 100 1E+8 -> Infinity Overflow Inexact Rounded +powx509 power 100 1E+9 -> Infinity Overflow Inexact Rounded +powx510 power 100 1E+10 -> Infinity Overflow Inexact Rounded +powx511 power 100 1E+11 -> Infinity Overflow Inexact Rounded +powx512 power 100 1E+12 -> Infinity Overflow Inexact Rounded +powx513 power 100 1E+13 -> Infinity Overflow Inexact Rounded +powx514 power 100 1E+14 -> Infinity Overflow Inexact Rounded +powx515 power 100 1E+15 -> Infinity Overflow Inexact Rounded +powx516 power 100 1E+16 -> Infinity Overflow Inexact Rounded +powx517 power 100 1E+17 -> Infinity Overflow Inexact Rounded +powx518 power 100 1E+18 -> Infinity Overflow Inexact Rounded +powx519 power 100 1E+19 -> Infinity Overflow Inexact Rounded +powx520 power 100 1E+20 -> Infinity Overflow Inexact Rounded +powx521 power 100 1E+21 -> Infinity Overflow Inexact Rounded +powx522 power 100 1E+22 -> Infinity Overflow Inexact Rounded +powx523 power 100 1E+23 -> Infinity Overflow Inexact Rounded +powx524 power 100 1E+24 -> Infinity Overflow Inexact Rounded +powx525 power 100 1E+25 -> Infinity Overflow Inexact Rounded +powx526 power 100 1E+26 -> Infinity Overflow Inexact Rounded +powx527 power 100 1E+27 -> Infinity Overflow Inexact Rounded +powx528 power 100 1E+28 -> Infinity Overflow Inexact Rounded +powx529 power 100 1E+29 -> Infinity Overflow Inexact Rounded +powx530 power 100 1E+30 -> Infinity Overflow Inexact Rounded +powx531 power 100 1E+40 -> Infinity Overflow Inexact Rounded +powx532 power 100 1E+50 -> Infinity Overflow Inexact Rounded +powx533 power 100 1E+100 -> Infinity Overflow Inexact Rounded +powx534 power 100 1E+383 -> Infinity Overflow Inexact Rounded + +-- a check for double-rounded subnormals precision: 5 maxexponent: 79 minexponent: -79 @@ -649,3 +675,950 @@ powx900 power 1 # -> NaN Invalid_operation powx901 power # 1 -> NaN Invalid_operation +---------------------------------------------------------------------- +-- Below here are tests with a precision or context outside of the -- +-- decNumber 'mathematical functions' restricted range. These -- +-- remain supported in decNumber to minimize breakage, but may be -- +-- outside the range of other implementations. -- +---------------------------------------------------------------------- +maxexponent: 999999999 +minexponent: -999999999 +precision: 9 +powx1063 power '10' '999999999' -> '1.00000000E+999999999' Rounded +powx1064 power '10' '999999998' -> '1.00000000E+999999998' Rounded +powx1065 power '10' '999999997' -> '1.00000000E+999999997' Rounded +powx1066 power '10' '333333333' -> '1.00000000E+333333333' Rounded +-- next two are integer-out-of range +powx1183 power '7' '1000000000' -> NaN Invalid_context +powx1184 power '7' '1000000001' -> NaN Invalid_context +powx1186 power '7' '-1000000001' -> 1.38243630E-845098041 Inexact Rounded +powx1187 power '7' '-1000000000' -> 9.67705411E-845098041 Inexact Rounded + +-- out-of-range edge cases +powx1118 power '10' '-333333333' -> 1E-333333333 +powx1119 power '10' '-999999998' -> 1E-999999998 +powx1120 power '10' '-999999999' -> 1E-999999999 +powx1181 power '7' '999999998' -> 2.10892313E+845098038 Inexact Rounded +powx1182 power '7' '999999999' -> 1.47624619E+845098039 Inexact Rounded +powx1189 power '7' '-999999999' -> 6.77393787E-845098040 Inexact Rounded +powx1190 power '7' '-999999998' -> 4.74175651E-845098039 Inexact Rounded + +-- A (rare) case where the last digit is not within 0.5 ULP with classic precision +precision: 9 +powx1215 power "-21971575.0E+31454441" "-7" -> "-4.04549502E-220181139" Inexact Rounded +precision: 20 +powx1216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded + +-- overflow and underflow tests +precision: 9 +powx1280 power 9 999999999 -> 3.05550054E+954242508 Inexact Rounded +powx1281 power 10 999999999 -> 1.00000000E+999999999 Rounded +powx1282 power 10.0001 999999999 -> Infinity Overflow Inexact Rounded +powx1283 power 10.1 999999999 -> Infinity Overflow Inexact Rounded +powx1284 power 11 999999999 -> Infinity Overflow Inexact Rounded +powx1285 power 12 999999999 -> Infinity Overflow Inexact Rounded +powx1286 power 999 999999999 -> Infinity Overflow Inexact Rounded +powx1287 power 999999 999999999 -> Infinity Overflow Inexact Rounded +powx1288 power 999999999 999999999 -> Infinity Overflow Inexact Rounded +powx1289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded + +powx1290 power 0.5 999999999 -> 4.33559594E-301029996 Inexact Rounded +powx1291 power 0.1 999999999 -> 1E-999999999 -- unrounded +powx1292 power 0.09 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1293 power 0.05 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1294 power 0.01 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1295 power 0.0001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1297 power 0.0000001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1298 power 0.0000000001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1299 power 1E-999999999 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped + +powx1310 power -9 999999999 -> -3.05550054E+954242508 Inexact Rounded +powx1311 power -10 999999999 -> -1.00000000E+999999999 Rounded +powx1312 power -10.0001 999999999 -> -Infinity Overflow Inexact Rounded +powx1313 power -10.1 999999999 -> -Infinity Overflow Inexact Rounded +powx1314 power -11 999999999 -> -Infinity Overflow Inexact Rounded +powx1315 power -12 999999999 -> -Infinity Overflow Inexact Rounded +powx1316 power -999 999999999 -> -Infinity Overflow Inexact Rounded +powx1317 power -999999 999999999 -> -Infinity Overflow Inexact Rounded +powx1318 power -999999999 999999999 -> -Infinity Overflow Inexact Rounded +powx1319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded + +powx1320 power -0.5 999999999 -> -4.33559594E-301029996 Inexact Rounded +powx1321 power -0.1 999999999 -> -1E-999999999 +powx1322 power -0.09 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1323 power -0.05 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1324 power -0.01 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1325 power -0.0001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1327 power -0.0000001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1328 power -0.0000000001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1329 power -1E-999999999 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped + +-- note no trim of next result +powx1330 power -9 999999998 -> 3.39500060E+954242507 Inexact Rounded +powx1331 power -10 999999998 -> 1.00000000E+999999998 Rounded +powx1332 power -10.0001 999999998 -> Infinity Overflow Inexact Rounded +powx1333 power -10.1 999999998 -> Infinity Overflow Inexact Rounded +powx1334 power -11 999999998 -> Infinity Overflow Inexact Rounded +powx1335 power -12 999999998 -> Infinity Overflow Inexact Rounded +powx1336 power -999 999999998 -> Infinity Overflow Inexact Rounded +powx1337 power -999999 999999998 -> Infinity Overflow Inexact Rounded +powx1338 power -999999999 999999998 -> Infinity Overflow Inexact Rounded +powx1339 power -9.9E999999999 999999998 -> Infinity Overflow Inexact Rounded + +powx1340 power -0.5 999999998 -> 8.67119187E-301029996 Inexact Rounded +powx1341 power -0.1 999999998 -> 1E-999999998 -- NB exact unrounded +powx1342 power -0.09 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1343 power -0.05 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1344 power -0.01 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1345 power -0.0001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1347 power -0.0000001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1348 power -0.0000000001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1349 power -1E-999999999 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped + +-- some subnormals +precision: 9 +-- [precision is 9, so smallest exponent is -1000000007 +powx1350 power 1e-1 500000000 -> 1E-500000000 +powx1351 power 1e-2 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1352 power 1e-2 500000000 -> 1E-1000000000 Subnormal +powx1353 power 1e-2 500000001 -> 1E-1000000002 Subnormal +powx1354 power 1e-2 500000002 -> 1E-1000000004 Subnormal +powx1355 power 1e-2 500000003 -> 1E-1000000006 Subnormal +powx1356 power 1e-2 500000004 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped + +powx1360 power 0.010001 500000000 -> 4.34941988E-999978287 Inexact Rounded +powx1361 power 0.010000001 500000000 -> 5.18469257E-999999979 Inexact Rounded +powx1362 power 0.010000001 500000001 -> 5.18469309E-999999981 Inexact Rounded +powx1363 power 0.0100000009 500000000 -> 3.49342003E-999999981 Inexact Rounded +powx1364 power 0.0100000001 500000000 -> 1.48413155E-999999998 Inexact Rounded +powx1365 power 0.01 500000000 -> 1E-1000000000 Subnormal +powx1366 power 0.0099999999 500000000 -> 6.7379E-1000000003 Underflow Subnormal Inexact Rounded +powx1367 power 0.0099999998 500000000 -> 4.54E-1000000005 Underflow Subnormal Inexact Rounded +powx1368 power 0.0099999997 500000000 -> 3E-1000000007 Underflow Subnormal Inexact Rounded +powx1369 power 0.0099999996 500000000 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped +powx1370 power 0.009 500000000 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped + +-- 1/subnormal -> overflow +powx1371 power 1e-1 -500000000 -> 1E+500000000 +powx1372 power 1e-2 -999999999 -> Infinity Overflow Inexact Rounded +powx1373 power 1e-2 -500000000 -> Infinity Overflow Inexact Rounded +powx1374 power 1e-2 -500000001 -> Infinity Overflow Inexact Rounded +powx1375 power 1e-2 -500000002 -> Infinity Overflow Inexact Rounded +powx1376 power 1e-2 -500000003 -> Infinity Overflow Inexact Rounded +powx1377 power 1e-2 -500000004 -> Infinity Overflow Inexact Rounded + +powx1381 power 0.010001 -500000000 -> 2.29915719E+999978286 Inexact Rounded +powx1382 power 0.010000001 -500000000 -> 1.92875467E+999999978 Inexact Rounded +powx1383 power 0.010000001 -500000001 -> 1.92875448E+999999980 Inexact Rounded +powx1384 power 0.0100000009 -500000000 -> 2.86252438E+999999980 Inexact Rounded +powx1385 power 0.0100000001 -500000000 -> 6.73794717E+999999997 Inexact Rounded +powx1386 power 0.01 -500000000 -> Infinity Overflow Inexact Rounded +powx1387 power 0.009999 -500000000 -> Infinity Overflow Inexact Rounded + +-- negative power giving subnormal +powx1388 power 100.000001 -500000000 -> 6.7379E-1000000003 Underflow Subnormal Inexact Rounded + +---------------------------------------------------------------------- +-- Below here are the tests with a non-integer rhs, including the -- +-- tests that previously caused Invalid operation. An integer-only -- +-- (on rhs) implementation should handle all the tests above as -- +-- shown, and would flag most of the following tests as Invalid. -- +---------------------------------------------------------------------- +precision: 16 +rounding: half_even +maxExponent: 384 +minExponent: -383 + +powx2000 power 7 '10000000000' -> Infinity Overflow Inexact Rounded +powx2001 power 2 '2.000001' -> 4.000002772589683 Inexact Rounded +powx2002 power 2 '2.00000000' -> 4 +powx2003 power 2 '2.000000001' -> 4.000000002772589 Inexact Rounded +powx2004 power 2 '2.0000000001' -> 4.000000000277259 Inexact Rounded +powx2005 power 2 '2.00000000001' -> 4.000000000027726 Inexact Rounded +powx2006 power 2 '2.000000000001' -> 4.000000000002773 Inexact Rounded +powx2007 power 2 '2.0000000000001' -> 4.000000000000277 Inexact Rounded +powx2008 power 2 '2.00000000000001' -> 4.000000000000028 Inexact Rounded +powx2009 power 2 '2.000000000000001' -> 4.000000000000003 Inexact Rounded +powx2010 power 2 '2.0000000000000001' -> 4.000000000000000 Inexact Rounded +-- 1 234567890123456 + +powx2011 power 1 1234 -> 1 +precision: 4 +powx2012 power 1 1234 -> 1 +precision: 3 +powx2013 power 1 1234 -> 1 +powx2014 power 1 12.34e+2 -> 1 +powx2015 power 1 12.3 -> 1.00 Inexact Rounded +powx2016 power 1 12.0 -> 1 +powx2017 power 1 1.01 -> 1.00 Inexact Rounded +powx2018 power 2 1.00 -> 2 +powx2019 power 2 2.00 -> 4 +precision: 9 +powx2030 power 1 1.0001 -> 1.00000000 Inexact Rounded +powx2031 power 1 1.0000001 -> 1.00000000 Inexact Rounded +powx2032 power 1 1.0000000001 -> 1.00000000 Inexact Rounded +powx2033 power 1 1.0000000000001 -> 1.00000000 Inexact Rounded +precision: 5 +powx2034 power 1 1.0001 -> 1.0000 Inexact Rounded +powx2035 power 1 1.0000001 -> 1.0000 Inexact Rounded +powx2036 power 1 1.0000000001 -> 1.0000 Inexact Rounded +powx2037 power 1 1.0000000000001 -> 1.0000 Inexact Rounded +powx2038 power 1 1.0000000000001 -> 1.0000 Inexact Rounded + +rounding: ceiling +precision: 3 +powx2039 power 1 1.01 -> 1.00 Inexact Rounded +powx2040 power 1 12.3 -> 1.00 Inexact Rounded +rounding: half_even + +-- 1 ** any integer, including big ones, should be exact +powx2041 power 1 1000000000 -> 1 +powx2042 power 1 9999999999 -> 1 +powx2043 power 1 12345678000 -> 1 +powx2044 power 1 1234567800 -> 1 +powx2045 power 1 1234567890 -> 1 +powx2046 power 1 11234567891 -> 1 +powx2047 power 1 12345678901 -> 1 +powx2048 power 1 1234567896 -> 1 +powx2049 power 1 -1234567896 -> 1 +powx2051 power 1 1000000000 -> 1 +powx2052 power 1 -1000000000 -> 1 +powx2053 power 1 12345678000 -> 1 +powx2054 power 1 -1234567896 -> 1 +powx2055 power 1 1000000000 -> 1 +powx2056 power 1 4300000000 -> 1 +powx2057 power 1 -1000000000 -> 1 +-- negatives ... but not out of range for decNumber +powx2061 power -1 100000 -> 1 +powx2062 power -1 999999 -> -1 +powx2063 power -1 1278000 -> 1 +powx2064 power -1 127803 -> -1 +powx2065 power -1 127890 -> 1 +powx2066 power -1 1167891 -> -1 +powx2067 power -1 1278901 -> -1 +powx2068 power -1 127896 -> 1 +powx2069 power -1 -167897 -> -1 +powx2071 power -1 100000 -> 1 +powx2072 power -1 -100001 -> -1 +powx2073 power -1 1278000 -> 1 +powx2074 power -1 -167896 -> 1 +powx2075 power -1 100000 -> 1 +powx2076 power -1 -100009 -> -1 + +-- The above were derived from the earlier version of power.decTest; +-- now start new tests for power(x,y) for non-integer y +precision: 9 + +-- tests from specification +powx2081 power 2 3 -> '8' +powx2082 power -2 3 -> '-8' +powx2083 power 2 -3 -> '0.125' +powx2084 power 1.7 '8' -> '69.7575744' Inexact Rounded +powx2085 power 10 0.301029996 -> 2.00000000 Inexact Rounded +powx2086 power Infinity '-1' -> '0' +powx2087 power Infinity '0' -> '1' +powx2088 power Infinity '1' -> 'Infinity' +powx2089 power -Infinity '-1' -> '-0' +powx2090 power -Infinity '0' -> '1' +powx2091 power -Infinity '1' -> '-Infinity' +powx2092 power -Infinity '2' -> 'Infinity' +powx2093 power 0 0 -> 'NaN' Invalid_operation + +precision: 16 +rounding: half_even +maxExponent: 384 +minExponent: -383 + +-- basics +powx2100 power 1E-7 1E-7 -> 0.9999983881917339 Inexact Rounded +powx2101 power 0.003 1E-7 -> 0.9999994190858697 Inexact Rounded +powx2102 power 0.7 1E-7 -> 0.9999999643325062 Inexact Rounded +powx2103 power 1.2 1E-7 -> 1.000000018232156 Inexact Rounded +powx2104 power 71 1E-7 -> 1.000000426268079 Inexact Rounded +powx2105 power 9E+9 1E-7 -> 1.000002292051668 Inexact Rounded + +powx2110 power 1E-7 0.003 -> 0.9527961640236519 Inexact Rounded +powx2111 power 0.003 0.003 -> 0.9827235503366797 Inexact Rounded +powx2112 power 0.7 0.003 -> 0.9989305474406207 Inexact Rounded +powx2113 power 1.2 0.003 -> 1.000547114282834 Inexact Rounded +powx2114 power 71 0.003 -> 1.012870156273545 Inexact Rounded +powx2115 power 9E+9 0.003 -> 1.071180671278787 Inexact Rounded + +powx2120 power 1E-7 0.7 -> 0.00001258925411794167 Inexact Rounded +powx2121 power 0.003 0.7 -> 0.01713897630281030 Inexact Rounded +powx2122 power 0.7 0.7 -> 0.7790559126704491 Inexact Rounded +powx2123 power 1.2 0.7 -> 1.136126977198889 Inexact Rounded +powx2124 power 71 0.7 -> 19.76427300093870 Inexact Rounded +powx2125 power 9E+9 0.7 -> 9289016.976853710 Inexact Rounded + +powx2130 power 1E-7 1.2 -> 3.981071705534973E-9 Inexact Rounded +powx2131 power 0.003 1.2 -> 0.0009387403933595694 Inexact Rounded +powx2132 power 0.7 1.2 -> 0.6518049405663864 Inexact Rounded +powx2133 power 1.2 1.2 -> 1.244564747203978 Inexact Rounded +powx2134 power 71 1.2 -> 166.5367244638552 Inexact Rounded +powx2135 power 9E+9 1.2 -> 881233526124.8791 Inexact Rounded + +powx2140 power 1E-7 71 -> 0E-398 Inexact Rounded Underflow Subnormal Clamped +powx2141 power 0.003 71 -> 7.509466514979725E-180 Inexact Rounded +powx2142 power 0.7 71 -> 1.004525211269079E-11 Inexact Rounded +powx2143 power 1.2 71 -> 418666.7483186515 Inexact Rounded +powx2144 power 71 71 -> 2.750063734834616E+131 Inexact Rounded +powx2145 power 9E+9 71 -> Infinity Inexact Rounded Overflow + +powx2150 power 1E-7 9E+9 -> 0E-398 Inexact Rounded Underflow Subnormal Clamped +powx2151 power 0.003 9E+9 -> 0E-398 Inexact Rounded Underflow Subnormal Clamped +powx2152 power 0.7 9E+9 -> 0E-398 Inexact Rounded Underflow Subnormal Clamped +powx2153 power 1.2 9E+9 -> Infinity Inexact Rounded Overflow +powx2154 power 71 9E+9 -> Infinity Inexact Rounded Overflow +powx2155 power 9E+9 9E+9 -> Infinity Inexact Rounded Overflow + +-- number line milestones with lhs<1 and lhs>1 + +-- Overflow boundary (Nmax) +powx2202 power 71 207.966651583983200 -> Infinity Inexact Rounded Overflow +powx2201 power 71 207.966651583983199 -> 9.999999999999994E+384 Inexact Rounded +powx2204 power 0.003 -152.603449817093577 -> Infinity Inexact Rounded Overflow +powx2203 power 0.003 -152.603449817093576 -> 9.999999999999994E+384 Inexact Rounded + +-- Nmin boundary +powx2211 power 71 -206.886305341988480 -> 1.000000000000005E-383 Inexact Rounded +powx2212 power 71 -206.886305341988481 -> 1.000000000000001E-383 Inexact Rounded +powx2213 power 71 -206.886305341988482 -> 9.99999999999997E-384 Inexact Rounded Underflow Subnormal +powx2214 power 71 -206.886305341988483 -> 9.99999999999992E-384 Inexact Rounded Underflow Subnormal +-- 9.999999999999924565357019820 + +powx2215 power 0.003 151.810704623238543 -> 1.000000000000009E-383 Inexact Rounded +powx2216 power 0.003 151.810704623238544 -> 1.000000000000003E-383 Inexact Rounded +powx2217 power 0.003 151.810704623238545 -> 9.99999999999997E-384 Inexact Rounded Underflow Subnormal +powx2218 power 0.003 151.810704623238546 -> 9.99999999999991E-384 Inexact Rounded Underflow Subnormal + +-- Ntiny boundary, these edge cases determined using half_up rounding +rounding: half_up +powx2221 power 71 -215.151510469220498 -> 1E-398 Inexact Rounded Underflow Subnormal +powx2222 power 71 -215.151510469220499 -> 1E-398 Inexact Rounded Underflow Subnormal +powx2223 power 71 -215.151510469220500 -> 0E-398 Inexact Rounded Underflow Subnormal Clamped +powx2224 power 71 -215.151510469220501 -> 0E-398 Inexact Rounded Underflow Subnormal Clamped + +powx2225 power 0.003 157.875613618285691 -> 1E-398 Inexact Rounded Underflow Subnormal +powx2226 power 0.003 157.875613618285692 -> 1E-398 Inexact Rounded Underflow Subnormal +powx2227 power 0.003 157.875613618285693 -> 0E-398 Inexact Rounded Underflow Subnormal Clamped +powx2228 power 0.003 220 -> 0E-398 Inexact Rounded Underflow Subnormal Clamped +rounding: half_even + +-- power(10, y) are important ... + +-- Integer powers are exact, unless over/underflow +powx2301 power 10 385 -> Infinity Overflow Inexact Rounded +powx2302 power 10 384 -> 1.000000000000000E+384 Rounded +powx2303 power 10 17 -> 1.000000000000000E+17 Rounded +powx2304 power 10 16 -> 1.000000000000000E+16 Rounded +powx2305 power 10 15 -> 1000000000000000 +powx2306 power 10 10 -> 10000000000 +powx2307 power 10 5 -> 100000 +powx2308 power 10 1 -> 10 +powx2309 power 10 0 -> 1 +powx2310 power 10 -1 -> 0.1 +powx2311 power 10 -5 -> 0.00001 +powx2312 power 10 -6 -> 0.000001 +powx2313 power 10 -7 -> 1E-7 +powx2314 power 10 -8 -> 1E-8 +powx2315 power 10 -9 -> 1E-9 +powx2316 power 10 -10 -> 1E-10 +powx2317 power 10 -383 -> 1E-383 +powx2318 power 10 -384 -> 1E-384 Subnormal +powx2319 power 10 -385 -> 1E-385 Subnormal +powx2320 power 10 -397 -> 1E-397 Subnormal +powx2321 power 10 -398 -> 1E-398 Subnormal +powx2322 power 10 -399 -> 0E-398 Subnormal Underflow Inexact Rounded Clamped +powx2323 power 10 -400 -> 0E-398 Subnormal Underflow Inexact Rounded Clamped + +-- Independent sanity check: 1961 Godfrey & Siddons four-figure logs +powx2351 power 10 0.0000 -> 1 +powx2352 power 10 0.3010 -> 1.999861869632744 Inexact Rounded +powx2353 power 10 0.4771 -> 2.999853181190793 Inexact Rounded +powx2354 power 10 0.6021 -> 4.000368510461250 Inexact Rounded +powx2355 power 10 0.6990 -> 5.000345349769785 Inexact Rounded +powx2356 power 10 0.7782 -> 6.000673538641164 Inexact Rounded +powx2357 power 10 0.8451 -> 7.000031591308969 Inexact Rounded +powx2358 power 10 0.9031 -> 8.000184448550990 Inexact Rounded +powx2359 power 10 0.9542 -> 8.999119108700520 Inexact Rounded +powx2360 power 10 0.9956 -> 9.899197750805841 Inexact Rounded +powx2361 power 10 0.9996 -> 9.990793899844618 Inexact Rounded +precision: 4 +powx2371 power 10 0.0000 -> 1 +powx2372 power 10 0.3010 -> 2.000 Inexact Rounded +powx2373 power 10 0.4771 -> 3.000 Inexact Rounded +powx2374 power 10 0.6021 -> 4.000 Inexact Rounded +powx2375 power 10 0.6990 -> 5.000 Inexact Rounded +powx2376 power 10 0.7782 -> 6.001 Inexact Rounded +powx2377 power 10 0.8451 -> 7.000 Inexact Rounded +powx2378 power 10 0.9031 -> 8.000 Inexact Rounded +powx2379 power 10 0.9542 -> 8.999 Inexact Rounded +powx2380 power 10 0.9956 -> 9.899 Inexact Rounded +powx2381 power 10 0.9996 -> 9.991 Inexact Rounded + +-- 10**x ~=2 (inverse of the test in log10.decTest) +precision: 50 +powx2401 power 10 0.30102999566398119521373889472449302676818988146211 -> 2.0000000000000000000000000000000000000000000000000 Inexact Rounded +precision: 49 +powx2402 power 10 0.3010299956639811952137388947244930267681898814621 -> 2.000000000000000000000000000000000000000000000000 Inexact Rounded +precision: 48 +powx2403 power 10 0.301029995663981195213738894724493026768189881462 -> 2.00000000000000000000000000000000000000000000000 Inexact Rounded +precision: 47 +powx2404 power 10 0.30102999566398119521373889472449302676818988146 -> 2.0000000000000000000000000000000000000000000000 Inexact Rounded +precision: 46 +powx2405 power 10 0.3010299956639811952137388947244930267681898815 -> 2.000000000000000000000000000000000000000000000 Inexact Rounded +precision: 45 +powx2406 power 10 0.301029995663981195213738894724493026768189881 -> 2.00000000000000000000000000000000000000000000 Inexact Rounded +precision: 44 +powx2407 power 10 0.30102999566398119521373889472449302676818988 -> 2.0000000000000000000000000000000000000000000 Inexact Rounded +precision: 43 +powx2408 power 10 0.3010299956639811952137388947244930267681899 -> 2.000000000000000000000000000000000000000000 Inexact Rounded +precision: 42 +powx2409 power 10 0.301029995663981195213738894724493026768190 -> 2.00000000000000000000000000000000000000000 Inexact Rounded +precision: 41 +powx2410 power 10 0.30102999566398119521373889472449302676819 -> 2.0000000000000000000000000000000000000000 Inexact Rounded +precision: 40 +powx2411 power 10 0.3010299956639811952137388947244930267682 -> 2.000000000000000000000000000000000000000 Inexact Rounded +precision: 39 +powx2412 power 10 0.301029995663981195213738894724493026768 -> 2.00000000000000000000000000000000000000 Inexact Rounded +precision: 38 +powx2413 power 10 0.30102999566398119521373889472449302677 -> 2.0000000000000000000000000000000000000 Inexact Rounded +precision: 37 +powx2414 power 10 0.3010299956639811952137388947244930268 -> 2.000000000000000000000000000000000000 Inexact Rounded +precision: 36 +powx2415 power 10 0.301029995663981195213738894724493027 -> 2.00000000000000000000000000000000000 Inexact Rounded +precision: 35 +powx2416 power 10 0.30102999566398119521373889472449303 -> 2.0000000000000000000000000000000000 Inexact Rounded +precision: 34 +powx2417 power 10 0.3010299956639811952137388947244930 -> 2.000000000000000000000000000000000 Inexact Rounded +precision: 33 +powx2418 power 10 0.301029995663981195213738894724493 -> 2.00000000000000000000000000000000 Inexact Rounded +precision: 32 +powx2419 power 10 0.30102999566398119521373889472449 -> 2.0000000000000000000000000000000 Inexact Rounded +precision: 31 +powx2420 power 10 0.3010299956639811952137388947245 -> 2.000000000000000000000000000000 Inexact Rounded +precision: 30 +powx2421 power 10 0.301029995663981195213738894725 -> 2.00000000000000000000000000000 Inexact Rounded +precision: 29 +powx2422 power 10 0.30102999566398119521373889472 -> 2.0000000000000000000000000000 Inexact Rounded +precision: 28 +powx2423 power 10 0.3010299956639811952137388947 -> 2.000000000000000000000000000 Inexact Rounded +precision: 27 +powx2424 power 10 0.301029995663981195213738895 -> 2.00000000000000000000000000 Inexact Rounded +precision: 26 +powx2425 power 10 0.30102999566398119521373889 -> 2.0000000000000000000000000 Inexact Rounded +precision: 25 +powx2426 power 10 0.3010299956639811952137389 -> 2.000000000000000000000000 Inexact Rounded +precision: 24 +powx2427 power 10 0.301029995663981195213739 -> 2.00000000000000000000000 Inexact Rounded +precision: 23 +powx2428 power 10 0.30102999566398119521374 -> 2.0000000000000000000000 Inexact Rounded +precision: 22 +powx2429 power 10 0.3010299956639811952137 -> 2.000000000000000000000 Inexact Rounded +precision: 21 +powx2430 power 10 0.301029995663981195214 -> 2.00000000000000000000 Inexact Rounded +precision: 20 +powx2431 power 10 0.30102999566398119521 -> 2.0000000000000000000 Inexact Rounded +precision: 19 +powx2432 power 10 0.3010299956639811952 -> 2.000000000000000000 Inexact Rounded +precision: 18 +powx2433 power 10 0.301029995663981195 -> 2.00000000000000000 Inexact Rounded +precision: 17 +powx2434 power 10 0.30102999566398120 -> 2.0000000000000000 Inexact Rounded +precision: 16 +powx2435 power 10 0.3010299956639812 -> 2.000000000000000 Inexact Rounded +precision: 15 +powx2436 power 10 0.301029995663981 -> 2.00000000000000 Inexact Rounded +precision: 14 +powx2437 power 10 0.30102999566398 -> 2.0000000000000 Inexact Rounded +precision: 13 +powx2438 power 10 0.3010299956640 -> 2.000000000000 Inexact Rounded +precision: 12 +powx2439 power 10 0.301029995664 -> 2.00000000000 Inexact Rounded +precision: 11 +powx2440 power 10 0.30102999566 -> 2.0000000000 Inexact Rounded +precision: 10 +powx2441 power 10 0.3010299957 -> 2.000000000 Inexact Rounded +precision: 9 +powx2442 power 10 0.301029996 -> 2.00000000 Inexact Rounded +precision: 8 +powx2443 power 10 0.30103000 -> 2.0000000 Inexact Rounded +precision: 7 +powx2444 power 10 0.3010300 -> 2.000000 Inexact Rounded +precision: 6 +powx2445 power 10 0.301030 -> 2.00000 Inexact Rounded +precision: 5 +powx2446 power 10 0.30103 -> 2.0000 Inexact Rounded +precision: 4 +powx2447 power 10 0.3010 -> 2.000 Inexact Rounded +precision: 3 +powx2448 power 10 0.301 -> 2.00 Inexact Rounded +precision: 2 +powx2449 power 10 0.30 -> 2.0 Inexact Rounded +precision: 1 +powx2450 power 10 0.3 -> 2 Inexact Rounded + +maxExponent: 384 +minExponent: -383 +precision: 16 +rounding: half_even + +-- Close-to-e tests +precision: 34 +powx2500 power 10 0.4342944819032518276511289189166048 -> 2.718281828459045235360287471352661 Inexact Rounded +powx2501 power 10 0.4342944819032518276511289189166049 -> 2.718281828459045235360287471352661 Inexact Rounded +powx2502 power 10 0.4342944819032518276511289189166050 -> 2.718281828459045235360287471352662 Inexact Rounded +powx2503 power 10 0.4342944819032518276511289189166051 -> 2.718281828459045235360287471352663 Inexact Rounded +powx2504 power 10 0.4342944819032518276511289189166052 -> 2.718281828459045235360287471352663 Inexact Rounded + +-- e**e, 16->34 +powx2505 power 2.718281828459045 2.718281828459045 -> '15.15426224147925705633739513098219' Inexact Rounded + +-- Sequence around an integer +powx2512 power 10 2.9999999999999999999999999999999997 -> 999.9999999999999999999999999999993 Inexact Rounded +powx2513 power 10 2.9999999999999999999999999999999998 -> 999.9999999999999999999999999999995 Inexact Rounded +powx2514 power 10 2.9999999999999999999999999999999999 -> 999.9999999999999999999999999999998 Inexact Rounded +powx2515 power 10 3.0000000000000000000000000000000000 -> 1000 +powx2516 power 10 3.0000000000000000000000000000000001 -> 1000.000000000000000000000000000000 Inexact Rounded +powx2517 power 10 3.0000000000000000000000000000000002 -> 1000.000000000000000000000000000000 Inexact Rounded +powx2518 power 10 3.0000000000000000000000000000000003 -> 1000.000000000000000000000000000001 Inexact Rounded + +-- randomly generated tests +maxExponent: 384 +minExponent: -383 + +-- P=34, within 0-999 -- positive arg2 +Precision: 34 +powx3201 power 5.301557744131969249145904611290735 369.3175647984435534243813466380579 -> 3.427165676345688240023113326603960E+267 Inexact Rounded +powx3202 power 0.0000000000506875655819165973738225 21.93514102704466434121826965196878 -> 1.498169860033487321566659495340789E-226 Inexact Rounded +powx3203 power 97.88877680721519917858007810494043 5.159898445242793470476673109899554 -> 18705942904.43290467281449559427982 Inexact Rounded +powx3204 power 7.380441015594399747973924380493799 17.93614173904818313507525109033288 -> 3715757985820076.273336082702577274 Inexact Rounded +powx3205 power 2.045623627647350918819219169855040 1082.999652407430697958175966996254 -> 4.208806435006704867447150904279854E+336 Inexact Rounded +powx3206 power 0.0000000762582873112118926142955423 20.30534237055073996975203864170432 -> 2.967574278677013090697130349198877E-145 Inexact Rounded +powx3207 power 0.0000000000194091470907814855660535 14.71164213947722238856835440242911 -> 2.564391397469554735037158345963280E-158 Inexact Rounded +powx3208 power 0.0000000000509434185382818596853504 20.97051498204188277347203735421595 -> 1.420157372748083000927138678417272E-216 Inexact Rounded +powx3209 power 0.0005389217212073307301395750745119 43.96798225485747315858678755538971 -> 1.957850185781292007977898626137240E-144 Inexact Rounded +powx3210 power 498.5690105989136050444077447411198 128.1038813807243375878831104745803 -> 3.882212970903893127009102293596268E+345 Inexact Rounded +powx3211 power 0.0000000935428918637303954281938975 5.736933454863278597460091596496099 -> 4.733219644540496152403967823635195E-41 Inexact Rounded +powx3212 power 8.581586784734161309180363110126352 252.0229459968869784643374981477208 -> 1.907464842458674622356177850049873E+235 Inexact Rounded +powx3213 power 294.1005302951621709143320795278305 155.5466374141708615975111014663722 -> 9.251717033292072959166737280729728E+383 Inexact Rounded +powx3214 power 0.0000000041253343654396865855722090 19.00170974760425576247662125110472 -> 4.779566288553864405790921353593512E-160 Inexact Rounded +powx3215 power 0.0000000000046912257352141395184092 24.66089523148729269098773236636878 -> 4.205126874048597849476723538057527E-280 Inexact Rounded +powx3216 power 0.0000000000036796674296520639450494 22.09713956900694689234335912523078 -> 2.173081843837539818472071316420405E-253 Inexact Rounded +powx3217 power 9.659887100303037657934372148567685 277.3765665424320875993026404492216 -> 1.614974043145519382749740616665041E+273 Inexact Rounded +powx3218 power 0.0000083231310642229204398943076403 29.33123211782131466471359128190372 -> 1.013330439786660210757226597785328E-149 Inexact Rounded +powx3219 power 0.0938084859086450954956863725653664 262.6091918199905272837286784975012 -> 1.262802485286301066967555821509344E-270 Inexact Rounded +powx3220 power 8.194926977580900145696305910223304 184.3705133945546202012995485297248 -> 2.696353910907824016690021495828584E+168 Inexact Rounded +powx3221 power 72.39594594653085161522285114566120 168.7721909489321402152033939836725 -> 7.379858293630460043361584410795031E+313 Inexact Rounded +powx3222 power 0.0000000000003436856010144185445537 26.34329868961274988994452526178983 -> 4.585379573595865689605567720192768E-329 Inexact Rounded +powx3223 power 20.18365633762226550254542489492623 127.2099705237021350103678072707790 -> 1.020919629336979353690271762206060E+166 Inexact Rounded +powx3224 power 0.0000000553723990761530290129268131 8.157597566134754638015199501162405 -> 6.349030513396147480954474615067145E-60 Inexact Rounded +powx3225 power 0.0001028742674265840656614682618035 93.99842317306603797965470281716482 -> 1.455871110222736531854990397769940E-375 Inexact Rounded +powx3226 power 95.90195152775543876489746343266050 143.5992850002211509777720799352475 -> 3.881540015848530405189834366588567E+284 Inexact Rounded +powx3227 power 0.0000000000041783747057233878360333 12.14591167764993506821334760954430 -> 6.190998557456885985124592807383163E-139 Inexact Rounded +powx3228 power 0.5572830497086740798434917090018768 1001.921811263919522230330241349166 -> 3.871145158537170450093833881625838E-255 Inexact Rounded +powx3229 power 516.4754759779093954790813881333232 29.23812463126309057800793645336343 -> 2.110986192408878294012450052929185E+79 Inexact Rounded +powx3230 power 0.0000835892099464584776847299020706 27.64279992884843877453592659341588 -> 1.891535098905506689512376224943293E-113 Inexact Rounded +powx3231 power 72.45836577748571838139900165184955 166.2562890735032545091688015160084 -> 1.784091549041561516923092542939141E+309 Inexact Rounded +powx3232 power 305.1823317643335924007629563009032 83.01065159508472884219290136319623 -> 1.757493136164395229602456782779110E+206 Inexact Rounded +powx3233 power 7.108527102951713603542835791733786 145.7057852766236365450463428821948 -> 1.285934774113104362663619896550528E+124 Inexact Rounded +powx3234 power 6.471393503175464828149365697049824 64.11741937262455725284754171995720 -> 9.978990355881803195280027533011699E+51 Inexact Rounded +powx3235 power 39.72898094138459885662380866268385 239.9677288017447400786672779735168 -> 5.422218208517098335832848487375086E+383 Inexact Rounded +powx3236 power 0.0002865592332736973000183287329933 90.34733869590583787065642532641096 -> 8.293733126976212033209243257136796E-321 Inexact Rounded +powx3237 power 0.0000011343384394864811195077357936 1.926568285528399656789140809399396 -> 3.516055639378350146874261077470142E-12 Inexact Rounded +powx3238 power 0.0000000035321610295065299384889224 7.583861778824284092434085265265582 -> 7.970899823817369764381976286536230E-65 Inexact Rounded +powx3239 power 657.5028301569352677543770758346683 90.55778453811965116200206020172758 -> 1.522530898581564200655160665723268E+255 Inexact Rounded +powx3240 power 8.484756398325748879450577520251447 389.7468292476262478578280531222417 -> 8.595142803587368093392510310811218E+361 Inexact Rounded + +-- P=16, within 0-99 -- positive arg2 +Precision: 16 +powx3101 power 0.0000215524639223 48.37532522355252 -> 1.804663257287277E-226 Inexact Rounded +powx3102 power 00.80705856227999 2706.777535121391 -> 1.029625065876157E-252 Inexact Rounded +powx3103 power 3.445441676383689 428.5185892455830 -> 1.657401683096454E+230 Inexact Rounded +powx3104 power 0.0040158689495826 159.5725558816240 -> 4.255743665762492E-383 Inexact Rounded +powx3105 power 0.0000841553281215 38.32504413453944 -> 6.738653902512052E-157 Inexact Rounded +powx3106 power 0.7322610252571353 502.1254457674118 -> 1.109978126985943E-68 Inexact Rounded +powx3107 power 10.75052532144880 67.34180604734781 -> 2.873015019470189E+69 Inexact Rounded +powx3108 power 26.20425952945617 104.6002671186488 -> 2.301859355777030E+148 Inexact Rounded +powx3109 power 0.0000055737473850 31.16285859005424 -> 1.883348470100446E-164 Inexact Rounded +powx3110 power 61.06096011360700 10.93608439088726 -> 3.382686473028249E+19 Inexact Rounded +powx3111 power 9.340880853257137 179.9094938131726 -> 3.819299795937696E+174 Inexact Rounded +powx3112 power 0.0000050767371756 72.03346394186741 -> 4.216236691569869E-382 Inexact Rounded +powx3113 power 6.838478807860596 47.49665590602285 -> 4.547621630099203E+39 Inexact Rounded +powx3114 power 0.1299324346439081 397.7440523576938 -> 3.065047705553981E-353 Inexact Rounded +powx3115 power 0.0003418047034264 20.00516791512018 -> 4.546189665380487E-70 Inexact Rounded +powx3116 power 0.0001276899611715 78.12968287355703 -> 5.960217405063995E-305 Inexact Rounded +powx3117 power 25.93160588180509 252.6245071004620 -> 1.472171597589146E+357 Inexact Rounded +powx3118 power 35.47516857763178 86.14723037360925 -> 3.324299908481125E+133 Inexact Rounded +powx3119 power 0.0000048171086721 43.31965603038666 -> 4.572331516616228E-231 Inexact Rounded +powx3120 power 17.97652681097851 144.4684576550292 -> 1.842509906097860E+181 Inexact Rounded +powx3121 power 3.622765141518729 305.1948680344950 -> 4.132320967578704E+170 Inexact Rounded +powx3122 power 0.0080959002453519 143.9899444945627 -> 6.474627812947047E-302 Inexact Rounded +powx3123 power 9.841699927276571 299.2466668837188 -> 1.489097656208736E+297 Inexact Rounded +powx3124 power 0.0786659206232355 347.4750796962570 -> 2.05764809646925E-384 Inexact Rounded Underflow Subnormal +powx3125 power 0.0000084459792645 52.47348690745487 -> 6.076251876516942E-267 Inexact Rounded +powx3126 power 27.86589909967504 191.7296537102283 -> 1.157064112989386E+277 Inexact Rounded +powx3127 power 0.0000419907937234 58.44957702730767 -> 1.496950672075162E-256 Inexact Rounded +powx3128 power 0.0000664977739382 80.06749213261876 -> 3.488517620107875E-335 Inexact Rounded +powx3129 power 58.49554484886656 125.8480768373499 -> 2.449089862146640E+222 Inexact Rounded +powx3130 power 15.02820060024449 212.3527988973338 -> 8.307913932682067E+249 Inexact Rounded +powx3131 power 0.0002650089942992 30.92173123678761 -> 2.517827664836147E-111 Inexact Rounded +powx3132 power 0.0007342977426578 69.49168880741123 -> 1.600168665674440E-218 Inexact Rounded +powx3133 power 0.0063816068650629 150.1400094183812 -> 2.705057295799001E-330 Inexact Rounded +powx3134 power 9.912921122728791 297.8274013633411 -> 4.967624993438900E+296 Inexact Rounded +powx3135 power 1.988603563989245 768.4862967922182 -> 2.692842474899596E+229 Inexact Rounded +powx3136 power 8.418014519517691 164.2431359980725 -> 9.106211585888836E+151 Inexact Rounded +powx3137 power 6.068823604450686 120.2955212365837 -> 1.599431918105982E+94 Inexact Rounded +powx3138 power 56.90062738303850 54.90468294683645 -> 2.312839177902428E+96 Inexact Rounded +powx3139 power 5.710905139750871 73.44608752962156 -> 3.775876053709929E+55 Inexact Rounded +powx3140 power 0.0000017446761203 1.223981492228899 -> 8.952936595465635E-8 Inexact Rounded + +-- P=7, within 0-9 -- positive arg2 +Precision: 7 +powx3001 power 8.738689 55.96523 -> 4.878180E+52 Inexact Rounded +powx3002 power 0.0404763 147.4965 -> 3.689722E-206 Inexact Rounded +powx3003 power 0.0604232 76.69778 -> 3.319183E-94 Inexact Rounded +powx3004 power 0.0058855 107.5018 -> 1.768875E-240 Inexact Rounded +powx3005 power 2.058302 1173.050 -> 5.778899E+367 Inexact Rounded +powx3006 power 0.0056998 85.70157 -> 4.716783E-193 Inexact Rounded +powx3007 power 0.8169297 3693.537 -> 4.475962E-325 Inexact Rounded +powx3008 power 0.2810153 659.9568 -> 1.533177E-364 Inexact Rounded +powx3009 power 4.617478 15.68308 -> 2.629748E+10 Inexact Rounded +powx3010 power 0.0296418 244.2302 -> 6.207949E-374 Inexact Rounded +powx3011 power 0.0036456 127.9987 -> 8.120891E-313 Inexact Rounded +powx3012 power 0.5012813 577.5418 -> 6.088802E-174 Inexact Rounded +powx3013 power 0.0033275 119.9800 -> 5.055049E-298 Inexact Rounded +powx3014 power 0.0037652 111.7092 -> 1.560351E-271 Inexact Rounded +powx3015 power 0.6463252 239.0568 -> 4.864564E-46 Inexact Rounded +powx3016 power 4.784378 475.0521 -> 8.964460E+322 Inexact Rounded +powx3017 power 4.610305 563.1791 -> 6.290298E+373 Inexact Rounded +powx3018 power 0.0175167 80.52208 -> 3.623472E-142 Inexact Rounded +powx3019 power 5.238307 356.7944 -> 4.011461E+256 Inexact Rounded +powx3020 power 0.0003527 96.26347 -> 4.377932E-333 Inexact Rounded +powx3021 power 0.0015155 136.0516 -> 2.57113E-384 Inexact Rounded Underflow Subnormal +powx3022 power 5.753573 273.2340 -> 4.373184E+207 Inexact Rounded +powx3023 power 7.778665 332.7917 -> 3.060640E+296 Inexact Rounded +powx3024 power 1.432479 2046.064 -> 2.325829E+319 Inexact Rounded +powx3025 power 5.610516 136.4563 -> 1.607502E+102 Inexact Rounded +powx3026 power 0.0050697 137.4513 -> 3.522315E-316 Inexact Rounded +powx3027 power 5.678737 85.16253 -> 1.713909E+64 Inexact Rounded +powx3028 power 0.0816167 236.1973 -> 9.228802E-258 Inexact Rounded +powx3029 power 0.2602805 562.0157 -> 2.944556E-329 Inexact Rounded +powx3030 power 0.0080936 24.25367 -> 1.839755E-51 Inexact Rounded +powx3031 power 4.092016 82.94603 -> 5.724948E+50 Inexact Rounded +powx3032 power 0.0078255 7.204184 -> 6.675342E-16 Inexact Rounded +powx3033 power 0.9917693 29846.44 -> 7.430177E-108 Inexact Rounded +powx3034 power 1.610380 301.2467 -> 2.170142E+62 Inexact Rounded +powx3035 power 0.0588236 212.1097 -> 1.023196E-261 Inexact Rounded +powx3036 power 2.498069 531.4647 -> 2.054561E+211 Inexact Rounded +powx3037 power 9.964342 326.5438 -> 1.089452E+326 Inexact Rounded +powx3038 power 0.0820626 268.8718 -> 1.107350E-292 Inexact Rounded +powx3039 power 6.176486 360.7779 -> 1.914449E+285 Inexact Rounded +powx3040 power 4.206363 16.17288 -> 1.231314E+10 Inexact Rounded + +-- P=34, within 0-999 -- negative arg2 +Precision: 34 +powx3701 power 376.0915270000109486633402827007902 -35.69822349904102131649243701958463 -> 1.165722831225506457828653413200143E-92 Inexact Rounded +powx3702 power 0.0000000503747440074613191665845314 -9.520308341497979093021813571450575 -> 3.000432478861883953977971226770410E+69 Inexact Rounded +powx3703 power 290.6858731495339778337953407938308 -118.5459048597789693292455673428367 -> 9.357969047113989238392527565200302E-293 Inexact Rounded +powx3704 power 4.598864607620052062908700928454182 -299.8323667698931125720218537483753 -> 2.069641269855413539579128114448478E-199 Inexact Rounded +powx3705 power 2.556952676986830645708349254938903 -425.1755373251941383147998924703593 -> 4.428799777833598654260883861514638E-174 Inexact Rounded +powx3706 power 0.0000005656198763404221986640610118 -32.83361380678301321230028730075315 -> 1.340270622401829145968477601029251E+205 Inexact Rounded +powx3707 power 012.4841978642452960750801410372125 -214.3734291828712962809866663321921 -> 9.319857751170603140459057535971202E-236 Inexact Rounded +powx3708 power 0.0000000056041586148066919174315551 -37.21129049213858341528033343116533 -> 1.118345010652454313186702341873169E+307 Inexact Rounded +powx3709 power 0.0694569218941833767199998804202152 -8.697509072368973932501239815677732 -> 11862866995.51026489032838174290271 Inexact Rounded +powx3710 power 6.380984024259450398729243522354144 -451.0635696889193561457985486366827 -> 8.800353109387322474809325670314330E-364 Inexact Rounded +powx3711 power 786.0264840756809048288007204917801 -43.09935384678762773057342161718540 -> 1.616324183365644133979585419925934E-125 Inexact Rounded +powx3712 power 96.07836427113204744101287948445130 -185.1414572546330024388914720271876 -> 8.586320815218383004023264980018610E-368 Inexact Rounded +powx3713 power 0.0000000002332189796855870659792406 -5.779561613164628076880609893753327 -> 4.678450775876385793618570483345066E+55 Inexact Rounded +powx3714 power 0.7254146672024602242369943237968857 -2115.512891397828615710130092245691 -> 8.539080958041689288202111403102495E+294 Inexact Rounded +powx3715 power 0.0017380543649702864796144008592137 -6.307668017761022788220578633538713 -> 256309141459075651.2275798017695017 Inexact Rounded +powx3716 power 05.29498758952276908267649116142379 -287.3233896734103442991981056134167 -> 1.039130027847489364009368608104291E-208 Inexact Rounded +powx3717 power 15.64403593865932622003462779104178 -110.5296633358063267478609032002475 -> 9.750540276026524527375125980296142E-133 Inexact Rounded +powx3718 power 89.69639006761571087634945077373508 -181.3209914139357665609268339422627 -> 8.335034232277762924539395632025281E-355 Inexact Rounded +powx3719 power 6.974087483731006359914914110135058 -174.6815625746710345173615508179842 -> 4.553072265122011176641590109568031E-148 Inexact Rounded +powx3720 power 0.0034393024010554821130553772681993 -93.60931598413919272595497100497364 -> 4.067468855817145539589988349449394E+230 Inexact Rounded +powx3721 power 63.32834072300379155053737260965633 -168.3926799435088324825751446957616 -> 4.207907835462640471617519501741094E-304 Inexact Rounded +powx3722 power 00.00216088174206276369011255907785 -70.12279562855442784757874508991013 -> 8.000657143378187029609343435067057E+186 Inexact Rounded +powx3723 power 934.5957982703545893572134393004375 -102.2287735565878252484031426026726 -> 2.073813769209257617246544424827240E-304 Inexact Rounded +powx3724 power 107.9116792558793921873995885441177 -44.11941092260869786313838181499158 -> 2.005476533631183268912552168759595E-90 Inexact Rounded +powx3725 power 0.0000000000188049827381428191769262 -19.32118917192242027966847501724073 -> 1.713174297100918857053338286389034E+207 Inexact Rounded +powx3726 power 614.9820907366248142166636259027728 -4.069913257030791586645250035698123 -> 4.462432572576935752713876293746717E-12 Inexact Rounded +powx3727 power 752.0655175769182096165651274049422 -22.59292060348797472013598378334370 -> 1.039881526694635205040192531504131E-65 Inexact Rounded +powx3728 power 72.20446632047659449616175456059013 -175.4705356401853924020842356605072 -> 7.529540175791582421966947814549028E-327 Inexact Rounded +powx3729 power 518.8346486600403405764055847937416 -65.87320268592761588756963215588232 -> 1.420189426992170936958891180073151E-179 Inexact Rounded +powx3730 power 3.457164372003960576453458502270716 -440.3201118177861273814529713443698 -> 6.176418595751201287186292664257369E-238 Inexact Rounded +powx3731 power 7.908352793344189720739467675503991 -298.6646112894719680394152664740255 -> 5.935857120229147638104675057695125E-269 Inexact Rounded +powx3732 power 0.0000004297399403788595027926075086 -22.66504617185071293588817501468339 -> 2.012270405520600820469665145636204E+144 Inexact Rounded +powx3733 power 0.0000008592124097322966354868716443 -9.913109586558030204789520190180906 -> 1.354958763843310237046818832755215E+60 Inexact Rounded +powx3734 power 161.4806080561258105880907470989925 -70.72907837434814261716311990271578 -> 6.632555003698945544941329872901929E-157 Inexact Rounded +powx3735 power 0.0000000090669568624173832705631918 -36.53759624613665940127058439106640 -> 7.161808401023414735428130112941559E+293 Inexact Rounded +powx3736 power 0.0000000000029440295978365709342752 -1.297354238738921988884421117731562 -> 911731060579291.7661267358872917380 Inexact Rounded +powx3737 power 21.37477220144832172175460425143692 -76.95949933640539226475686997477889 -> 4.481741242418091914011962399912885E-103 Inexact Rounded +powx3738 power 0.0000000000186657798201636342150903 -20.18296240350678245567049161730909 -> 3.483954007114900406906338526575672E+216 Inexact Rounded +powx3739 power 0.0006522464792960191985996959126792 -80.03762491483514679886504099194414 -> 9.266548513614215557228467517053035E+254 Inexact Rounded +powx3740 power 0.0000000032851343694200568966168055 -21.53462116926375512242403160008026 -> 4.873201679668455240861376213601189E+182 Inexact Rounded + +-- P=16, within 0-99 -- negative arg2 +Precision: 16 +powx3601 power 0.0000151338748474 -40.84655618364688 -> 7.628470824137755E+196 Inexact Rounded +powx3602 power 0.1542771848654862 -435.8830009466800 -> 6.389817177800744E+353 Inexact Rounded +powx3603 power 48.28477749367364 -218.5929209902050 -> 8.531049532576154E-369 Inexact Rounded +powx3604 power 7.960775891584911 -12.78113732182505 -> 3.053270889769488E-12 Inexact Rounded +powx3605 power 0.9430340651863058 -9010.470056913748 -> 3.313374654923807E+229 Inexact Rounded +powx3606 power 0.0000202661501602 -65.57915207383306 -> 5.997379176536464E+307 Inexact Rounded +powx3607 power 04.33007440798390 -232.0476834666588 -> 2.007827183010456E-148 Inexact Rounded +powx3608 power 0.0000141944643914 -11.32407921958717 -> 7.902934485074846E+54 Inexact Rounded +powx3609 power 0.0000021977758261 -53.53706138253307 -> 8.195631772317815E+302 Inexact Rounded +powx3610 power 39.51297655474188 -19.40370976012326 -> 1.040699608072659E-31 Inexact Rounded +powx3611 power 38.71210232488775 -66.58341618227921 -> 1.886855066146495E-106 Inexact Rounded +powx3612 power 0.0000804235229062 -6.715207948992859 -> 3.134757864389333E+27 Inexact Rounded +powx3613 power 0.0000073547092399 -11.27725685719934 -> 7.781428390953695E+57 Inexact Rounded +powx3614 power 52.72181272599316 -186.1422311607435 -> 2.916601998744177E-321 Inexact Rounded +powx3615 power 0.0969519963083306 -280.8220862151369 -> 3.955906885970987E+284 Inexact Rounded +powx3616 power 94.07263302150081 -148.2031146071230 -> 3.361958990752490E-293 Inexact Rounded +powx3617 power 85.80286965053704 -90.21453695813759 -> 3.715602429645798E-175 Inexact Rounded +powx3618 power 03.52699858152259 -492.0414362539196 -> 4.507309220081092E-270 Inexact Rounded +powx3619 power 0.0508278086396068 -181.0871731572167 -> 2.034428013017949E+234 Inexact Rounded +powx3620 power 0.395576740303172 -915.5524507432392 -> 5.706585187437578E+368 Inexact Rounded +powx3621 power 38.06105826789202 -49.75913753435335 -> 2.273188991431738E-79 Inexact Rounded +powx3622 power 0.0003656748910646 -73.28988491310354 -> 7.768936940568763E+251 Inexact Rounded +powx3623 power 0.0000006373551809 -51.30825234200690 -> 7.697618167701985E+317 Inexact Rounded +powx3624 power 82.41729920673856 -35.73319631625699 -> 3.424042354585529E-69 Inexact Rounded +powx3625 power 0.7845821453127670 -971.4982028897663 -> 2.283415527661089E+102 Inexact Rounded +powx3626 power 4.840983673433497 -182.3730452370515 -> 1.220591407927770E-125 Inexact Rounded +powx3627 power 0.0000006137592139 -2.122139474431484 -> 15231217034839.29 Inexact Rounded +powx3628 power 0.0003657962862984 -35.97993782448099 -> 4.512701319250839E+123 Inexact Rounded +powx3629 power 40.93693004443150 -165.1362408792997 -> 6.044276411057239E-267 Inexact Rounded +powx3630 power 0.2941552583028898 -17.41046264945892 -> 1787833103.503346 Inexact Rounded +powx3631 power 63.99335135369977 -69.92417205168579 -> 5.099359804872509E-127 Inexact Rounded +powx3632 power 0.0000657924467388 -89.14497293588313 -> 6.145878266688521E+372 Inexact Rounded +powx3633 power 11.35071250339147 -323.3705865614542 -> 6.863626248766775E-342 Inexact Rounded +powx3634 power 23.88024718470895 -277.7117513329510 -> 2.006441422612815E-383 Inexact Rounded +powx3635 power 0.0000009111939914 -58.51782946929182 -> 2.954352883996773E+353 Inexact Rounded +powx3636 power 0.0000878179048782 -75.81060420238669 -> 3.306878455207585E+307 Inexact Rounded +powx3637 power 07.39190564273779 -287.5047307244636 -> 1.692080354659805E-250 Inexact Rounded +powx3638 power 0.0000298310819799 -1.844740377759355 -> 222874718.7238888 Inexact Rounded +powx3639 power 0.0000006412929384 -28.24850078229290 -> 8.737164230666529E+174 Inexact Rounded +powx3640 power 0.0000010202965998 -47.17573701956498 -> 4.392845306049341E+282 Inexact Rounded + +-- P=7, within 0-9 -- negative arg2 +Precision: 7 +powx3501 power 0.326324 -71.96509 -> 1.000673E+35 Inexact Rounded +powx3502 power 0.0017635 -0.7186967 -> 95.28419 Inexact Rounded +powx3503 power 8.564155 -253.0899 -> 8.850512E-237 Inexact Rounded +powx3504 power 8.987272 -2.155789 -> 0.008793859 Inexact Rounded +powx3505 power 9.604856 -139.9630 -> 3.073492E-138 Inexact Rounded +powx3506 power 0.8472919 -2539.085 -> 5.372686E+182 Inexact Rounded +powx3507 power 5.312329 -60.32965 -> 1.753121E-44 Inexact Rounded +powx3508 power 0.0338294 -100.5440 -> 7.423939E+147 Inexact Rounded +powx3509 power 0.0017777 -130.8583 -> 7.565629E+359 Inexact Rounded +powx3510 power 8.016154 -405.5689 -> 2.395977E-367 Inexact Rounded +powx3511 power 5.016570 -327.8906 -> 2.203784E-230 Inexact Rounded +powx3512 power 0.8161743 -744.5276 -> 4.786899E+65 Inexact Rounded +powx3513 power 0.0666343 -164.7320 -> 5.951240E+193 Inexact Rounded +powx3514 power 0.0803966 -202.2666 -> 2.715512E+221 Inexact Rounded +powx3515 power 0.0014752 -12.55547 -> 3.518905E+35 Inexact Rounded +powx3516 power 9.737565 -14.69615 -> 2.975672E-15 Inexact Rounded +powx3517 power 0.6634172 -152.7308 -> 1.654458E+27 Inexact Rounded +powx3518 power 0.0009337 -33.32939 -> 9.575039E+100 Inexact Rounded +powx3519 power 8.679922 -224.4194 -> 2.392446E-211 Inexact Rounded +powx3520 power 7.390494 -161.9483 -> 2.088375E-141 Inexact Rounded +powx3521 power 0.4631489 -417.1673 -> 2.821106E+139 Inexact Rounded +powx3522 power 0.0095471 -7.677458 -> 3.231855E+15 Inexact Rounded +powx3523 power 6.566339 -176.1867 -> 9.965633E-145 Inexact Rounded +powx3524 power 2.696128 -26.15501 -> 5.419731E-12 Inexact Rounded +powx3525 power 0.4464366 -852.1893 -> 2.957725E+298 Inexact Rounded +powx3526 power 0.4772006 -921.4111 -> 1.118105E+296 Inexact Rounded +powx3527 power 8.923696 -359.2211 -> 3.501573E-342 Inexact Rounded +powx3528 power 0.0018008 -66.91252 -> 4.402718E+183 Inexact Rounded +powx3529 power 0.0811964 -92.83278 -> 1.701111E+101 Inexact Rounded +powx3530 power 0.0711219 -58.94347 -> 4.644148E+67 Inexact Rounded +powx3531 power 7.958121 -50.66123 -> 2.311161E-46 Inexact Rounded +powx3532 power 6.106466 -81.83610 -> 4.943285E-65 Inexact Rounded +powx3533 power 4.557634 -129.5268 -> 4.737917E-86 Inexact Rounded +powx3534 power 0.0027348 -9.180135 -> 3.383524E+23 Inexact Rounded +powx3535 power 0.0083924 -46.24016 -> 9.996212E+95 Inexact Rounded +powx3536 power 2.138523 -47.25897 -> 2.507009E-16 Inexact Rounded +powx3537 power 1.626728 -1573.830 -> 2.668117E-333 Inexact Rounded +powx3538 power 0.082615 -164.5842 -> 1.717882E+178 Inexact Rounded +powx3539 power 7.636003 -363.6763 -> 8.366174E-322 Inexact Rounded +powx3540 power 0.0021481 -138.0065 -> 1.562505E+368 Inexact Rounded + + +-- Invalid operations due to restrictions +-- [next two probably skipped by most test harnesses] +precision: 100000000 +powx4001 power 1 1.1 -> NaN Invalid_context +precision: 99999999 +powx4002 power 1 1.1 -> NaN Invalid_context + +precision: 9 +maxExponent: 1000000 +minExponent: -999999 +powx4003 power 1 1.1 -> NaN Invalid_context +maxExponent: 999999 +minExponent: -999999 +powx4004 power 1 1.1 -> 1.00000000 Inexact Rounded +maxExponent: 999999 +minExponent: -1000000 +powx4005 power 1 1.1 -> NaN Invalid_context +maxExponent: 999999 +minExponent: -999998 +powx4006 power 1 1.1 -> 1.00000000 Inexact Rounded + +-- operand range violations +powx4007 power 1 1.1E+999999 -> 1 +powx4008 power 1 1.1E+1000000 -> NaN Invalid_operation +powx4009 power 1.1E+999999 1.1 -> Infinity Overflow Inexact Rounded +powx4010 power 1.1E+1000000 1.1 -> NaN Invalid_operation +powx4011 power 1 1.1E-1999997 -> 1.00000000 Inexact Rounded +powx4012 power 1 1.1E-1999998 -> NaN Invalid_operation +powx4013 power 1.1E-1999997 1.1 -> 0E-1000006 Underflow Inexact Rounded Clamped Subnormal +powx4014 power 1.1E-1999998 1.1 -> NaN Invalid_operation + +-- rounding modes -- power is sensitive +precision: 7 +maxExponent: 99 +minExponent: -99 + +-- 0.7 ** 3.3 => 0.30819354053418943822 +-- 0.7 ** 3.4 => 0.29739477638272533854 +-- -1.2 ** 17 => -22.18611106740436992 +-- -1.3 ** 17 => -86.50415919381337933 +-- 0.5 ** 11 => 0.00048828125 +-- 3.15 ** 3 => 31.255875 + +rounding: up +powx4100 power 0.7 3.3 -> 0.3081936 Inexact Rounded +powx4101 power 0.7 3.4 -> 0.2973948 Inexact Rounded +powx4102 power -1.2 17 -> -22.18612 Inexact Rounded +powx4103 power -1.3 17 -> -86.50416 Inexact Rounded +powx4104 power 17 81.27115 -> 9.999974E+99 Inexact Rounded +powx4105 power 17 81.27116 -> Infinity Overflow Inexact Rounded + +rounding: down +powx4120 power 0.7 3.3 -> 0.3081935 Inexact Rounded +powx4121 power 0.7 3.4 -> 0.2973947 Inexact Rounded +powx4122 power -1.2 17 -> -22.18611 Inexact Rounded +powx4123 power -1.3 17 -> -86.50415 Inexact Rounded +powx4124 power 17 81.27115 -> 9.999973E+99 Inexact Rounded +powx4125 power 17 81.27116 -> 9.999999E+99 Overflow Inexact Rounded + +rounding: floor +powx4140 power 0.7 3.3 -> 0.3081935 Inexact Rounded +powx4141 power 0.7 3.4 -> 0.2973947 Inexact Rounded +powx4142 power -1.2 17 -> -22.18612 Inexact Rounded +powx4143 power -1.3 17 -> -86.50416 Inexact Rounded +powx4144 power 17 81.27115 -> 9.999973E+99 Inexact Rounded +powx4145 power 17 81.27116 -> 9.999999E+99 Overflow Inexact Rounded + +rounding: ceiling +powx4160 power 0.7 3.3 -> 0.3081936 Inexact Rounded +powx4161 power 0.7 3.4 -> 0.2973948 Inexact Rounded +powx4162 power -1.2 17 -> -22.18611 Inexact Rounded +powx4163 power -1.3 17 -> -86.50415 Inexact Rounded +powx4164 power 17 81.27115 -> 9.999974E+99 Inexact Rounded +powx4165 power 17 81.27116 -> Infinity Overflow Inexact Rounded + +rounding: half_up +powx4180 power 0.7 3.3 -> 0.3081935 Inexact Rounded +powx4181 power 0.7 3.4 -> 0.2973948 Inexact Rounded +powx4182 power -1.2 17 -> -22.18611 Inexact Rounded +powx4183 power -1.3 17 -> -86.50416 Inexact Rounded +powx4184 power 0.5 11 -> 0.0004882813 Inexact Rounded +powx4185 power 3.15 3 -> 31.25588 Inexact Rounded +powx4186 power 17 81.27115 -> 9.999974E+99 Inexact Rounded +powx4187 power 17 81.27116 -> Infinity Overflow Inexact Rounded + +rounding: half_even +powx4200 power 0.7 3.3 -> 0.3081935 Inexact Rounded +powx4201 power 0.7 3.4 -> 0.2973948 Inexact Rounded +powx4202 power -1.2 17 -> -22.18611 Inexact Rounded +powx4203 power -1.3 17 -> -86.50416 Inexact Rounded +powx4204 power 0.5 11 -> 0.0004882812 Inexact Rounded +powx4205 power 3.15 3 -> 31.25588 Inexact Rounded +powx4206 power 17 81.27115 -> 9.999974E+99 Inexact Rounded +powx4207 power 17 81.27116 -> Infinity Overflow Inexact Rounded + +rounding: half_down +powx4220 power 0.7 3.3 -> 0.3081935 Inexact Rounded +powx4221 power 0.7 3.4 -> 0.2973948 Inexact Rounded +powx4222 power -1.2 17 -> -22.18611 Inexact Rounded +powx4223 power -1.3 17 -> -86.50416 Inexact Rounded +powx4224 power 0.5 11 -> 0.0004882812 Inexact Rounded +powx4225 power 3.15 3 -> 31.25587 Inexact Rounded +powx4226 power -3.15 3 -> -31.25587 Inexact Rounded +powx4227 power 17 81.27115 -> 9.999974E+99 Inexact Rounded +powx4228 power 17 81.27116 -> Infinity Overflow Inexact Rounded + + +-- more rounding tests as per Ilan Nehama's suggestions & analysis +-- these are likely to show > 0.5 ulp error for very small powers +precision: 7 +maxExponent: 96 +minExponent: -95 + +-- For x=nextfp(1)=1.00..001 (where the number of 0s is precision-2) +-- power(x,y)=x when the rounding is up (e.g., toward_pos_inf or +-- ceil) for any y in (0,1]. +rounding: ceiling +powx4301 power 1.000001 0 -> 1 +-- The next test should be skipped for decNumber +powx4302 power 1.000001 1e-101 -> 1.000001 Inexact Rounded +-- The next test should be skipped for decNumber +powx4303 power 1.000001 1e-95 -> 1.000001 Inexact Rounded +powx4304 power 1.000001 1e-10 -> 1.000001 Inexact Rounded +powx4305 power 1.000001 0.1 -> 1.000001 Inexact Rounded +powx4306 power 1.000001 0.1234567 -> 1.000001 Inexact Rounded +powx4307 power 1.000001 0.7 -> 1.000001 Inexact Rounded +powx4308 power 1.000001 0.9999999 -> 1.000001 Inexact Rounded +powx4309 power 1.000001 1.000000 -> 1.000001 +-- power(x,y)=1 when the rounding is down (e.g. toward_zero or +-- floor) for any y in [0,1). +rounding: floor +powx4321 power 1.000001 0 -> 1 +powx4322 power 1.000001 1e-101 -> 1.000000 Inexact Rounded +powx4323 power 1.000001 1e-95 -> 1.000000 Inexact Rounded +powx4324 power 1.000001 1e-10 -> 1.000000 Inexact Rounded +powx4325 power 1.000001 0.1 -> 1.000000 Inexact Rounded +powx4326 power 1.000001 0.1234567 -> 1.000000 Inexact Rounded +powx4327 power 1.000001 0.7 -> 1.000000 Inexact Rounded +powx4328 power 1.000001 0.9999999 -> 1.000000 Inexact Rounded +powx4329 power 1.000001 1.000000 -> 1.000001 + +-- For x=prevfp(1)=0.99..99 (where the number of 9s is precision) +-- power(x,y)=x when the rounding is down for any y in (0,1]. +rounding: floor +powx4341 power 0.9999999 0 -> 1 +-- The next test should be skipped for decNumber +powx4342 power 0.9999999 1e-101 -> 0.9999999 Inexact Rounded +-- The next test should be skipped for decNumber +powx4343 power 0.9999999 1e-95 -> 0.9999999 Inexact Rounded +powx4344 power 0.9999999 1e-10 -> 0.9999999 Inexact Rounded +powx4345 power 0.9999999 0.1 -> 0.9999999 Inexact Rounded +powx4346 power 0.9999999 0.1234567 -> 0.9999999 Inexact Rounded +powx4347 power 0.9999999 0.7 -> 0.9999999 Inexact Rounded +powx4348 power 0.9999999 0.9999999 -> 0.9999999 Inexact Rounded +powx4349 power 0.9999999 1.000000 -> 0.9999999 +-- power(x,y)=1 when the rounding is up for any y in (0,1]. +rounding: ceiling +powx4361 power 0.9999999 0 -> 1 +powx4362 power 0.9999999 1e-101 -> 1.000000 Inexact Rounded +powx4363 power 0.9999999 1e-95 -> 1.000000 Inexact Rounded +powx4364 power 0.9999999 1e-10 -> 1.000000 Inexact Rounded +powx4365 power 0.9999999 0.1 -> 1.000000 Inexact Rounded +powx4366 power 0.9999999 0.1234567 -> 1.000000 Inexact Rounded +powx4367 power 0.9999999 0.7 -> 1.000000 Inexact Rounded +powx4368 power 0.9999999 0.9999999 -> 1.000000 Inexact Rounded +powx4369 power 0.9999999 1.000000 -> 0.9999999 + +-- For x=nextfp(0) +-- power(x,y)=0 when the rounding is down for any y larger than 1. +rounding: floor +powx4382 power 1e-101 0 -> 1 +powx4383 power 1e-101 0.9999999 -> 1E-101 Underflow Subnormal Inexact Rounded +powx4384 power 1e-101 1.000000 -> 1E-101 Subnormal +powx4385 power 1e-101 1.000001 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped +powx4386 power 1e-101 2.000000 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped Modified: python/trunk/Lib/test/decimaltestdata/quantize.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/quantize.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/quantize.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- quantize.decTest -- decimal quantize operation -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,11 +17,12 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- Most of the tests here assume a "regular pattern", where the -- sign and coefficient are +1. -- 2004.03.15 Underflow for quantize is suppressed +-- 2005.06.08 More extensive tests for 'does not fit' extended: 1 precision: 9 @@ -123,10 +124,6 @@ quax124 quantize 1.05 1e-3 -> 1.050 quax125 quantize 1.05 1e-2 -> 1.05 quax126 quantize 1.05 1e-1 -> 1.1 Inexact Rounded -quax127 quantize 1.05 1e0 -> 1 Inexact Rounded -quax128 quantize 1.05 1e-3 -> 1.050 -quax129 quantize 1.05 1e-2 -> 1.05 -quax130 quantize 1.05 1e-1 -> 1.1 Inexact Rounded quax131 quantize 1.05 1e0 -> 1 Inexact Rounded quax132 quantize 1.06 1e-3 -> 1.060 quax133 quantize 1.06 1e-2 -> 1.06 @@ -435,6 +432,102 @@ quax472 quantize 9.999E-15 1e0 -> 0 Inexact Rounded quax473 quantize 9.999E-15 1e1 -> 0E+1 Inexact Rounded +precision: 7 +quax900 quantize 9.999E-15 1e-22 -> NaN Invalid_operation +quax901 quantize 9.999E-15 1e-21 -> 9.999000E-15 +quax902 quantize 9.999E-15 1e-20 -> 9.99900E-15 +quax903 quantize 9.999E-15 1e-19 -> 9.9990E-15 +quax904 quantize 9.999E-15 1e-18 -> 9.999E-15 +quax905 quantize 9.999E-15 1e-17 -> 1.000E-14 Inexact Rounded +quax906 quantize 9.999E-15 1e-16 -> 1.00E-14 Inexact Rounded +quax907 quantize 9.999E-15 1e-15 -> 1.0E-14 Inexact Rounded +quax908 quantize 9.999E-15 1e-14 -> 1E-14 Inexact Rounded +quax909 quantize 9.999E-15 1e-13 -> 0E-13 Inexact Rounded +quax910 quantize 9.999E-15 1e-12 -> 0E-12 Inexact Rounded +quax911 quantize 9.999E-15 1e-11 -> 0E-11 Inexact Rounded +quax912 quantize 9.999E-15 1e-10 -> 0E-10 Inexact Rounded +quax913 quantize 9.999E-15 1e-9 -> 0E-9 Inexact Rounded +quax914 quantize 9.999E-15 1e-8 -> 0E-8 Inexact Rounded +quax915 quantize 9.999E-15 1e-7 -> 0E-7 Inexact Rounded +quax916 quantize 9.999E-15 1e-6 -> 0.000000 Inexact Rounded +quax917 quantize 9.999E-15 1e-5 -> 0.00000 Inexact Rounded +quax918 quantize 9.999E-15 1e-4 -> 0.0000 Inexact Rounded +quax919 quantize 9.999E-15 1e-3 -> 0.000 Inexact Rounded +quax920 quantize 9.999E-15 1e-2 -> 0.00 Inexact Rounded +quax921 quantize 9.999E-15 1e-1 -> 0.0 Inexact Rounded +quax922 quantize 9.999E-15 1e0 -> 0 Inexact Rounded +quax923 quantize 9.999E-15 1e1 -> 0E+1 Inexact Rounded + +precision: 6 +quax930 quantize 9.999E-15 1e-22 -> NaN Invalid_operation +quax931 quantize 9.999E-15 1e-21 -> NaN Invalid_operation +quax932 quantize 9.999E-15 1e-20 -> 9.99900E-15 +quax933 quantize 9.999E-15 1e-19 -> 9.9990E-15 +quax934 quantize 9.999E-15 1e-18 -> 9.999E-15 +quax935 quantize 9.999E-15 1e-17 -> 1.000E-14 Inexact Rounded +quax936 quantize 9.999E-15 1e-16 -> 1.00E-14 Inexact Rounded +quax937 quantize 9.999E-15 1e-15 -> 1.0E-14 Inexact Rounded +quax938 quantize 9.999E-15 1e-14 -> 1E-14 Inexact Rounded +quax939 quantize 9.999E-15 1e-13 -> 0E-13 Inexact Rounded +quax940 quantize 9.999E-15 1e-12 -> 0E-12 Inexact Rounded +quax941 quantize 9.999E-15 1e-11 -> 0E-11 Inexact Rounded +quax942 quantize 9.999E-15 1e-10 -> 0E-10 Inexact Rounded +quax943 quantize 9.999E-15 1e-9 -> 0E-9 Inexact Rounded +quax944 quantize 9.999E-15 1e-8 -> 0E-8 Inexact Rounded +quax945 quantize 9.999E-15 1e-7 -> 0E-7 Inexact Rounded +quax946 quantize 9.999E-15 1e-6 -> 0.000000 Inexact Rounded +quax947 quantize 9.999E-15 1e-5 -> 0.00000 Inexact Rounded +quax948 quantize 9.999E-15 1e-4 -> 0.0000 Inexact Rounded +quax949 quantize 9.999E-15 1e-3 -> 0.000 Inexact Rounded +quax950 quantize 9.999E-15 1e-2 -> 0.00 Inexact Rounded +quax951 quantize 9.999E-15 1e-1 -> 0.0 Inexact Rounded +quax952 quantize 9.999E-15 1e0 -> 0 Inexact Rounded +quax953 quantize 9.999E-15 1e1 -> 0E+1 Inexact Rounded + +precision: 3 +quax960 quantize 9.999E-15 1e-22 -> NaN Invalid_operation +quax961 quantize 9.999E-15 1e-21 -> NaN Invalid_operation +quax962 quantize 9.999E-15 1e-20 -> NaN Invalid_operation +quax963 quantize 9.999E-15 1e-19 -> NaN Invalid_operation +quax964 quantize 9.999E-15 1e-18 -> NaN Invalid_operation +quax965 quantize 9.999E-15 1e-17 -> NaN Invalid_operation +quax966 quantize 9.999E-15 1e-16 -> 1.00E-14 Inexact Rounded +quax967 quantize 9.999E-15 1e-15 -> 1.0E-14 Inexact Rounded +quax968 quantize 9.999E-15 1e-14 -> 1E-14 Inexact Rounded +quax969 quantize 9.999E-15 1e-13 -> 0E-13 Inexact Rounded +quax970 quantize 9.999E-15 1e-12 -> 0E-12 Inexact Rounded +quax971 quantize 9.999E-15 1e-11 -> 0E-11 Inexact Rounded +quax972 quantize 9.999E-15 1e-10 -> 0E-10 Inexact Rounded +quax973 quantize 9.999E-15 1e-9 -> 0E-9 Inexact Rounded +quax974 quantize 9.999E-15 1e-8 -> 0E-8 Inexact Rounded +quax975 quantize 9.999E-15 1e-7 -> 0E-7 Inexact Rounded +quax976 quantize 9.999E-15 1e-6 -> 0.000000 Inexact Rounded +quax977 quantize 9.999E-15 1e-5 -> 0.00000 Inexact Rounded +quax978 quantize 9.999E-15 1e-4 -> 0.0000 Inexact Rounded +quax979 quantize 9.999E-15 1e-3 -> 0.000 Inexact Rounded +quax980 quantize 9.999E-15 1e-2 -> 0.00 Inexact Rounded +quax981 quantize 9.999E-15 1e-1 -> 0.0 Inexact Rounded +quax982 quantize 9.999E-15 1e0 -> 0 Inexact Rounded +quax983 quantize 9.999E-15 1e1 -> 0E+1 Inexact Rounded + +-- Fung Lee's case & similar +precision: 3 +quax1001 quantize 0.000 0.001 -> 0.000 +quax1002 quantize 0.001 0.001 -> 0.001 +quax1003 quantize 0.0012 0.001 -> 0.001 Inexact Rounded +quax1004 quantize 0.0018 0.001 -> 0.002 Inexact Rounded +quax1005 quantize 0.501 0.001 -> 0.501 +quax1006 quantize 0.5012 0.001 -> 0.501 Inexact Rounded +quax1007 quantize 0.5018 0.001 -> 0.502 Inexact Rounded +quax1008 quantize 0.999 0.001 -> 0.999 +quax1009 quantize 0.9992 0.001 -> 0.999 Inexact Rounded +quax1010 quantize 0.9998 0.001 -> NaN Invalid_operation +quax1011 quantize 1.0001 0.001 -> NaN Invalid_operation +quax1012 quantize 1.0051 0.001 -> NaN Invalid_operation +quax1013 quantize 1.0551 0.001 -> NaN Invalid_operation +quax1014 quantize 1.5551 0.001 -> NaN Invalid_operation +quax1015 quantize 1.9999 0.001 -> NaN Invalid_operation + -- long operand checks [rhs checks removed] maxexponent: 999 minexponent: -999 @@ -775,6 +868,81 @@ quax865 quantize 1 1e-2147483648 -> NaN Invalid_operation quax866 quantize 1 1e-2147483649 -> NaN Invalid_operation +-- More from Fung Lee +precision: 16 +rounding: half_up +maxExponent: 384 +minExponent: -383 +quax1021 quantize 8.666666666666000E+384 1.000000000000000E+384 -> 8.666666666666000E+384 +quax1022 quantize 64#8.666666666666000E+384 64#1.000000000000000E+384 -> 8.666666666666000E+384 +quax1023 quantize 64#8.666666666666000E+384 128#1.000000000000000E+384 -> 8.666666666666000E+384 +quax1024 quantize 64#8.666666666666000E+384 64#1E+384 -> 8.666666666666000E+384 +quax1025 quantize 64#8.666666666666000E+384 64#1E+384 -> 64#8.666666666666000E+384 +quax1026 quantize 64#8.666666666666000E+384 128#1E+384 -> 64#9E+384 Inexact Rounded Clamped +quax1027 quantize 64#8.666666666666000E+323 64#1E+31 -> NaN Invalid_operation +quax1028 quantize 64#8.666666666666000E+323 128#1E+31 -> NaN Invalid_operation +quax1029 quantize 64#8.66666666E+3 128#1E+10 -> 64#0E10 Inexact Rounded +quax1030 quantize 8.66666666E+3 1E+3 -> 9E+3 Inexact Rounded + +-- Int and uInt32 edge values for testing conversions +quax1040 quantize -2147483646 0 -> -2147483646 +quax1041 quantize -2147483647 0 -> -2147483647 +quax1042 quantize -2147483648 0 -> -2147483648 +quax1043 quantize -2147483649 0 -> -2147483649 +quax1044 quantize 2147483646 0 -> 2147483646 +quax1045 quantize 2147483647 0 -> 2147483647 +quax1046 quantize 2147483648 0 -> 2147483648 +quax1047 quantize 2147483649 0 -> 2147483649 +quax1048 quantize 4294967294 0 -> 4294967294 +quax1049 quantize 4294967295 0 -> 4294967295 +quax1050 quantize 4294967296 0 -> 4294967296 +quax1051 quantize 4294967297 0 -> 4294967297 +-- and powers of ten for same +quax1101 quantize 5000000000 0 -> 5000000000 +quax1102 quantize 4000000000 0 -> 4000000000 +quax1103 quantize 2000000000 0 -> 2000000000 +quax1104 quantize 1000000000 0 -> 1000000000 +quax1105 quantize 0100000000 0 -> 100000000 +quax1106 quantize 0010000000 0 -> 10000000 +quax1107 quantize 0001000000 0 -> 1000000 +quax1108 quantize 0000100000 0 -> 100000 +quax1109 quantize 0000010000 0 -> 10000 +quax1110 quantize 0000001000 0 -> 1000 +quax1111 quantize 0000000100 0 -> 100 +quax1112 quantize 0000000010 0 -> 10 +quax1113 quantize 0000000001 0 -> 1 +quax1114 quantize 0000000000 0 -> 0 +-- and powers of ten for same +quax1121 quantize -5000000000 0 -> -5000000000 +quax1122 quantize -4000000000 0 -> -4000000000 +quax1123 quantize -2000000000 0 -> -2000000000 +quax1124 quantize -1000000000 0 -> -1000000000 +quax1125 quantize -0100000000 0 -> -100000000 +quax1126 quantize -0010000000 0 -> -10000000 +quax1127 quantize -0001000000 0 -> -1000000 +quax1128 quantize -0000100000 0 -> -100000 +quax1129 quantize -0000010000 0 -> -10000 +quax1130 quantize -0000001000 0 -> -1000 +quax1131 quantize -0000000100 0 -> -100 +quax1132 quantize -0000000010 0 -> -10 +quax1133 quantize -0000000001 0 -> -1 +quax1134 quantize -0000000000 0 -> -0 + +-- Some miscellany +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 +-- 1 2 3 +-- 1 234567890123456789012345678901234 +quax0a1 quantize 8.555555555555555555555555555555555E+6143 1E+6143 -> 9E+6143 Inexact Rounded +quax0a2 quantize 128#8.555555555555555555555555555555555E+6143 128#1E+6143 -> 8.55555555555555555555555555555556E+6143 Rounded Inexact +quax0a3 quantize 128#8.555555555555555555555555555555555E+6144 128#1E+6144 -> 8.555555555555555555555555555555555E+6144 + +-- payload decapitate +precision: 5 +quax62100 quantize 11 -sNaN1234567890 -> -NaN67890 Invalid_operation + -- Null tests -quax900 quantize 10 # -> NaN Invalid_operation -quax901 quantize # 1e10 -> NaN Invalid_operation +quax998 quantize 10 # -> NaN Invalid_operation +quax999 quantize # 1e10 -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/randomBound32.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/randomBound32.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/randomBound32.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- randomBound32.decTest -- decimal testcases -- boundaries near 32 -- --- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.55 -- These testcases test calculations at precisions 31, 32, and 33, to -- exercise the boundaries around 2**5 @@ -90,7 +90,7 @@ divx3008 divide 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -8.677177026223536475531592432118E-21 Inexact Rounded dvix3008 divideint 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -0 mulx3008 multiply 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -6.543788575292743281456830701127E+41 Inexact Rounded -powx3008 power 75353574493.84484153484918212042 -9 -> 1.276630670287906925570645490708E-98 Inexact Rounded +powx3008 power 75353574493.84484153484918212042 -9 -> 1.276630670287906925570645490707E-98 Inexact Rounded remx3008 remainder 75353574493.84484153484918212042 -8684111695095849922263044191221 -> 75353574493.84484153484918212042 subx3008 subtract 75353574493.84484153484918212042 -8684111695095849922263044191221 -> 8684111695095849922338397765715 Inexact Rounded addx3009 add 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 6907061.073440802792400108035410 Inexact Rounded @@ -1040,7 +1040,7 @@ divx3226 divide 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> -8.1057651538555854520994438038537E+673 Inexact Rounded dvix3226 divideint 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> NaN Division_impossible mulx3226 multiply 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> -2.7865227773649353769876975366506E+737 Inexact Rounded -powx3226 power 47.525676459351505682005359699680E+704 -6 -> 8.6782100393941226535150385475463E-4235 Inexact Rounded +powx3226 power 47.525676459351505682005359699680E+704 -6 -> 8.6782100393941226535150385475464E-4235 Inexact Rounded remx3226 remainder 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> NaN Division_impossible subx3226 subtract 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> 4.7525676459351505682005359699680E+705 Inexact Rounded addx3227 add -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> -74396977890406.153948943614775470 Inexact Rounded Modified: python/trunk/Lib/test/decimaltestdata/randoms.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/randoms.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/randoms.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- randoms.decTest -- decimal random testcases -- --- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 maxexponent: 999999999 @@ -264,7 +264,7 @@ xdiv030 divide -225094.28 -88.7723542 -> 2535.63491 Inexact Rounded xdvi030 divideint -225094.28 -88.7723542 -> 2535 xmul030 multiply -225094.28 -88.7723542 -> 19982149.2 Inexact Rounded -xpow030 power -225094.28 -89 -> -4.36076964E-477 Inexact Rounded +xpow030 power -225094.28 -89 -> -4.36076965E-477 Inexact Rounded xrem030 remainder -225094.28 -88.7723542 -> -56.3621030 xsub030 subtract -225094.28 -88.7723542 -> -225005.508 Inexact Rounded xadd031 add 50.4442340 82.7952169E+880120759 -> 8.27952169E+880120760 Inexact Rounded @@ -295,7 +295,7 @@ xcom034 compare 592.142173E-419941416 -3.46079109E-844011845 -> 1 xdiv034 divide 592.142173E-419941416 -3.46079109E-844011845 -> -1.71100236E+424070431 Inexact Rounded xdvi034 divideint 592.142173E-419941416 -3.46079109E-844011845 -> NaN Division_impossible -xmul034 multiply 592.142173E-419941416 -3.46079109E-844011845 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul034 multiply 592.142173E-419941416 -3.46079109E-844011845 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow034 power 592.142173E-419941416 -3 -> Infinity Overflow Inexact Rounded xrem034 remainder 592.142173E-419941416 -3.46079109E-844011845 -> NaN Division_impossible xsub034 subtract 592.142173E-419941416 -3.46079109E-844011845 -> 5.92142173E-419941414 Inexact Rounded @@ -487,7 +487,7 @@ xcom058 compare 151795163E-371727182 -488.09788E-738852245 -> 1 xdiv058 divide 151795163E-371727182 -488.09788E-738852245 -> -3.10993285E+367125068 Inexact Rounded xdvi058 divideint 151795163E-371727182 -488.09788E-738852245 -> NaN Division_impossible -xmul058 multiply 151795163E-371727182 -488.09788E-738852245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul058 multiply 151795163E-371727182 -488.09788E-738852245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow058 power 151795163E-371727182 -5 -> Infinity Overflow Inexact Rounded xrem058 remainder 151795163E-371727182 -488.09788E-738852245 -> NaN Division_impossible xsub058 subtract 151795163E-371727182 -488.09788E-738852245 -> 1.51795163E-371727174 Inexact Rounded @@ -568,7 +568,7 @@ xdiv068 divide -12393257.2 76803689E+949125770 -> -1.61362786E-949125771 Inexact Rounded xdvi068 divideint -12393257.2 76803689E+949125770 -> -0 xmul068 multiply -12393257.2 76803689E+949125770 -> -9.51847872E+949125784 Inexact Rounded -xpow068 power -12393257.2 8 -> 5.56523750E+56 Inexact Rounded +xpow068 power -12393257.2 8 -> 5.56523749E+56 Inexact Rounded xrem068 remainder -12393257.2 76803689E+949125770 -> -12393257.2 xsub068 subtract -12393257.2 76803689E+949125770 -> -7.68036890E+949125777 Inexact Rounded xadd069 add -754771634.E+716555026 -292336.311 -> -7.54771634E+716555034 Inexact Rounded @@ -775,7 +775,7 @@ xcom094 compare -671.507198E-908587890 3057429.32E-555230623 -> -1 xdiv094 divide -671.507198E-908587890 3057429.32E-555230623 -> -2.19631307E-353357271 Inexact Rounded xdvi094 divideint -671.507198E-908587890 3057429.32E-555230623 -> -0 -xmul094 multiply -671.507198E-908587890 3057429.32E-555230623 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul094 multiply -671.507198E-908587890 3057429.32E-555230623 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow094 power -671.507198E-908587890 3 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xrem094 remainder -671.507198E-908587890 3057429.32E-555230623 -> -6.71507198E-908587888 xsub094 subtract -671.507198E-908587890 3057429.32E-555230623 -> -3.05742932E-555230617 Inexact Rounded @@ -856,7 +856,7 @@ xdiv104 divide 553527296. -7924.40185 -> -69850.9877 Inexact Rounded xdvi104 divideint 553527296. -7924.40185 -> -69850 xmul104 multiply 553527296. -7924.40185 -> -4.38637273E+12 Inexact Rounded -xpow104 power 553527296. -7924 -> 2.32397213E-69281 Inexact Rounded +xpow104 power 553527296. -7924 -> 2.32397214E-69281 Inexact Rounded xrem104 remainder 553527296. -7924.40185 -> 7826.77750 xsub104 subtract 553527296. -7924.40185 -> 553535220 Inexact Rounded xadd105 add -38.7465207 64936.2942 -> 64897.5477 Inexact Rounded @@ -919,7 +919,7 @@ xcom112 compare -51.1632090E-753968082 8.96207471E-585797887 -> -1 xdiv112 divide -51.1632090E-753968082 8.96207471E-585797887 -> -5.70885768E-168170195 Inexact Rounded xdvi112 divideint -51.1632090E-753968082 8.96207471E-585797887 -> -0 -xmul112 multiply -51.1632090E-753968082 8.96207471E-585797887 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul112 multiply -51.1632090E-753968082 8.96207471E-585797887 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow112 power -51.1632090E-753968082 9 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xrem112 remainder -51.1632090E-753968082 8.96207471E-585797887 -> -5.11632090E-753968081 xsub112 subtract -51.1632090E-753968082 8.96207471E-585797887 -> -8.96207471E-585797887 Inexact Rounded @@ -989,7 +989,7 @@ xsub120 subtract 14239029. -36527.2221 -> 14275556.2 Inexact Rounded xadd121 add 72333.2654E-544425548 -690.664836E+662155120 -> -6.90664836E+662155122 Inexact Rounded xcom121 compare 72333.2654E-544425548 -690.664836E+662155120 -> 1 -xdiv121 divide 72333.2654E-544425548 -690.664836E+662155120 -> -0E-1000000007 Inexact Rounded Underflow Subnormal +xdiv121 divide 72333.2654E-544425548 -690.664836E+662155120 -> -0E-1000000007 Inexact Rounded Underflow Subnormal Clamped xdvi121 divideint 72333.2654E-544425548 -690.664836E+662155120 -> -0 xmul121 multiply 72333.2654E-544425548 -690.664836E+662155120 -> -4.99580429E+117729579 Inexact Rounded xpow121 power 72333.2654E-544425548 -7 -> Infinity Overflow Inexact Rounded @@ -1005,7 +1005,7 @@ xsub122 subtract -37721.1567E-115787341 -828949864E-76251747 -> 8.28949864E-76251739 Inexact Rounded xadd123 add -2078852.83E-647080089 -119779858.E+734665461 -> -1.19779858E+734665469 Inexact Rounded xcom123 compare -2078852.83E-647080089 -119779858.E+734665461 -> 1 -xdiv123 divide -2078852.83E-647080089 -119779858.E+734665461 -> 0E-1000000007 Inexact Rounded Underflow Subnormal +xdiv123 divide -2078852.83E-647080089 -119779858.E+734665461 -> 0E-1000000007 Inexact Rounded Underflow Subnormal Clamped xdvi123 divideint -2078852.83E-647080089 -119779858.E+734665461 -> 0 xmul123 multiply -2078852.83E-647080089 -119779858.E+734665461 -> 2.49004697E+87585386 Inexact Rounded xpow123 power -2078852.83E-647080089 -1 -> -4.81034533E+647080082 Inexact Rounded @@ -1183,7 +1183,7 @@ xcom145 compare -477067757.E-961684940 7.70122608E-741072245 -> -1 xdiv145 divide -477067757.E-961684940 7.70122608E-741072245 -> -6.19469877E-220612688 Inexact Rounded xdvi145 divideint -477067757.E-961684940 7.70122608E-741072245 -> -0 -xmul145 multiply -477067757.E-961684940 7.70122608E-741072245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul145 multiply -477067757.E-961684940 7.70122608E-741072245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow145 power -477067757.E-961684940 8 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xrem145 remainder -477067757.E-961684940 7.70122608E-741072245 -> -4.77067757E-961684932 xsub145 subtract -477067757.E-961684940 7.70122608E-741072245 -> -7.70122608E-741072245 Inexact Rounded @@ -1296,7 +1296,7 @@ xdiv159 divide -18861647. 99794586.7 -> -0.189004711 Inexact Rounded xdvi159 divideint -18861647. 99794586.7 -> -0 xmul159 multiply -18861647. 99794586.7 -> -1.88229027E+15 Inexact Rounded -xpow159 power -18861647. 99794587 -> -4.28957460E+726063462 Inexact Rounded +xpow159 power -18861647. 99794587 -> -4.28957459E+726063462 Inexact Rounded xrem159 remainder -18861647. 99794586.7 -> -18861647.0 xsub159 subtract -18861647. 99794586.7 -> -118656234 Inexact Rounded xadd160 add 322192.407 461.67044 -> 322654.077 Inexact Rounded @@ -1519,7 +1519,7 @@ xcom187 compare -29.356551E-282816139 37141748E-903397821 -> -1 xdiv187 divide -29.356551E-282816139 37141748E-903397821 -> -7.90392283E+620581675 Inexact Rounded xdvi187 divideint -29.356551E-282816139 37141748E-903397821 -> NaN Division_impossible -xmul187 multiply -29.356551E-282816139 37141748E-903397821 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul187 multiply -29.356551E-282816139 37141748E-903397821 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow187 power -29.356551E-282816139 4 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xrem187 remainder -29.356551E-282816139 37141748E-903397821 -> NaN Division_impossible xsub187 subtract -29.356551E-282816139 37141748E-903397821 -> -2.93565510E-282816138 Inexact Rounded @@ -1760,7 +1760,7 @@ xdiv217 divide 7428219.97 667.326760 -> 11131.3084 Inexact Rounded xdvi217 divideint 7428219.97 667.326760 -> 11131 xmul217 multiply 7428219.97 667.326760 -> 4.95704997E+9 Inexact Rounded -xpow217 power 7428219.97 667 -> 7.58808510E+4582 Inexact Rounded +xpow217 power 7428219.97 667 -> 7.58808509E+4582 Inexact Rounded xrem217 remainder 7428219.97 667.326760 -> 205.804440 xsub217 subtract 7428219.97 667.326760 -> 7427552.64 Inexact Rounded xadd218 add -7291.19212 209.64966E-588526476 -> -7291.19212 Inexact Rounded @@ -2200,7 +2200,7 @@ xdiv272 divide 513115529. 27775075.6E+217133352 -> 1.84739562E-217133351 Inexact Rounded xdvi272 divideint 513115529. 27775075.6E+217133352 -> 0 xmul272 multiply 513115529. 27775075.6E+217133352 -> 1.42518226E+217133368 Inexact Rounded -xpow272 power 513115529. 3 -> 1.35096929E+26 Inexact Rounded +xpow272 power 513115529. 3 -> 1.35096928E+26 Inexact Rounded xrem272 remainder 513115529. 27775075.6E+217133352 -> 513115529 xsub272 subtract 513115529. 27775075.6E+217133352 -> -2.77750756E+217133359 Inexact Rounded xadd273 add -247157.208 -532990.453 -> -780147.661 @@ -2327,7 +2327,7 @@ xcom288 compare -4.18074650E-858746879 571035.277E-279409165 -> -1 xdiv288 divide -4.18074650E-858746879 571035.277E-279409165 -> -7.32134540E-579337720 Inexact Rounded xdvi288 divideint -4.18074650E-858746879 571035.277E-279409165 -> -0 -xmul288 multiply -4.18074650E-858746879 571035.277E-279409165 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul288 multiply -4.18074650E-858746879 571035.277E-279409165 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow288 power -4.18074650E-858746879 6 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xrem288 remainder -4.18074650E-858746879 571035.277E-279409165 -> -4.18074650E-858746879 xsub288 subtract -4.18074650E-858746879 571035.277E-279409165 -> -5.71035277E-279409160 Inexact Rounded @@ -2599,7 +2599,7 @@ xcom322 compare 82.4185291E-321919303 -215747737.E-995147400 -> 1 xdiv322 divide 82.4185291E-321919303 -215747737.E-995147400 -> -3.82013412E+673228090 Inexact Rounded xdvi322 divideint 82.4185291E-321919303 -215747737.E-995147400 -> NaN Division_impossible -xmul322 multiply 82.4185291E-321919303 -215747737.E-995147400 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul322 multiply 82.4185291E-321919303 -215747737.E-995147400 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow322 power 82.4185291E-321919303 -2 -> 1.47214396E+643838602 Inexact Rounded xrem322 remainder 82.4185291E-321919303 -215747737.E-995147400 -> NaN Division_impossible xsub322 subtract 82.4185291E-321919303 -215747737.E-995147400 -> 8.24185291E-321919302 Inexact Rounded @@ -2640,7 +2640,7 @@ xdiv327 divide 2512953.3 -3769170.35E-993621645 -> -6.66712583E+993621644 Inexact Rounded xdvi327 divideint 2512953.3 -3769170.35E-993621645 -> NaN Division_impossible xmul327 multiply 2512953.3 -3769170.35E-993621645 -> -9.47174907E-993621633 Inexact Rounded -xpow327 power 2512953.3 -4 -> 2.50762349E-26 Inexact Rounded +xpow327 power 2512953.3 -4 -> 2.50762348E-26 Inexact Rounded xrem327 remainder 2512953.3 -3769170.35E-993621645 -> NaN Division_impossible xsub327 subtract 2512953.3 -3769170.35E-993621645 -> 2512953.30 Inexact Rounded xadd328 add -682.796370 71131.0224 -> 70448.2260 Inexact Rounded @@ -2656,7 +2656,7 @@ xdiv329 divide 89.9997490 -4993.69831 -> -0.0180226644 Inexact Rounded xdvi329 divideint 89.9997490 -4993.69831 -> -0 xmul329 multiply 89.9997490 -4993.69831 -> -449431.594 Inexact Rounded -xpow329 power 89.9997490 -4994 -> 3.30336526E-9760 Inexact Rounded +xpow329 power 89.9997490 -4994 -> 3.30336525E-9760 Inexact Rounded xrem329 remainder 89.9997490 -4993.69831 -> 89.9997490 xsub329 subtract 89.9997490 -4993.69831 -> 5083.69806 Inexact Rounded xadd330 add 76563354.6E-112338836 278271.585E-511481095 -> 7.65633546E-112338829 Inexact Rounded @@ -2821,7 +2821,7 @@ xsub349 subtract -4037911.02E+641367645 29.5713010 -> -4.03791102E+641367651 Inexact Rounded xadd350 add -688755561.E-95301699 978.275312E+913812609 -> 9.78275312E+913812611 Inexact Rounded xcom350 compare -688755561.E-95301699 978.275312E+913812609 -> -1 -xdiv350 divide -688755561.E-95301699 978.275312E+913812609 -> -0E-1000000007 Inexact Rounded Underflow Subnormal +xdiv350 divide -688755561.E-95301699 978.275312E+913812609 -> -0E-1000000007 Inexact Rounded Underflow Subnormal Clamped xdvi350 divideint -688755561.E-95301699 978.275312E+913812609 -> -0 xmul350 multiply -688755561.E-95301699 978.275312E+913812609 -> -6.73792561E+818510921 Inexact Rounded xpow350 power -688755561.E-95301699 10 -> 2.40243244E-953016902 Inexact Rounded @@ -3024,7 +3024,7 @@ xdiv375 divide -5549320.1 -93580684.1 -> 0.0592998454 Inexact Rounded xdvi375 divideint -5549320.1 -93580684.1 -> 0 xmul375 multiply -5549320.1 -93580684.1 -> 5.19309171E+14 Inexact Rounded -xpow375 power -5549320.1 -93580684 -> 4.20662080E-631130572 Inexact Rounded +xpow375 power -5549320.1 -93580684 -> 4.20662079E-631130572 Inexact Rounded xrem375 remainder -5549320.1 -93580684.1 -> -5549320.1 xsub375 subtract -5549320.1 -93580684.1 -> 88031364.0 xadd376 add -14677053.1 -25784.7358 -> -14702837.8 Inexact Rounded @@ -3191,7 +3191,7 @@ xcom396 compare 4880.06442E-382222621 -115627239E-912834031 -> 1 xdiv396 divide 4880.06442E-382222621 -115627239E-912834031 -> -4.22051453E+530611405 Inexact Rounded xdvi396 divideint 4880.06442E-382222621 -115627239E-912834031 -> NaN Division_impossible -xmul396 multiply 4880.06442E-382222621 -115627239E-912834031 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul396 multiply 4880.06442E-382222621 -115627239E-912834031 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow396 power 4880.06442E-382222621 -1 -> 2.04915328E+382222617 Inexact Rounded xrem396 remainder 4880.06442E-382222621 -115627239E-912834031 -> NaN Division_impossible xsub396 subtract 4880.06442E-382222621 -115627239E-912834031 -> 4.88006442E-382222618 Inexact Rounded @@ -3295,7 +3295,7 @@ xcom409 compare -54.3684171E-807210192 1.04592973E-984041807 -> -1 xdiv409 divide -54.3684171E-807210192 1.04592973E-984041807 -> -5.19809463E+176831616 Inexact Rounded xdvi409 divideint -54.3684171E-807210192 1.04592973E-984041807 -> NaN Division_impossible -xmul409 multiply -54.3684171E-807210192 1.04592973E-984041807 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul409 multiply -54.3684171E-807210192 1.04592973E-984041807 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow409 power -54.3684171E-807210192 1 -> -5.43684171E-807210191 xrem409 remainder -54.3684171E-807210192 1.04592973E-984041807 -> NaN Division_impossible xsub409 subtract -54.3684171E-807210192 1.04592973E-984041807 -> -5.43684171E-807210191 Inexact Rounded @@ -3391,7 +3391,7 @@ xcom421 compare -4.09492571E-301749490 434.20199E-749390952 -> -1 xdiv421 divide -4.09492571E-301749490 434.20199E-749390952 -> -9.43092341E+447641459 Inexact Rounded xdvi421 divideint -4.09492571E-301749490 434.20199E-749390952 -> NaN Division_impossible -xmul421 multiply -4.09492571E-301749490 434.20199E-749390952 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul421 multiply -4.09492571E-301749490 434.20199E-749390952 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow421 power -4.09492571E-301749490 4 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xrem421 remainder -4.09492571E-301749490 434.20199E-749390952 -> NaN Division_impossible xsub421 subtract -4.09492571E-301749490 434.20199E-749390952 -> -4.09492571E-301749490 Inexact Rounded @@ -3423,7 +3423,7 @@ xcom425 compare 6.88891136E-935467395 -785049.562E-741671442 -> 1 xdiv425 divide 6.88891136E-935467395 -785049.562E-741671442 -> -8.77512923E-193795959 Inexact Rounded xdvi425 divideint 6.88891136E-935467395 -785049.562E-741671442 -> -0 -xmul425 multiply 6.88891136E-935467395 -785049.562E-741671442 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul425 multiply 6.88891136E-935467395 -785049.562E-741671442 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow425 power 6.88891136E-935467395 -8 -> Infinity Overflow Inexact Rounded xrem425 remainder 6.88891136E-935467395 -785049.562E-741671442 -> 6.88891136E-935467395 xsub425 subtract 6.88891136E-935467395 -785049.562E-741671442 -> 7.85049562E-741671437 Inexact Rounded @@ -3535,7 +3535,7 @@ xcom439 compare 971113.655E-695540249 -419351120E-977743823 -> 1 xdiv439 divide 971113.655E-695540249 -419351120E-977743823 -> -2.31575310E+282203571 Inexact Rounded xdvi439 divideint 971113.655E-695540249 -419351120E-977743823 -> NaN Division_impossible -xmul439 multiply 971113.655E-695540249 -419351120E-977743823 -> -0E-1000000007 Underflow Subnormal Inexact Rounded +xmul439 multiply 971113.655E-695540249 -419351120E-977743823 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped xpow439 power 971113.655E-695540249 -4 -> Infinity Overflow Inexact Rounded xrem439 remainder 971113.655E-695540249 -419351120E-977743823 -> NaN Division_impossible xsub439 subtract 971113.655E-695540249 -419351120E-977743823 -> 9.71113655E-695540244 Inexact Rounded @@ -3600,7 +3600,7 @@ xdiv447 divide -9.95836312 -866466703 -> 1.14930707E-8 Inexact Rounded xdvi447 divideint -9.95836312 -866466703 -> 0 xmul447 multiply -9.95836312 -866466703 -> 8.62859006E+9 Inexact Rounded -xpow447 power -9.95836312 -866466703 -> -6.71744368E-864896630 Inexact Rounded +xpow447 power -9.95836312 -866466703 -> -6.71744369E-864896630 Inexact Rounded xrem447 remainder -9.95836312 -866466703 -> -9.95836312 xsub447 subtract -9.95836312 -866466703 -> 866466693 Inexact Rounded xadd448 add 80919339.2E-967231586 219.824266 -> 219.824266 Inexact Rounded @@ -3616,7 +3616,7 @@ xdiv449 divide 159579.444 -89827.5229 -> -1.77650946 Inexact Rounded xdvi449 divideint 159579.444 -89827.5229 -> -1 xmul449 multiply 159579.444 -89827.5229 -> -1.43346262E+10 Inexact Rounded -xpow449 power 159579.444 -89828 -> 9.69955849E-467374 Inexact Rounded +xpow449 power 159579.444 -89828 -> 9.69955850E-467374 Inexact Rounded xrem449 remainder 159579.444 -89827.5229 -> 69751.9211 xsub449 subtract 159579.444 -89827.5229 -> 249406.967 Inexact Rounded xadd450 add -4.54000153 6966333.74 -> 6966329.20 Inexact Rounded @@ -3640,7 +3640,7 @@ xdiv452 divide -361382575. -7976.15286E+898491169 -> 4.53078798E-898491165 Inexact Rounded xdvi452 divideint -361382575. -7976.15286E+898491169 -> 0 xmul452 multiply -361382575. -7976.15286E+898491169 -> 2.88244266E+898491181 Inexact Rounded -xpow452 power -361382575. -8 -> 3.43765536E-69 Inexact Rounded +xpow452 power -361382575. -8 -> 3.43765537E-69 Inexact Rounded xrem452 remainder -361382575. -7976.15286E+898491169 -> -361382575 xsub452 subtract -361382575. -7976.15286E+898491169 -> 7.97615286E+898491172 Inexact Rounded xadd453 add 7021805.61 1222952.83 -> 8244758.44 @@ -3720,7 +3720,7 @@ xdiv462 divide -51592.2698 -713885.741 -> 0.0722696460 Inexact Rounded xdvi462 divideint -51592.2698 -713885.741 -> 0 xmul462 multiply -51592.2698 -713885.741 -> 3.68309858E+10 Inexact Rounded -xpow462 power -51592.2698 -713886 -> 6.38576921E-3364249 Inexact Rounded +xpow462 power -51592.2698 -713886 -> 6.38576920E-3364249 Inexact Rounded xrem462 remainder -51592.2698 -713885.741 -> -51592.2698 xsub462 subtract -51592.2698 -713885.741 -> 662293.471 Inexact Rounded xadd463 add 51.2279848E+80439745 207.55925E+865165070 -> 2.07559250E+865165072 Inexact Rounded @@ -3768,7 +3768,7 @@ xdiv468 divide -5.32711606 -8447286.21 -> 6.30630468E-7 Inexact Rounded xdvi468 divideint -5.32711606 -8447286.21 -> 0 xmul468 multiply -5.32711606 -8447286.21 -> 44999674.0 Inexact Rounded -xpow468 power -5.32711606 -8447286 -> 9.09138729E-6136888 Inexact Rounded +xpow468 power -5.32711606 -8447286 -> 9.09138728E-6136888 Inexact Rounded xrem468 remainder -5.32711606 -8447286.21 -> -5.32711606 xsub468 subtract -5.32711606 -8447286.21 -> 8447280.88 Inexact Rounded xadd469 add -82272171.8 -776.238587E-372690416 -> -82272171.8 Inexact Rounded @@ -4027,3 +4027,4 @@ xpow500 power -525445087.E+231529167 188227460 -> Infinity Overflow Inexact Rounded xrem500 remainder -525445087.E+231529167 188227460 -> NaN Division_impossible xsub500 subtract -525445087.E+231529167 188227460 -> -5.25445087E+231529175 Inexact Rounded + Modified: python/trunk/Lib/test/decimaltestdata/remainder.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/remainder.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/remainder.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- remainder.decTest -- decimal remainder -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 precision: 9 @@ -351,6 +351,17 @@ remx408 remainder 0.55555555 1 -> 0.55555555 remx409 remainder 0.555555555 1 -> 0.555555555 +-- zero signs +remx650 remainder 1 1 -> 0 +remx651 remainder -1 1 -> -0 +remx652 remainder 1 -1 -> 0 +remx653 remainder -1 -1 -> -0 +remx654 remainder 0 1 -> 0 +remx655 remainder -0 1 -> -0 +remx656 remainder 0 -1 -> 0 +remx657 remainder -0 -1 -> -0 +remx658 remainder 0.00 1 -> 0.00 +remx659 remainder -0.00 1 -> -0.00 -- Specials remx680 remainder Inf -Inf -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/remainderNear.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/remainderNear.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/remainderNear.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- remainderNear.decTest -- decimal remainder-near (IEEE remainder) -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.55 extended: 1 precision: 9 Modified: python/trunk/Lib/test/decimaltestdata/rescale.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/rescale.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/rescale.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- rescale.decTest -- decimal rescale operation -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- [obsolete] Quantize.decTest has the improved version @@ -379,7 +379,7 @@ resx446 rescale 0.000999 1 -> 0E+1 Inexact Rounded precision: 8 -resx449 rescale 9.999E-15 -23 -> NaN Invalid_operation +resx449 rescale 9.999E-15 -23 -> NaN Invalid_operation resx450 rescale 9.999E-15 -22 -> 9.9990000E-15 resx451 rescale 9.999E-15 -21 -> 9.999000E-15 resx452 rescale 9.999E-15 -20 -> 9.99900E-15 @@ -405,6 +405,12 @@ resx472 rescale 9.999E-15 0 -> 0 Inexact Rounded resx473 rescale 9.999E-15 1 -> 0E+1 Inexact Rounded +-- [additional tests for "don't fit" edge cases are in +-- quantize.decTest. Here's a critical one.] +precision: 3 +resx480 rescale 0.9999 -3 -> NaN Invalid_operation + + -- long operand checks [rhs checks removed] maxexponent: 999 minexponent: -999 Modified: python/trunk/Lib/test/decimaltestdata/rounding.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/rounding.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/rounding.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- rounding.decTest -- decimal rounding modes testcases -- --- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- These tests require that implementations take account of residues in -- order to get correct results for some rounding modes. Rather than @@ -26,8 +26,11 @@ -- is rounding of negatives (if the latter works for addition, assume it -- works for the others, too).] -- --- Underflow Subnormal and overflow behaviours are tested under the individual --- operators. +-- Round-for-reround (05UP) is tested as a separate block, mostly for +-- 'historical' reasons. +-- +-- Underflow Subnormal and overflow behaviours are tested under the +-- individual operators. extended: 1 precision: 5 -- for easier visual inspection @@ -980,8 +983,8 @@ rounding: down rovx100 multiply 10 9E+999999999 -> 9.9999E+999999999 Overflow Inexact Rounded rovx101 multiply -10 9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded -rovx102 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded -rovx104 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded +rovx102 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded Clamped +rovx104 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped rounding: up rovx110 multiply 10 9E+999999999 -> Infinity Overflow Inexact Rounded @@ -993,31 +996,31 @@ rovx120 multiply 10 9E+999999999 -> Infinity Overflow Inexact Rounded rovx121 multiply -10 9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded rovx122 divide 1E-9 9E+999999999 -> 1E-1000000003 Underflow Subnormal Inexact Rounded -rovx124 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded +rovx124 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped rounding: floor rovx130 multiply 10 9E+999999999 -> 9.9999E+999999999 Overflow Inexact Rounded rovx131 multiply -10 9E+999999999 -> -Infinity Overflow Inexact Rounded -rovx132 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded +rovx132 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded Clamped rovx134 divide -1E-9 9E+999999999 -> -1E-1000000003 Underflow Subnormal Inexact Rounded rounding: half_up rovx140 multiply 10 9E+999999999 -> Infinity Overflow Inexact Rounded rovx141 multiply -10 9E+999999999 -> -Infinity Overflow Inexact Rounded -rovx142 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded -rovx144 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded +rovx142 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded Clamped +rovx144 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped rounding: half_even rovx150 multiply 10 9E+999999999 -> Infinity Overflow Inexact Rounded rovx151 multiply -10 9E+999999999 -> -Infinity Overflow Inexact Rounded -rovx152 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded -rovx154 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded +rovx152 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded Clamped +rovx154 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped rounding: half_down rovx160 multiply 10 9E+999999999 -> Infinity Overflow Inexact Rounded rovx161 multiply -10 9E+999999999 -> -Infinity Overflow Inexact Rounded -rovx162 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded -rovx164 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded +rovx162 divide 1E-9 9E+999999999 -> 0E-1000000003 Underflow Subnormal Inexact Rounded Clamped +rovx164 divide -1E-9 9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped -- check maximum finite value over a range of precisions rounding: down @@ -1077,3 +1080,224 @@ rmex412 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded rmex413 multiply 9.999E+999999999 10 -> 9.99999999E+999999999 Overflow Inexact Rounded +----- Round-for-reround ----- +rounding: 05up +precision: 5 -- for easier visual inspection +maxExponent: 999 +minexponent: -999 + +-- basic rounding; really is just 0 and 5 up +r05up001 add 12340 0.001 -> 12341 Inexact Rounded +r05up002 add 12341 0.001 -> 12341 Inexact Rounded +r05up003 add 12342 0.001 -> 12342 Inexact Rounded +r05up004 add 12343 0.001 -> 12343 Inexact Rounded +r05up005 add 12344 0.001 -> 12344 Inexact Rounded +r05up006 add 12345 0.001 -> 12346 Inexact Rounded +r05up007 add 12346 0.001 -> 12346 Inexact Rounded +r05up008 add 12347 0.001 -> 12347 Inexact Rounded +r05up009 add 12348 0.001 -> 12348 Inexact Rounded +r05up010 add 12349 0.001 -> 12349 Inexact Rounded + +r05up011 add 12340 0.000 -> 12340 Rounded +r05up012 add 12341 0.000 -> 12341 Rounded +r05up013 add 12342 0.000 -> 12342 Rounded +r05up014 add 12343 0.000 -> 12343 Rounded +r05up015 add 12344 0.000 -> 12344 Rounded +r05up016 add 12345 0.000 -> 12345 Rounded +r05up017 add 12346 0.000 -> 12346 Rounded +r05up018 add 12347 0.000 -> 12347 Rounded +r05up019 add 12348 0.000 -> 12348 Rounded +r05up020 add 12349 0.000 -> 12349 Rounded + +r05up021 add 12340 0.901 -> 12341 Inexact Rounded +r05up022 add 12341 0.901 -> 12341 Inexact Rounded +r05up023 add 12342 0.901 -> 12342 Inexact Rounded +r05up024 add 12343 0.901 -> 12343 Inexact Rounded +r05up025 add 12344 0.901 -> 12344 Inexact Rounded +r05up026 add 12345 0.901 -> 12346 Inexact Rounded +r05up027 add 12346 0.901 -> 12346 Inexact Rounded +r05up028 add 12347 0.901 -> 12347 Inexact Rounded +r05up029 add 12348 0.901 -> 12348 Inexact Rounded +r05up030 add 12349 0.901 -> 12349 Inexact Rounded + +r05up031 add -12340 -0.001 -> -12341 Inexact Rounded +r05up032 add -12341 -0.001 -> -12341 Inexact Rounded +r05up033 add -12342 -0.001 -> -12342 Inexact Rounded +r05up034 add -12343 -0.001 -> -12343 Inexact Rounded +r05up035 add -12344 -0.001 -> -12344 Inexact Rounded +r05up036 add -12345 -0.001 -> -12346 Inexact Rounded +r05up037 add -12346 -0.001 -> -12346 Inexact Rounded +r05up038 add -12347 -0.001 -> -12347 Inexact Rounded +r05up039 add -12348 -0.001 -> -12348 Inexact Rounded +r05up040 add -12349 -0.001 -> -12349 Inexact Rounded + +r05up041 add -12340 0.001 -> -12339 Inexact Rounded +r05up042 add -12341 0.001 -> -12341 Inexact Rounded +r05up043 add -12342 0.001 -> -12341 Inexact Rounded +r05up044 add -12343 0.001 -> -12342 Inexact Rounded +r05up045 add -12344 0.001 -> -12343 Inexact Rounded +r05up046 add -12345 0.001 -> -12344 Inexact Rounded +r05up047 add -12346 0.001 -> -12346 Inexact Rounded +r05up048 add -12347 0.001 -> -12346 Inexact Rounded +r05up049 add -12348 0.001 -> -12347 Inexact Rounded +r05up050 add -12349 0.001 -> -12348 Inexact Rounded + +-- Addition operators ------------------------------------------------- +-- [The first few of these check negative residue possibilities; these +-- cases may be implemented as a negative residue in fastpaths] + +r0adx100 add 12345 -0.1 -> 12344 Inexact Rounded +r0adx101 add 12345 -0.01 -> 12344 Inexact Rounded +r0adx102 add 12345 -0.001 -> 12344 Inexact Rounded +r0adx103 add 12345 -0.00001 -> 12344 Inexact Rounded +r0adx104 add 12345 -0.000001 -> 12344 Inexact Rounded +r0adx105 add 12345 -0.0000001 -> 12344 Inexact Rounded +r0adx106 add 12345 0 -> 12345 +r0adx107 add 12345 0.0000001 -> 12346 Inexact Rounded +r0adx108 add 12345 0.000001 -> 12346 Inexact Rounded +r0adx109 add 12345 0.00001 -> 12346 Inexact Rounded +r0adx110 add 12345 0.0001 -> 12346 Inexact Rounded +r0adx111 add 12345 0.001 -> 12346 Inexact Rounded +r0adx112 add 12345 0.01 -> 12346 Inexact Rounded +r0adx113 add 12345 0.1 -> 12346 Inexact Rounded + +r0adx115 add 12346 0.49999 -> 12346 Inexact Rounded +r0adx116 add 12346 0.5 -> 12346 Inexact Rounded +r0adx117 add 12346 0.50001 -> 12346 Inexact Rounded + +r0adx120 add 12345 0.4 -> 12346 Inexact Rounded +r0adx121 add 12345 0.49 -> 12346 Inexact Rounded +r0adx122 add 12345 0.499 -> 12346 Inexact Rounded +r0adx123 add 12345 0.49999 -> 12346 Inexact Rounded +r0adx124 add 12345 0.5 -> 12346 Inexact Rounded +r0adx125 add 12345 0.50001 -> 12346 Inexact Rounded +r0adx126 add 12345 0.5001 -> 12346 Inexact Rounded +r0adx127 add 12345 0.501 -> 12346 Inexact Rounded +r0adx128 add 12345 0.51 -> 12346 Inexact Rounded +r0adx129 add 12345 0.6 -> 12346 Inexact Rounded + +-- negatives... + +r0sux100 add -12345 -0.1 -> -12346 Inexact Rounded +r0sux101 add -12345 -0.01 -> -12346 Inexact Rounded +r0sux102 add -12345 -0.001 -> -12346 Inexact Rounded +r0sux103 add -12345 -0.00001 -> -12346 Inexact Rounded +r0sux104 add -12345 -0.000001 -> -12346 Inexact Rounded +r0sux105 add -12345 -0.0000001 -> -12346 Inexact Rounded +r0sux106 add -12345 0 -> -12345 +r0sux107 add -12345 0.0000001 -> -12344 Inexact Rounded +r0sux108 add -12345 0.000001 -> -12344 Inexact Rounded +r0sux109 add -12345 0.00001 -> -12344 Inexact Rounded +r0sux110 add -12345 0.0001 -> -12344 Inexact Rounded +r0sux111 add -12345 0.001 -> -12344 Inexact Rounded +r0sux112 add -12345 0.01 -> -12344 Inexact Rounded +r0sux113 add -12345 0.1 -> -12344 Inexact Rounded + +r0sux115 add -12346 0.49999 -> -12346 Inexact Rounded +r0sux116 add -12346 0.5 -> -12346 Inexact Rounded +r0sux117 add -12346 0.50001 -> -12346 Inexact Rounded + +r0sux120 add -12345 0.4 -> -12344 Inexact Rounded +r0sux121 add -12345 0.49 -> -12344 Inexact Rounded +r0sux122 add -12345 0.499 -> -12344 Inexact Rounded +r0sux123 add -12345 0.49999 -> -12344 Inexact Rounded +r0sux124 add -12345 0.5 -> -12344 Inexact Rounded +r0sux125 add -12345 0.50001 -> -12344 Inexact Rounded +r0sux126 add -12345 0.5001 -> -12344 Inexact Rounded +r0sux127 add -12345 0.501 -> -12344 Inexact Rounded +r0sux128 add -12345 0.51 -> -12344 Inexact Rounded +r0sux129 add -12345 0.6 -> -12344 Inexact Rounded + +-- Check cancellation subtractions +-- (The IEEE 854 'curious rule' in $6.3) + +r0zex001 add 0 0 -> 0 +r0zex002 add 0 -0 -> 0 +r0zex003 add -0 0 -> 0 +r0zex004 add -0 -0 -> -0 +r0zex005 add 1 -1 -> 0 +r0zex006 add -1 1 -> 0 +r0zex007 add 1.5 -1.5 -> 0.0 +r0zex008 add -1.5 1.5 -> 0.0 +r0zex009 add 2 -2 -> 0 +r0zex010 add -2 2 -> 0 + + +-- Division operators ------------------------------------------------- + +r0dvx101 divide 12345 1 -> 12345 +r0dvx102 divide 12345 1.0001 -> 12343 Inexact Rounded +r0dvx103 divide 12345 1.001 -> 12332 Inexact Rounded +r0dvx104 divide 12345 1.01 -> 12222 Inexact Rounded +r0dvx105 divide 12345 1.1 -> 11222 Inexact Rounded +r0dvx106 divide 12355 4 -> 3088.7 Inexact Rounded +r0dvx107 divide 12345 4 -> 3086.2 Inexact Rounded +r0dvx108 divide 12355 4.0001 -> 3088.6 Inexact Rounded +r0dvx109 divide 12345 4.0001 -> 3086.1 Inexact Rounded +r0dvx110 divide 12345 4.9 -> 2519.3 Inexact Rounded +r0dvx111 divide 12345 4.99 -> 2473.9 Inexact Rounded +r0dvx112 divide 12345 4.999 -> 2469.4 Inexact Rounded +r0dvx113 divide 12345 4.9999 -> 2469.1 Inexact Rounded +r0dvx114 divide 12345 5 -> 2469 +r0dvx115 divide 12345 5.0001 -> 2468.9 Inexact Rounded +r0dvx116 divide 12345 5.001 -> 2468.6 Inexact Rounded +r0dvx117 divide 12345 5.01 -> 2464.1 Inexact Rounded +r0dvx118 divide 12345 5.1 -> 2420.6 Inexact Rounded + +-- [divideInteger and remainder unaffected] + +-- Multiplication operator -------------------------------------------- + +r0mux101 multiply 12345 1 -> 12345 +r0mux102 multiply 12345 1.0001 -> 12346 Inexact Rounded +r0mux103 multiply 12345 1.001 -> 12357 Inexact Rounded +r0mux104 multiply 12345 1.01 -> 12468 Inexact Rounded +r0mux105 multiply 12345 1.1 -> 13579 Inexact Rounded +r0mux106 multiply 12345 4 -> 49380 +r0mux107 multiply 12345 4.0001 -> 49381 Inexact Rounded +r0mux108 multiply 12345 4.9 -> 60491 Inexact Rounded +r0mux109 multiply 12345 4.99 -> 61601 Inexact Rounded +r0mux110 multiply 12345 4.999 -> 61712 Inexact Rounded +r0mux111 multiply 12345 4.9999 -> 61723 Inexact Rounded +r0mux112 multiply 12345 5 -> 61725 +r0mux113 multiply 12345 5.0001 -> 61726 Inexact Rounded +r0mux114 multiply 12345 5.001 -> 61737 Inexact Rounded +r0mux115 multiply 12345 5.01 -> 61848 Inexact Rounded +r0mux116 multiply 12345 12 -> 1.4814E+5 Rounded +r0mux117 multiply 12345 13 -> 1.6048E+5 Inexact Rounded +r0mux118 multiply 12355 12 -> 1.4826E+5 Rounded +r0mux119 multiply 12355 13 -> 1.6061E+5 Inexact Rounded + + +-- Power operator ----------------------------------------------------- + +r0pox101 power 12345 -5 -> 3.4877E-21 Inexact Rounded +r0pox102 power 12345 -4 -> 4.3056E-17 Inexact Rounded +r0pox103 power 12345 -3 -> 5.3152E-13 Inexact Rounded +r0pox104 power 12345 -2 -> 6.5617E-9 Inexact Rounded +r0pox105 power 12345 -1 -> 0.000081004 Inexact Rounded +r0pox106 power 12345 0 -> 1 +r0pox107 power 12345 1 -> 12345 +r0pox108 power 12345 2 -> 1.5239E+8 Inexact Rounded +r0pox109 power 12345 3 -> 1.8813E+12 Inexact Rounded +r0pox110 power 12345 4 -> 2.3226E+16 Inexact Rounded +r0pox111 power 12345 5 -> 2.8671E+20 Inexact Rounded +r0pox112 power 415 2 -> 1.7222E+5 Inexact Rounded +r0pox113 power 75 3 -> 4.2187E+5 Inexact Rounded + + +-- Underflow Subnormal and overflow values vary with rounding mode and sign +maxexponent: 999999999 +minexponent: -999999999 +-- [round down gives Nmax on first two and .0E... on the next two] +r0ovx100 multiply 10 9E+999999999 -> 9.9999E+999999999 Overflow Inexact Rounded +r0ovx101 multiply -10 9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded +r0ovx102 divide 1E-9 9E+999999999 -> 1E-1000000003 Underflow Subnormal Inexact Rounded +r0ovx104 divide -1E-9 9E+999999999 -> -1E-1000000003 Underflow Subnormal Inexact Rounded + +-- reprise rounding mode effect (using multiplies so precision directive used) +precision: 9 +maxexponent: 999999999 +r0mex412 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded +r0mex413 multiply 9.999E+999999999 10 -> 9.99999999E+999999999 Overflow Inexact Rounded + Modified: python/trunk/Lib/test/decimaltestdata/samequantum.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/samequantum.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/samequantum.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- samequantum.decTest -- check quantums match -- --- Copyright (c) IBM Corporation, 2001, 2003. All rights reserved. -- +-- Copyright (c) IBM Corporation, 2001, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 precision: 9 @@ -64,8 +64,44 @@ samq048 samequantum -0E-17 -0.0E-16 -> 1 samq049 samequantum -0E-17 -0.0E-17 -> 0 --- specials & combinations +-- Nmax, Nmin, Ntiny +samq051 samequantum 9.99999999E+999 9.99999999E+999 -> 1 +samq052 samequantum 1E-999 1E-999 -> 1 +samq053 samequantum 1.00000000E-999 1.00000000E-999 -> 1 +samq054 samequantum 1E-1007 1E-1007 -> 1 +samq055 samequantum 9.99999999E+999 9.99999999E+999 -> 1 +samq056 samequantum 1E-999 1E-999 -> 1 +samq057 samequantum 1.00000000E-999 1.00000000E-999 -> 1 +samq058 samequantum 1E-1007 1E-1007 -> 1 + +samq061 samequantum -1E-1007 -1E-1007 -> 1 +samq062 samequantum -1.00000000E-999 -1.00000000E-999 -> 1 +samq063 samequantum -1E-999 -1E-999 -> 1 +samq064 samequantum -9.99999999E+999 -9.99999999E+999 -> 1 +samq065 samequantum -1E-1007 -1E-1007 -> 1 +samq066 samequantum -1.00000000E-999 -1.00000000E-999 -> 1 +samq067 samequantum -1E-999 -1E-999 -> 1 +samq068 samequantum -9.99999999E+999 -9.99999999E+999 -> 1 + +samq071 samequantum -4E-1007 -1E-1007 -> 1 +samq072 samequantum -4.00000000E-999 -1.00004000E-999 -> 1 +samq073 samequantum -4E-999 -1E-999 -> 1 +samq074 samequantum -4.99999999E+999 -9.99949999E+999 -> 1 +samq075 samequantum -4E-1007 -1E-1007 -> 1 +samq076 samequantum -4.00000000E-999 -1.00400000E-999 -> 1 +samq077 samequantum -4E-999 -1E-999 -> 1 +samq078 samequantum -4.99999999E+999 -9.94999999E+999 -> 1 + +samq081 samequantum -4E-1006 -1E-1007 -> 0 +samq082 samequantum -4.00000000E-999 -1.00004000E-996 -> 0 +samq083 samequantum -4E-996 -1E-999 -> 0 +samq084 samequantum -4.99999999E+999 -9.99949999E+996 -> 0 +samq085 samequantum -4E-1006 -1E-1007 -> 0 +samq086 samequantum -4.00000000E-999 -1.00400000E-996 -> 0 +samq087 samequantum -4E-996 -1E-999 -> 0 +samq088 samequantum -4.99999999E+999 -9.94999999E+996 -> 0 +-- specials & combinations samq0110 samequantum -Inf -Inf -> 1 samq0111 samequantum -Inf Inf -> 1 samq0112 samequantum -Inf NaN -> 0 Modified: python/trunk/Lib/test/decimaltestdata/squareroot.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/squareroot.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/squareroot.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- squareroot.decTest -- decimal square root -- --- Copyright (c) IBM Corporation, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 2003, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 precision: 9 @@ -102,6 +102,8 @@ sqtx075 squareroot -100.00 -> NaN Invalid_operation sqtx076 squareroot -1.1000E+3 -> NaN Invalid_operation sqtx077 squareroot -1.10000E+3 -> NaN Invalid_operation +sqtx078 squareroot 1.000 -> 1.00 +sqtx079 squareroot 1.0000 -> 1.00 -- famous squares sqtx080 squareroot 1 -> 1 @@ -2926,19 +2928,26 @@ precision: 11 -- Etiny=-19 sqtx804 squareroot 1E-19 -> 3.162277660E-10 Underflow Subnormal Inexact Rounded -sqtx805 squareroot 10E-19 -> 1.0E-9 +sqtx805 squareroot 10E-19 -> 1.0E-9 -- exact precision: 12 -- Etiny=-20 sqtx806 squareroot 10E-20 -> 3.1622776602E-10 Underflow Subnormal Inexact Rounded -sqtx807 squareroot 1E-20 -> 1E-10 Subnormal -- Exact Subnormal case +sqtx807 squareroot 1E-20 -> 1E-10 Subnormal -- exact Subnormal case precision: 13 -- Etiny=-21 sqtx808 squareroot 1E-21 -> 3.1622776602E-11 Underflow Subnormal Inexact Rounded -sqtx809 squareroot 10E-21 -> 1.0E-10 Subnormal +sqtx809 squareroot 10E-21 -> 1.0E-10 Subnormal -- exact Subnormal case precision: 14 -- Etiny=-22 sqtx810 squareroot 1E-21 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded sqtx811 squareroot 10E-22 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded -sqtx812 squareroot 1E-22 -> 1E-11 Subnormal -- Exact Subnormal case +sqtx812 squareroot 1E-22 -> 1E-11 Subnormal -- exact Subnormal case +-- Not enough digits? +precision: 16 +maxExponent: 384 +minExponent: -383 +rounding: half_even +sqtx815 squareroot 1.0000000001000000E-78 -> 1.000000000050000E-39 Inexact Rounded +-- 1 234567890123456 -- special values maxexponent: 999 @@ -2954,5 +2963,842 @@ sqtx827 squareroot -NaN654 -> -NaN654 sqtx828 squareroot NaN1 -> NaN1 +-- payload decapitate +precision: 5 +sqtx840 squareroot -sNaN1234567890 -> -NaN67890 Invalid_operation + +------------------------------------------------------------------------ +-- +-- Special thanks to Mark Dickinson for tests in the range 8000-8999. +-- +-- Extra tests for the square root function, dealing with a variety of +-- corner cases. In particular, these tests concentrate on +-- (1) cases where the input precision exceeds the context precision, and +-- (2) cases where the input exponent is outside the current context, +-- and in particular when the result is subnormal +-- +-- maxexponent and minexponent are set to 9 and -9 for most of these +-- cases; only the precision changes. The rounding also does not +-- change, because it is ignored for this operation. +maxexponent: 9 +minexponent: -9 + +-- exact results, input precision > context precision +precision: 1 +sqtx8000 squareroot 0 -> 0 +sqtx8001 squareroot 1 -> 1 +sqtx8002 squareroot 4 -> 2 +sqtx8003 squareroot 9 -> 3 +sqtx8004 squareroot 16 -> 4 +sqtx8005 squareroot 25 -> 5 +sqtx8006 squareroot 36 -> 6 +sqtx8007 squareroot 49 -> 7 +sqtx8008 squareroot 64 -> 8 +sqtx8009 squareroot 81 -> 9 +sqtx8010 squareroot 100 -> 1E+1 Rounded +sqtx8011 squareroot 121 -> 1E+1 Inexact Rounded + +precision: 2 +sqtx8012 squareroot 0 -> 0 +sqtx8013 squareroot 1 -> 1 +sqtx8014 squareroot 4 -> 2 +sqtx8015 squareroot 9 -> 3 +sqtx8016 squareroot 16 -> 4 +sqtx8017 squareroot 25 -> 5 +sqtx8018 squareroot 36 -> 6 +sqtx8019 squareroot 49 -> 7 +sqtx8020 squareroot 64 -> 8 +sqtx8021 squareroot 81 -> 9 +sqtx8022 squareroot 100 -> 10 +sqtx8023 squareroot 121 -> 11 +sqtx8024 squareroot 144 -> 12 +sqtx8025 squareroot 169 -> 13 +sqtx8026 squareroot 196 -> 14 +sqtx8027 squareroot 225 -> 15 +sqtx8028 squareroot 256 -> 16 +sqtx8029 squareroot 289 -> 17 +sqtx8030 squareroot 324 -> 18 +sqtx8031 squareroot 361 -> 19 +sqtx8032 squareroot 400 -> 20 +sqtx8033 squareroot 441 -> 21 +sqtx8034 squareroot 484 -> 22 +sqtx8035 squareroot 529 -> 23 +sqtx8036 squareroot 576 -> 24 +sqtx8037 squareroot 625 -> 25 +sqtx8038 squareroot 676 -> 26 +sqtx8039 squareroot 729 -> 27 +sqtx8040 squareroot 784 -> 28 +sqtx8041 squareroot 841 -> 29 +sqtx8042 squareroot 900 -> 30 +sqtx8043 squareroot 961 -> 31 +sqtx8044 squareroot 1024 -> 32 +sqtx8045 squareroot 1089 -> 33 +sqtx8046 squareroot 1156 -> 34 +sqtx8047 squareroot 1225 -> 35 +sqtx8048 squareroot 1296 -> 36 +sqtx8049 squareroot 1369 -> 37 +sqtx8050 squareroot 1444 -> 38 +sqtx8051 squareroot 1521 -> 39 +sqtx8052 squareroot 1600 -> 40 +sqtx8053 squareroot 1681 -> 41 +sqtx8054 squareroot 1764 -> 42 +sqtx8055 squareroot 1849 -> 43 +sqtx8056 squareroot 1936 -> 44 +sqtx8057 squareroot 2025 -> 45 +sqtx8058 squareroot 2116 -> 46 +sqtx8059 squareroot 2209 -> 47 +sqtx8060 squareroot 2304 -> 48 +sqtx8061 squareroot 2401 -> 49 +sqtx8062 squareroot 2500 -> 50 +sqtx8063 squareroot 2601 -> 51 +sqtx8064 squareroot 2704 -> 52 +sqtx8065 squareroot 2809 -> 53 +sqtx8066 squareroot 2916 -> 54 +sqtx8067 squareroot 3025 -> 55 +sqtx8068 squareroot 3136 -> 56 +sqtx8069 squareroot 3249 -> 57 +sqtx8070 squareroot 3364 -> 58 +sqtx8071 squareroot 3481 -> 59 +sqtx8072 squareroot 3600 -> 60 +sqtx8073 squareroot 3721 -> 61 +sqtx8074 squareroot 3844 -> 62 +sqtx8075 squareroot 3969 -> 63 +sqtx8076 squareroot 4096 -> 64 +sqtx8077 squareroot 4225 -> 65 +sqtx8078 squareroot 4356 -> 66 +sqtx8079 squareroot 4489 -> 67 +sqtx8080 squareroot 4624 -> 68 +sqtx8081 squareroot 4761 -> 69 +sqtx8082 squareroot 4900 -> 70 +sqtx8083 squareroot 5041 -> 71 +sqtx8084 squareroot 5184 -> 72 +sqtx8085 squareroot 5329 -> 73 +sqtx8086 squareroot 5476 -> 74 +sqtx8087 squareroot 5625 -> 75 +sqtx8088 squareroot 5776 -> 76 +sqtx8089 squareroot 5929 -> 77 +sqtx8090 squareroot 6084 -> 78 +sqtx8091 squareroot 6241 -> 79 +sqtx8092 squareroot 6400 -> 80 +sqtx8093 squareroot 6561 -> 81 +sqtx8094 squareroot 6724 -> 82 +sqtx8095 squareroot 6889 -> 83 +sqtx8096 squareroot 7056 -> 84 +sqtx8097 squareroot 7225 -> 85 +sqtx8098 squareroot 7396 -> 86 +sqtx8099 squareroot 7569 -> 87 +sqtx8100 squareroot 7744 -> 88 +sqtx8101 squareroot 7921 -> 89 +sqtx8102 squareroot 8100 -> 90 +sqtx8103 squareroot 8281 -> 91 +sqtx8104 squareroot 8464 -> 92 +sqtx8105 squareroot 8649 -> 93 +sqtx8106 squareroot 8836 -> 94 +sqtx8107 squareroot 9025 -> 95 +sqtx8108 squareroot 9216 -> 96 +sqtx8109 squareroot 9409 -> 97 +sqtx8110 squareroot 9604 -> 98 +sqtx8111 squareroot 9801 -> 99 +sqtx8112 squareroot 10000 -> 1.0E+2 Rounded +sqtx8113 squareroot 10201 -> 1.0E+2 Inexact Rounded + +precision: 3 +sqtx8114 squareroot 841 -> 29 +sqtx8115 squareroot 1600 -> 40 +sqtx8116 squareroot 2209 -> 47 +sqtx8117 squareroot 9604 -> 98 +sqtx8118 squareroot 21316 -> 146 +sqtx8119 squareroot 52441 -> 229 +sqtx8120 squareroot 68644 -> 262 +sqtx8121 squareroot 69696 -> 264 +sqtx8122 squareroot 70225 -> 265 +sqtx8123 squareroot 76729 -> 277 +sqtx8124 squareroot 130321 -> 361 +sqtx8125 squareroot 171396 -> 414 +sqtx8126 squareroot 270400 -> 520 +sqtx8127 squareroot 279841 -> 529 +sqtx8128 squareroot 407044 -> 638 +sqtx8129 squareroot 408321 -> 639 +sqtx8130 squareroot 480249 -> 693 +sqtx8131 squareroot 516961 -> 719 +sqtx8132 squareroot 692224 -> 832 +sqtx8133 squareroot 829921 -> 911 + +-- selection of random exact results +precision: 6 +sqtx8134 squareroot 2.25E-12 -> 0.0000015 +sqtx8135 squareroot 8.41E-14 -> 2.9E-7 +sqtx8136 squareroot 6.241E-15 -> 7.9E-8 +sqtx8137 squareroot 5.041E+13 -> 7.1E+6 +sqtx8138 squareroot 4761 -> 69 +sqtx8139 squareroot 1.369E+17 -> 3.7E+8 +sqtx8140 squareroot 0.00002116 -> 0.0046 +sqtx8141 squareroot 7.29E+4 -> 2.7E+2 +sqtx8142 squareroot 4.624E-13 -> 6.8E-7 +sqtx8143 squareroot 3.969E+5 -> 6.3E+2 +sqtx8144 squareroot 3.73321E-11 -> 0.00000611 +sqtx8145 squareroot 5.61001E+17 -> 7.49E+8 +sqtx8146 squareroot 2.30400E-11 -> 0.00000480 +sqtx8147 squareroot 4.30336E+17 -> 6.56E+8 +sqtx8148 squareroot 0.057121 -> 0.239 +sqtx8149 squareroot 7.225E+17 -> 8.5E+8 +sqtx8150 squareroot 3.14721E+13 -> 5.61E+6 +sqtx8151 squareroot 4.61041E+17 -> 6.79E+8 +sqtx8152 squareroot 1.39876E-15 -> 3.74E-8 +sqtx8153 squareroot 6.19369E-9 -> 0.0000787 +sqtx8154 squareroot 1.620529E-10 -> 0.00001273 +sqtx8155 squareroot 1177.1761 -> 34.31 +sqtx8156 squareroot 67043344 -> 8188 +sqtx8157 squareroot 4.84E+6 -> 2.2E+3 +sqtx8158 squareroot 1.23904E+11 -> 3.52E+5 +sqtx8159 squareroot 32604100 -> 5710 +sqtx8160 squareroot 2.9757025E-11 -> 0.000005455 +sqtx8161 squareroot 6.3760225E-9 -> 0.00007985 +sqtx8162 squareroot 4.5198729E-11 -> 0.000006723 +sqtx8163 squareroot 1.4745600E-11 -> 0.000003840 +sqtx8164 squareroot 18964283.04 -> 4354.8 +sqtx8165 squareroot 3.308895529E+13 -> 5.7523E+6 +sqtx8166 squareroot 0.0028590409 -> 0.05347 +sqtx8167 squareroot 3572.213824 -> 59.768 +sqtx8168 squareroot 4.274021376E+15 -> 6.5376E+7 +sqtx8169 squareroot 4455476.64 -> 2110.8 +sqtx8170 squareroot 38.44 -> 6.2 +sqtx8171 squareroot 68.558400 -> 8.280 +sqtx8172 squareroot 715402009 -> 26747 +sqtx8173 squareroot 93.373569 -> 9.663 +sqtx8174 squareroot 2.62144000000E+15 -> 5.12000E+7 +sqtx8175 squareroot 7.48225000000E+15 -> 8.65000E+7 +sqtx8176 squareroot 3.38724000000E-9 -> 0.0000582000 +sqtx8177 squareroot 5.64001000000E-13 -> 7.51000E-7 +sqtx8178 squareroot 5.06944000000E-15 -> 7.12000E-8 +sqtx8179 squareroot 4.95616000000E+17 -> 7.04000E+8 +sqtx8180 squareroot 0.0000242064000000 -> 0.00492000 +sqtx8181 squareroot 1.48996000000E-15 -> 3.86000E-8 +sqtx8182 squareroot 9.37024000000E+17 -> 9.68000E+8 +sqtx8183 squareroot 7128900.0000 -> 2670.00 +sqtx8184 squareroot 8.2311610000E-10 -> 0.0000286900 +sqtx8185 squareroot 482747040000 -> 694800 +sqtx8186 squareroot 4.14478440000E+17 -> 6.43800E+8 +sqtx8187 squareroot 5.10510250000E-7 -> 0.000714500 +sqtx8188 squareroot 355096.810000 -> 595.900 +sqtx8189 squareroot 14288400.0000 -> 3780.00 +sqtx8190 squareroot 3.36168040000E-15 -> 5.79800E-8 +sqtx8191 squareroot 1.70899560000E-13 -> 4.13400E-7 +sqtx8192 squareroot 0.0000378348010000 -> 0.00615100 +sqtx8193 squareroot 2.00972890000E-13 -> 4.48300E-7 +sqtx8194 squareroot 4.07222659600E-13 -> 6.38140E-7 +sqtx8195 squareroot 131486012100 -> 362610 +sqtx8196 squareroot 818192611600 -> 904540 +sqtx8197 squareroot 9.8558323600E+16 -> 3.13940E+8 +sqtx8198 squareroot 5641.06144900 -> 75.1070 +sqtx8199 squareroot 4.58789475600E+17 -> 6.77340E+8 +sqtx8200 squareroot 3.21386948100E-9 -> 0.0000566910 +sqtx8201 squareroot 3.9441960000E-8 -> 0.000198600 +sqtx8202 squareroot 242723.728900 -> 492.670 +sqtx8203 squareroot 1874.89000000 -> 43.3000 +sqtx8204 squareroot 2.56722595684E+15 -> 5.06678E+7 +sqtx8205 squareroot 3.96437714689E-17 -> 6.29633E-9 +sqtx8206 squareroot 3.80106774784E-17 -> 6.16528E-9 +sqtx8207 squareroot 1.42403588496E-13 -> 3.77364E-7 +sqtx8208 squareroot 4604.84388100 -> 67.8590 +sqtx8209 squareroot 2157100869.16 -> 46444.6 +sqtx8210 squareroot 355288570.81 -> 18849.1 +sqtx8211 squareroot 4.69775901604E-11 -> 0.00000685402 +sqtx8212 squareroot 8.22115770436E+17 -> 9.06706E+8 +sqtx8213 squareroot 7.16443744900E+15 -> 8.46430E+7 +sqtx8214 squareroot 9.48995498896E+15 -> 9.74164E+7 +sqtx8215 squareroot 0.0000419091801129 -> 0.00647373 +sqtx8216 squareroot 5862627996.84 -> 76567.8 +sqtx8217 squareroot 9369537.3409 -> 3060.97 +sqtx8218 squareroot 7.74792529729E+17 -> 8.80223E+8 +sqtx8219 squareroot 1.08626931396E+17 -> 3.29586E+8 +sqtx8220 squareroot 8.89584739684E-7 -> 0.000943178 +sqtx8221 squareroot 4.0266040896E-18 -> 2.00664E-9 +sqtx8222 squareroot 9.27669480336E-7 -> 0.000963156 +sqtx8223 squareroot 0.00225497717956 -> 0.0474866 + +-- test use of round-half-even for ties +precision: 1 +sqtx8224 squareroot 225 -> 2E+1 Inexact Rounded +sqtx8225 squareroot 625 -> 2E+1 Inexact Rounded +sqtx8226 squareroot 1225 -> 4E+1 Inexact Rounded +sqtx8227 squareroot 2025 -> 4E+1 Inexact Rounded +sqtx8228 squareroot 3025 -> 6E+1 Inexact Rounded +sqtx8229 squareroot 4225 -> 6E+1 Inexact Rounded +sqtx8230 squareroot 5625 -> 8E+1 Inexact Rounded +sqtx8231 squareroot 7225 -> 8E+1 Inexact Rounded +sqtx8232 squareroot 9025 -> 1E+2 Inexact Rounded + +precision: 2 +sqtx8233 squareroot 11025 -> 1.0E+2 Inexact Rounded +sqtx8234 squareroot 13225 -> 1.2E+2 Inexact Rounded +sqtx8235 squareroot 15625 -> 1.2E+2 Inexact Rounded +sqtx8236 squareroot 18225 -> 1.4E+2 Inexact Rounded +sqtx8237 squareroot 21025 -> 1.4E+2 Inexact Rounded +sqtx8238 squareroot 24025 -> 1.6E+2 Inexact Rounded +sqtx8239 squareroot 27225 -> 1.6E+2 Inexact Rounded +sqtx8240 squareroot 30625 -> 1.8E+2 Inexact Rounded +sqtx8241 squareroot 34225 -> 1.8E+2 Inexact Rounded +sqtx8242 squareroot 38025 -> 2.0E+2 Inexact Rounded +sqtx8243 squareroot 42025 -> 2.0E+2 Inexact Rounded +sqtx8244 squareroot 46225 -> 2.2E+2 Inexact Rounded +sqtx8245 squareroot 50625 -> 2.2E+2 Inexact Rounded +sqtx8246 squareroot 55225 -> 2.4E+2 Inexact Rounded +sqtx8247 squareroot 60025 -> 2.4E+2 Inexact Rounded +sqtx8248 squareroot 65025 -> 2.6E+2 Inexact Rounded +sqtx8249 squareroot 70225 -> 2.6E+2 Inexact Rounded +sqtx8250 squareroot 75625 -> 2.8E+2 Inexact Rounded +sqtx8251 squareroot 81225 -> 2.8E+2 Inexact Rounded +sqtx8252 squareroot 87025 -> 3.0E+2 Inexact Rounded +sqtx8253 squareroot 93025 -> 3.0E+2 Inexact Rounded +sqtx8254 squareroot 99225 -> 3.2E+2 Inexact Rounded +sqtx8255 squareroot 105625 -> 3.2E+2 Inexact Rounded +sqtx8256 squareroot 112225 -> 3.4E+2 Inexact Rounded +sqtx8257 squareroot 119025 -> 3.4E+2 Inexact Rounded +sqtx8258 squareroot 126025 -> 3.6E+2 Inexact Rounded +sqtx8259 squareroot 133225 -> 3.6E+2 Inexact Rounded +sqtx8260 squareroot 140625 -> 3.8E+2 Inexact Rounded +sqtx8261 squareroot 148225 -> 3.8E+2 Inexact Rounded +sqtx8262 squareroot 156025 -> 4.0E+2 Inexact Rounded +sqtx8263 squareroot 164025 -> 4.0E+2 Inexact Rounded +sqtx8264 squareroot 172225 -> 4.2E+2 Inexact Rounded +sqtx8265 squareroot 180625 -> 4.2E+2 Inexact Rounded +sqtx8266 squareroot 189225 -> 4.4E+2 Inexact Rounded +sqtx8267 squareroot 198025 -> 4.4E+2 Inexact Rounded +sqtx8268 squareroot 207025 -> 4.6E+2 Inexact Rounded +sqtx8269 squareroot 216225 -> 4.6E+2 Inexact Rounded +sqtx8270 squareroot 225625 -> 4.8E+2 Inexact Rounded +sqtx8271 squareroot 235225 -> 4.8E+2 Inexact Rounded +sqtx8272 squareroot 245025 -> 5.0E+2 Inexact Rounded +sqtx8273 squareroot 255025 -> 5.0E+2 Inexact Rounded +sqtx8274 squareroot 265225 -> 5.2E+2 Inexact Rounded +sqtx8275 squareroot 275625 -> 5.2E+2 Inexact Rounded +sqtx8276 squareroot 286225 -> 5.4E+2 Inexact Rounded +sqtx8277 squareroot 297025 -> 5.4E+2 Inexact Rounded +sqtx8278 squareroot 308025 -> 5.6E+2 Inexact Rounded +sqtx8279 squareroot 319225 -> 5.6E+2 Inexact Rounded +sqtx8280 squareroot 330625 -> 5.8E+2 Inexact Rounded +sqtx8281 squareroot 342225 -> 5.8E+2 Inexact Rounded +sqtx8282 squareroot 354025 -> 6.0E+2 Inexact Rounded +sqtx8283 squareroot 366025 -> 6.0E+2 Inexact Rounded +sqtx8284 squareroot 378225 -> 6.2E+2 Inexact Rounded +sqtx8285 squareroot 390625 -> 6.2E+2 Inexact Rounded +sqtx8286 squareroot 403225 -> 6.4E+2 Inexact Rounded +sqtx8287 squareroot 416025 -> 6.4E+2 Inexact Rounded +sqtx8288 squareroot 429025 -> 6.6E+2 Inexact Rounded +sqtx8289 squareroot 442225 -> 6.6E+2 Inexact Rounded +sqtx8290 squareroot 455625 -> 6.8E+2 Inexact Rounded +sqtx8291 squareroot 469225 -> 6.8E+2 Inexact Rounded +sqtx8292 squareroot 483025 -> 7.0E+2 Inexact Rounded +sqtx8293 squareroot 497025 -> 7.0E+2 Inexact Rounded +sqtx8294 squareroot 511225 -> 7.2E+2 Inexact Rounded +sqtx8295 squareroot 525625 -> 7.2E+2 Inexact Rounded +sqtx8296 squareroot 540225 -> 7.4E+2 Inexact Rounded +sqtx8297 squareroot 555025 -> 7.4E+2 Inexact Rounded +sqtx8298 squareroot 570025 -> 7.6E+2 Inexact Rounded +sqtx8299 squareroot 585225 -> 7.6E+2 Inexact Rounded +sqtx8300 squareroot 600625 -> 7.8E+2 Inexact Rounded +sqtx8301 squareroot 616225 -> 7.8E+2 Inexact Rounded +sqtx8302 squareroot 632025 -> 8.0E+2 Inexact Rounded +sqtx8303 squareroot 648025 -> 8.0E+2 Inexact Rounded +sqtx8304 squareroot 664225 -> 8.2E+2 Inexact Rounded +sqtx8305 squareroot 680625 -> 8.2E+2 Inexact Rounded +sqtx8306 squareroot 697225 -> 8.4E+2 Inexact Rounded +sqtx8307 squareroot 714025 -> 8.4E+2 Inexact Rounded +sqtx8308 squareroot 731025 -> 8.6E+2 Inexact Rounded +sqtx8309 squareroot 748225 -> 8.6E+2 Inexact Rounded +sqtx8310 squareroot 765625 -> 8.8E+2 Inexact Rounded +sqtx8311 squareroot 783225 -> 8.8E+2 Inexact Rounded +sqtx8312 squareroot 801025 -> 9.0E+2 Inexact Rounded +sqtx8313 squareroot 819025 -> 9.0E+2 Inexact Rounded +sqtx8314 squareroot 837225 -> 9.2E+2 Inexact Rounded +sqtx8315 squareroot 855625 -> 9.2E+2 Inexact Rounded +sqtx8316 squareroot 874225 -> 9.4E+2 Inexact Rounded +sqtx8317 squareroot 893025 -> 9.4E+2 Inexact Rounded +sqtx8318 squareroot 912025 -> 9.6E+2 Inexact Rounded +sqtx8319 squareroot 931225 -> 9.6E+2 Inexact Rounded +sqtx8320 squareroot 950625 -> 9.8E+2 Inexact Rounded +sqtx8321 squareroot 970225 -> 9.8E+2 Inexact Rounded +sqtx8322 squareroot 990025 -> 1.0E+3 Inexact Rounded + +precision: 6 +sqtx8323 squareroot 88975734963025 -> 9.43270E+6 Inexact Rounded +sqtx8324 squareroot 71085555000625 -> 8.43122E+6 Inexact Rounded +sqtx8325 squareroot 39994304.051025 -> 6324.10 Inexact Rounded +sqtx8326 squareroot 0.000007327172265625 -> 0.00270688 Inexact Rounded +sqtx8327 squareroot 1.0258600439025E-13 -> 3.20290E-7 Inexact Rounded +sqtx8328 squareroot 0.0034580574275625 -> 0.0588052 Inexact Rounded +sqtx8329 squareroot 7.6842317700625E-7 -> 0.000876598 Inexact Rounded +sqtx8330 squareroot 1263834495.2025 -> 35550.4 Inexact Rounded +sqtx8331 squareroot 433970666460.25 -> 658764 Inexact Rounded +sqtx8332 squareroot 4.5879286230625E-7 -> 0.000677342 Inexact Rounded +sqtx8333 squareroot 0.0029305603306225 -> 0.0541346 Inexact Rounded +sqtx8334 squareroot 70218282.733225 -> 8379.64 Inexact Rounded +sqtx8335 squareroot 11942519.082025 -> 3455.80 Inexact Rounded +sqtx8336 squareroot 0.0021230668905625 -> 0.0460768 Inexact Rounded +sqtx8337 squareroot 0.90081833411025 -> 0.949114 Inexact Rounded +sqtx8338 squareroot 5.5104120936225E-17 -> 7.42322E-9 Inexact Rounded +sqtx8339 squareroot 0.10530446854225 -> 0.324506 Inexact Rounded +sqtx8340 squareroot 8.706069866025E-14 -> 2.95060E-7 Inexact Rounded +sqtx8341 squareroot 23838.58800625 -> 154.398 Inexact Rounded +sqtx8342 squareroot 0.0013426911275625 -> 0.0366428 Inexact Rounded + +-- test use of round-half-even in underflow situations + +-- precisions 2; all cases where result is both subnormal and a tie +precision: 2 +sqtx8343 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +sqtx8344 squareroot 2.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8345 squareroot 6.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8346 squareroot 1.225E-19 -> 4E-10 Underflow Subnormal Inexact Rounded +sqtx8347 squareroot 2.025E-19 -> 4E-10 Underflow Subnormal Inexact Rounded +sqtx8348 squareroot 3.025E-19 -> 6E-10 Underflow Subnormal Inexact Rounded +sqtx8349 squareroot 4.225E-19 -> 6E-10 Underflow Subnormal Inexact Rounded +sqtx8350 squareroot 5.625E-19 -> 8E-10 Underflow Subnormal Inexact Rounded +sqtx8351 squareroot 7.225E-19 -> 8E-10 Underflow Subnormal Inexact Rounded +sqtx8352 squareroot 9.025E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded + +-- precision 3, input precision <= 5 +precision: 3 +sqtx8353 squareroot 2.5E-23 -> 0E-11 Underflow Subnormal Inexact Rounded Clamped +sqtx8354 squareroot 2.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8355 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8356 squareroot 1.225E-21 -> 4E-11 Underflow Subnormal Inexact Rounded +sqtx8357 squareroot 2.025E-21 -> 4E-11 Underflow Subnormal Inexact Rounded +sqtx8358 squareroot 3.025E-21 -> 6E-11 Underflow Subnormal Inexact Rounded +sqtx8359 squareroot 4.225E-21 -> 6E-11 Underflow Subnormal Inexact Rounded +sqtx8360 squareroot 5.625E-21 -> 8E-11 Underflow Subnormal Inexact Rounded +sqtx8361 squareroot 7.225E-21 -> 8E-11 Underflow Subnormal Inexact Rounded +sqtx8362 squareroot 9.025E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8363 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8364 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded +sqtx8365 squareroot 1.5625E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded +sqtx8366 squareroot 1.8225E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded +sqtx8367 squareroot 2.1025E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded +sqtx8368 squareroot 2.4025E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded +sqtx8369 squareroot 2.7225E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded +sqtx8370 squareroot 3.0625E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded +sqtx8371 squareroot 3.4225E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded +sqtx8372 squareroot 3.8025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded +sqtx8373 squareroot 4.2025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded +sqtx8374 squareroot 4.6225E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded +sqtx8375 squareroot 5.0625E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded +sqtx8376 squareroot 5.5225E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded +sqtx8377 squareroot 6.0025E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded +sqtx8378 squareroot 6.5025E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded +sqtx8379 squareroot 7.0225E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded +sqtx8380 squareroot 7.5625E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded +sqtx8381 squareroot 8.1225E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded +sqtx8382 squareroot 8.7025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded +sqtx8383 squareroot 9.3025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded +sqtx8384 squareroot 9.9225E-20 -> 3.2E-10 Underflow Subnormal Inexact Rounded + +--precision 4, input precision <= 4 +precision: 4 +sqtx8385 squareroot 2.5E-25 -> 0E-12 Underflow Subnormal Inexact Rounded Clamped +sqtx8386 squareroot 2.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded +sqtx8387 squareroot 6.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded +sqtx8388 squareroot 1.225E-23 -> 4E-12 Underflow Subnormal Inexact Rounded +sqtx8389 squareroot 2.025E-23 -> 4E-12 Underflow Subnormal Inexact Rounded +sqtx8390 squareroot 3.025E-23 -> 6E-12 Underflow Subnormal Inexact Rounded +sqtx8391 squareroot 4.225E-23 -> 6E-12 Underflow Subnormal Inexact Rounded +sqtx8392 squareroot 5.625E-23 -> 8E-12 Underflow Subnormal Inexact Rounded +sqtx8393 squareroot 7.225E-23 -> 8E-12 Underflow Subnormal Inexact Rounded +sqtx8394 squareroot 9.025E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded + +--precision 5, input precision <= 5 +precision: 5 +sqtx8395 squareroot 2.5E-27 -> 0E-13 Underflow Subnormal Inexact Rounded Clamped +sqtx8396 squareroot 2.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded +sqtx8397 squareroot 6.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded +sqtx8398 squareroot 1.225E-25 -> 4E-13 Underflow Subnormal Inexact Rounded +sqtx8399 squareroot 2.025E-25 -> 4E-13 Underflow Subnormal Inexact Rounded +sqtx8400 squareroot 3.025E-25 -> 6E-13 Underflow Subnormal Inexact Rounded +sqtx8401 squareroot 4.225E-25 -> 6E-13 Underflow Subnormal Inexact Rounded +sqtx8402 squareroot 5.625E-25 -> 8E-13 Underflow Subnormal Inexact Rounded +sqtx8403 squareroot 7.225E-25 -> 8E-13 Underflow Subnormal Inexact Rounded +sqtx8404 squareroot 9.025E-25 -> 1.0E-12 Underflow Subnormal Inexact Rounded +sqtx8405 squareroot 1.1025E-24 -> 1.0E-12 Underflow Subnormal Inexact Rounded +sqtx8406 squareroot 1.3225E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded +sqtx8407 squareroot 1.5625E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded +sqtx8408 squareroot 1.8225E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded +sqtx8409 squareroot 2.1025E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded +sqtx8410 squareroot 2.4025E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded +sqtx8411 squareroot 2.7225E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded +sqtx8412 squareroot 3.0625E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded +sqtx8413 squareroot 3.4225E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded +sqtx8414 squareroot 3.8025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded +sqtx8415 squareroot 4.2025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded +sqtx8416 squareroot 4.6225E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded +sqtx8417 squareroot 5.0625E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded +sqtx8418 squareroot 5.5225E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded +sqtx8419 squareroot 6.0025E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded +sqtx8420 squareroot 6.5025E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded +sqtx8421 squareroot 7.0225E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded +sqtx8422 squareroot 7.5625E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded +sqtx8423 squareroot 8.1225E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded +sqtx8424 squareroot 8.7025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded +sqtx8425 squareroot 9.3025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded +sqtx8426 squareroot 9.9225E-24 -> 3.2E-12 Underflow Subnormal Inexact Rounded + +-- a random selection of values that Python2.5.1 rounds incorrectly +precision: 1 +sqtx8427 squareroot 227 -> 2E+1 Inexact Rounded +sqtx8428 squareroot 625 -> 2E+1 Inexact Rounded +sqtx8429 squareroot 1215 -> 3E+1 Inexact Rounded +sqtx8430 squareroot 2008 -> 4E+1 Inexact Rounded +sqtx8431 squareroot 2020 -> 4E+1 Inexact Rounded +sqtx8432 squareroot 2026 -> 5E+1 Inexact Rounded +sqtx8433 squareroot 2027 -> 5E+1 Inexact Rounded +sqtx8434 squareroot 2065 -> 5E+1 Inexact Rounded +sqtx8435 squareroot 2075 -> 5E+1 Inexact Rounded +sqtx8436 squareroot 2088 -> 5E+1 Inexact Rounded +sqtx8437 squareroot 3049 -> 6E+1 Inexact Rounded +sqtx8438 squareroot 3057 -> 6E+1 Inexact Rounded +sqtx8439 squareroot 3061 -> 6E+1 Inexact Rounded +sqtx8440 squareroot 3092 -> 6E+1 Inexact Rounded +sqtx8441 squareroot 4222 -> 6E+1 Inexact Rounded +sqtx8442 squareroot 5676 -> 8E+1 Inexact Rounded +sqtx8443 squareroot 5686 -> 8E+1 Inexact Rounded +sqtx8444 squareroot 7215 -> 8E+1 Inexact Rounded +sqtx8445 squareroot 9086 -> 1E+2 Inexact Rounded +sqtx8446 squareroot 9095 -> 1E+2 Inexact Rounded + +precision: 2 +sqtx8447 squareroot 1266 -> 36 Inexact Rounded +sqtx8448 squareroot 2552 -> 51 Inexact Rounded +sqtx8449 squareroot 5554 -> 75 Inexact Rounded +sqtx8450 squareroot 7832 -> 88 Inexact Rounded +sqtx8451 squareroot 13201 -> 1.1E+2 Inexact Rounded +sqtx8452 squareroot 15695 -> 1.3E+2 Inexact Rounded +sqtx8453 squareroot 18272 -> 1.4E+2 Inexact Rounded +sqtx8454 squareroot 21026 -> 1.5E+2 Inexact Rounded +sqtx8455 squareroot 24069 -> 1.6E+2 Inexact Rounded +sqtx8456 squareroot 34277 -> 1.9E+2 Inexact Rounded +sqtx8457 squareroot 46233 -> 2.2E+2 Inexact Rounded +sqtx8458 squareroot 46251 -> 2.2E+2 Inexact Rounded +sqtx8459 squareroot 46276 -> 2.2E+2 Inexact Rounded +sqtx8460 squareroot 70214 -> 2.6E+2 Inexact Rounded +sqtx8461 squareroot 81249 -> 2.9E+2 Inexact Rounded +sqtx8462 squareroot 81266 -> 2.9E+2 Inexact Rounded +sqtx8463 squareroot 93065 -> 3.1E+2 Inexact Rounded +sqtx8464 squareroot 93083 -> 3.1E+2 Inexact Rounded +sqtx8465 squareroot 99230 -> 3.2E+2 Inexact Rounded +sqtx8466 squareroot 99271 -> 3.2E+2 Inexact Rounded + +precision: 3 +sqtx8467 squareroot 11349 -> 107 Inexact Rounded +sqtx8468 squareroot 26738 -> 164 Inexact Rounded +sqtx8469 squareroot 31508 -> 178 Inexact Rounded +sqtx8470 squareroot 44734 -> 212 Inexact Rounded +sqtx8471 squareroot 44738 -> 212 Inexact Rounded +sqtx8472 squareroot 51307 -> 227 Inexact Rounded +sqtx8473 squareroot 62259 -> 250 Inexact Rounded +sqtx8474 squareroot 75901 -> 276 Inexact Rounded +sqtx8475 squareroot 76457 -> 277 Inexact Rounded +sqtx8476 squareroot 180287 -> 425 Inexact Rounded +sqtx8477 squareroot 202053 -> 450 Inexact Rounded +sqtx8478 squareroot 235747 -> 486 Inexact Rounded +sqtx8479 squareroot 256537 -> 506 Inexact Rounded +sqtx8480 squareroot 299772 -> 548 Inexact Rounded +sqtx8481 squareroot 415337 -> 644 Inexact Rounded +sqtx8482 squareroot 617067 -> 786 Inexact Rounded +sqtx8483 squareroot 628022 -> 792 Inexact Rounded +sqtx8484 squareroot 645629 -> 804 Inexact Rounded +sqtx8485 squareroot 785836 -> 886 Inexact Rounded +sqtx8486 squareroot 993066 -> 997 Inexact Rounded + +precision: 6 +sqtx8487 squareroot 14917781 -> 3862.35 Inexact Rounded +sqtx8488 squareroot 17237238 -> 4151.78 Inexact Rounded +sqtx8489 squareroot 18054463 -> 4249.05 Inexact Rounded +sqtx8490 squareroot 19990694 -> 4471.10 Inexact Rounded +sqtx8491 squareroot 29061855 -> 5390.90 Inexact Rounded +sqtx8492 squareroot 49166257 -> 7011.87 Inexact Rounded +sqtx8493 squareroot 53082086 -> 7285.75 Inexact Rounded +sqtx8494 squareroot 56787909 -> 7535.78 Inexact Rounded +sqtx8495 squareroot 81140019 -> 9007.78 Inexact Rounded +sqtx8496 squareroot 87977554 -> 9379.64 Inexact Rounded +sqtx8497 squareroot 93624683 -> 9675.98 Inexact Rounded +sqtx8498 squareroot 98732747 -> 9936.44 Inexact Rounded +sqtx8499 squareroot 99222813 -> 9961.06 Inexact Rounded +sqtx8500 squareroot 143883626 -> 11995.2 Inexact Rounded +sqtx8501 squareroot 180433301 -> 13432.5 Inexact Rounded +sqtx8502 squareroot 227034020 -> 15067.6 Inexact Rounded +sqtx8503 squareroot 283253992 -> 16830.2 Inexact Rounded +sqtx8504 squareroot 617047954 -> 24840.4 Inexact Rounded +sqtx8505 squareroot 736870094 -> 27145.4 Inexact Rounded +sqtx8506 squareroot 897322915 -> 29955.3 Inexact Rounded + +-- results close to minimum normal +precision: 1 +sqtx8507 squareroot 1E-20 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped +sqtx8508 squareroot 1E-19 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped +sqtx8509 squareroot 1E-18 -> 1E-9 + +precision: 2 +sqtx8510 squareroot 8.1E-19 -> 9E-10 Subnormal +sqtx8511 squareroot 8.10E-19 -> 9E-10 Subnormal Rounded +sqtx8512 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded +sqtx8513 squareroot 9.02E-19 -> 9E-10 Underflow Subnormal Inexact Rounded +sqtx8514 squareroot 9.03E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8515 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8516 squareroot 9.9E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8517 squareroot 9.91E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8518 squareroot 9.92E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8519 squareroot 9.95E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8520 squareroot 9.98E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8521 squareroot 9.99E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +sqtx8522 squareroot 1E-18 -> 1E-9 +sqtx8523 squareroot 1.0E-18 -> 1.0E-9 +sqtx8524 squareroot 1.00E-18 -> 1.0E-9 +sqtx8525 squareroot 1.000E-18 -> 1.0E-9 Rounded +sqtx8526 squareroot 1.0000E-18 -> 1.0E-9 Rounded +sqtx8527 squareroot 1.01E-18 -> 1.0E-9 Inexact Rounded +sqtx8528 squareroot 1.02E-18 -> 1.0E-9 Inexact Rounded +sqtx8529 squareroot 1.1E-18 -> 1.0E-9 Inexact Rounded + +precision: 3 +sqtx8530 squareroot 8.1E-19 -> 9E-10 Subnormal +sqtx8531 squareroot 8.10E-19 -> 9.0E-10 Subnormal +sqtx8532 squareroot 8.100E-19 -> 9.0E-10 Subnormal +sqtx8533 squareroot 8.1000E-19 -> 9.0E-10 Subnormal Rounded +sqtx8534 squareroot 9.9E-19 -> 9.9E-10 Underflow Subnormal Inexact Rounded +sqtx8535 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded +sqtx8536 squareroot 9.99E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded +sqtx8537 squareroot 9.998E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded +sqtx8538 squareroot 1E-18 -> 1E-9 +sqtx8539 squareroot 1.0E-18 -> 1.0E-9 +sqtx8540 squareroot 1.00E-18 -> 1.0E-9 +sqtx8541 squareroot 1.000E-18 -> 1.00E-9 +sqtx8542 squareroot 1.0000E-18 -> 1.00E-9 +sqtx8543 squareroot 1.00000E-18 -> 1.00E-9 Rounded +sqtx8544 squareroot 1.000000E-18 -> 1.00E-9 Rounded +sqtx8545 squareroot 1.01E-18 -> 1.00E-9 Inexact Rounded +sqtx8546 squareroot 1.02E-18 -> 1.01E-9 Inexact Rounded + +-- result exactly representable with precision p, but not necessarily +-- exactly representable as a subnormal; check the correct flags are raised +precision: 2 +sqtx8547 squareroot 1.21E-20 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8548 squareroot 1.44E-20 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8549 squareroot 9.61E-20 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8550 squareroot 8.836E-19 -> 9E-10 Underflow Subnormal Inexact Rounded +sqtx8551 squareroot 9.216E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded + +precision: 3 +sqtx8552 squareroot 1.21E-22 -> 1E-11 Underflow Subnormal Inexact Rounded +sqtx8553 squareroot 1.21E-20 -> 1.1E-10 Subnormal +sqtx8554 squareroot 1.96E-22 -> 1E-11 Underflow Subnormal Inexact Rounded +sqtx8555 squareroot 1.96E-20 -> 1.4E-10 Subnormal +sqtx8556 squareroot 2.56E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8557 squareroot 4.00E-22 -> 2E-11 Subnormal Rounded +sqtx8558 squareroot 7.84E-22 -> 3E-11 Underflow Subnormal Inexact Rounded +sqtx8559 squareroot 9.801E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8560 squareroot 9.801E-19 -> 9.9E-10 Subnormal +sqtx8561 squareroot 1.0201E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8562 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded +sqtx8563 squareroot 1.1236E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded +sqtx8564 squareroot 1.2996E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded +sqtx8565 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded + +-- A selection of subnormal results prone to double rounding errors +precision: 2 +sqtx8566 squareroot 2.3E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +sqtx8567 squareroot 2.4E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +sqtx8568 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped +sqtx8569 squareroot 2.6E-21 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8570 squareroot 2.7E-21 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8571 squareroot 2.8E-21 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8572 squareroot 2.2E-20 -> 1E-10 Underflow Subnormal Inexact Rounded +sqtx8573 squareroot 2.3E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8574 squareroot 2.4E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8575 squareroot 6.2E-20 -> 2E-10 Underflow Subnormal Inexact Rounded +sqtx8576 squareroot 6.3E-20 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8577 squareroot 6.4E-20 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8578 squareroot 6.5E-20 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8579 squareroot 1.2E-19 -> 3E-10 Underflow Subnormal Inexact Rounded +sqtx8580 squareroot 2.0E-19 -> 4E-10 Underflow Subnormal Inexact Rounded +sqtx8581 squareroot 4.2E-19 -> 6E-10 Underflow Subnormal Inexact Rounded +sqtx8582 squareroot 5.6E-19 -> 7E-10 Underflow Subnormal Inexact Rounded +sqtx8583 squareroot 5.7E-19 -> 8E-10 Underflow Subnormal Inexact Rounded +sqtx8584 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded +sqtx8585 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded +precision: 3 +sqtx8586 squareroot 2.6E-23 -> 1E-11 Underflow Subnormal Inexact Rounded +sqtx8587 squareroot 2.22E-22 -> 1E-11 Underflow Subnormal Inexact Rounded +sqtx8588 squareroot 6.07E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8589 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded +sqtx8590 squareroot 6.45E-22 -> 3E-11 Underflow Subnormal Inexact Rounded +sqtx8591 squareroot 6.50E-22 -> 3E-11 Underflow Subnormal Inexact Rounded +sqtx8592 squareroot 1.22E-21 -> 3E-11 Underflow Subnormal Inexact Rounded +sqtx8593 squareroot 1.24E-21 -> 4E-11 Underflow Subnormal Inexact Rounded +sqtx8594 squareroot 4.18E-21 -> 6E-11 Underflow Subnormal Inexact Rounded +sqtx8595 squareroot 7.19E-21 -> 8E-11 Underflow Subnormal Inexact Rounded +sqtx8596 squareroot 8.94E-21 -> 9E-11 Underflow Subnormal Inexact Rounded +sqtx8597 squareroot 1.81E-20 -> 1.3E-10 Underflow Subnormal Inexact Rounded +sqtx8598 squareroot 4.64E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded +sqtx8599 squareroot 5.06E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded +sqtx8600 squareroot 5.08E-20 -> 2.3E-10 Underflow Subnormal Inexact Rounded +sqtx8601 squareroot 7.00E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded +sqtx8602 squareroot 1.81E-19 -> 4.3E-10 Underflow Subnormal Inexact Rounded +sqtx8603 squareroot 6.64E-19 -> 8.1E-10 Underflow Subnormal Inexact Rounded +sqtx8604 squareroot 7.48E-19 -> 8.6E-10 Underflow Subnormal Inexact Rounded +sqtx8605 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded +precision: 4 +sqtx8606 squareroot 6.24E-24 -> 2E-12 Underflow Subnormal Inexact Rounded +sqtx8607 squareroot 7.162E-23 -> 8E-12 Underflow Subnormal Inexact Rounded +sqtx8608 squareroot 7.243E-23 -> 9E-12 Underflow Subnormal Inexact Rounded +sqtx8609 squareroot 8.961E-23 -> 9E-12 Underflow Subnormal Inexact Rounded +sqtx8610 squareroot 9.029E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded +sqtx8611 squareroot 4.624E-22 -> 2.2E-11 Underflow Subnormal Inexact Rounded +sqtx8612 squareroot 5.980E-22 -> 2.4E-11 Underflow Subnormal Inexact Rounded +sqtx8613 squareroot 6.507E-22 -> 2.6E-11 Underflow Subnormal Inexact Rounded +sqtx8614 squareroot 1.483E-21 -> 3.9E-11 Underflow Subnormal Inexact Rounded +sqtx8615 squareroot 3.903E-21 -> 6.2E-11 Underflow Subnormal Inexact Rounded +sqtx8616 squareroot 8.733E-21 -> 9.3E-11 Underflow Subnormal Inexact Rounded +sqtx8617 squareroot 1.781E-20 -> 1.33E-10 Underflow Subnormal Inexact Rounded +sqtx8618 squareroot 6.426E-20 -> 2.53E-10 Underflow Subnormal Inexact Rounded +sqtx8619 squareroot 7.102E-20 -> 2.66E-10 Underflow Subnormal Inexact Rounded +sqtx8620 squareroot 7.535E-20 -> 2.74E-10 Underflow Subnormal Inexact Rounded +sqtx8621 squareroot 9.892E-20 -> 3.15E-10 Underflow Subnormal Inexact Rounded +sqtx8622 squareroot 1.612E-19 -> 4.01E-10 Underflow Subnormal Inexact Rounded +sqtx8623 squareroot 1.726E-19 -> 4.15E-10 Underflow Subnormal Inexact Rounded +sqtx8624 squareroot 1.853E-19 -> 4.30E-10 Underflow Subnormal Inexact Rounded +sqtx8625 squareroot 4.245E-19 -> 6.52E-10 Underflow Subnormal Inexact Rounded + +-- clamping and overflow for large exponents +precision: 1 +sqtx8626 squareroot 1E+18 -> 1E+9 +sqtx8627 squareroot 1E+19 -> 3E+9 Inexact Rounded +sqtx8628 squareroot 9E+19 -> 9E+9 Inexact Rounded +sqtx8629 squareroot 9.1E+19 -> Infinity Overflow Inexact Rounded +sqtx8630 squareroot 1E+20 -> Infinity Overflow Inexact Rounded + +precision: 2 +sqtx8631 squareroot 1E+18 -> 1E+9 +sqtx8632 squareroot 1.0E+18 -> 1.0E+9 +sqtx8633 squareroot 1.00E+18 -> 1.0E+9 +sqtx8634 squareroot 1.000E+18 -> 1.0E+9 Rounded +sqtx8635 squareroot 1E+20 -> Infinity Overflow Inexact Rounded +clamp: 1 +sqtx8636 squareroot 1E+18 -> 1.0E+9 Clamped +sqtx8637 squareroot 1.0E+18 -> 1.0E+9 +sqtx8638 squareroot 1E+20 -> Infinity Overflow Inexact Rounded +clamp: 0 + +precision: 6 +sqtx8639 squareroot 1E+18 -> 1E+9 +sqtx8640 squareroot 1.0000000000E+18 -> 1.00000E+9 +sqtx8641 squareroot 1.00000000000E+18 -> 1.00000E+9 Rounded +sqtx8642 squareroot 1E+20 -> Infinity Overflow Inexact Rounded +clamp: 1 +sqtx8643 squareroot 1E+8 -> 1E+4 +sqtx8644 squareroot 1E+10 -> 1.0E+5 Clamped +sqtx8645 squareroot 1.0E+10 -> 1.0E+5 +sqtx8646 squareroot 1E+12 -> 1.00E+6 Clamped +sqtx8647 squareroot 1.0E+12 -> 1.00E+6 Clamped +sqtx8648 squareroot 1.00E+12 -> 1.00E+6 Clamped +sqtx8649 squareroot 1.000E+12 -> 1.00E+6 +sqtx8650 squareroot 1E+18 -> 1.00000E+9 Clamped +sqtx8651 squareroot 1.00000000E+18 -> 1.00000E+9 Clamped +sqtx8652 squareroot 1.000000000E+18 -> 1.00000E+9 +sqtx8653 squareroot 1E+20 -> Infinity Overflow Inexact Rounded +clamp: 0 + +-- The following example causes a TypeError in Python 2.5.1 +precision: 3 +maxexponent: 9 +minexponent: -9 +sqtx8654 squareroot 10000000000 -> 1.00E+5 Rounded + +-- Additional tricky cases of underflown subnormals +rounding: half_even +precision: 5 +maxexponent: 999 +minexponent: -999 +sqtx8700 squareroot 2.8073E-2000 -> 1.675E-1000 Underflow Subnormal Inexact Rounded +sqtx8701 squareroot 2.8883E-2000 -> 1.699E-1000 Underflow Subnormal Inexact Rounded +sqtx8702 squareroot 3.1524E-2000 -> 1.775E-1000 Underflow Subnormal Inexact Rounded +sqtx8703 squareroot 3.2382E-2000 -> 1.799E-1000 Underflow Subnormal Inexact Rounded +sqtx8704 squareroot 3.5175E-2000 -> 1.875E-1000 Underflow Subnormal Inexact Rounded +sqtx8705 squareroot 3.6081E-2000 -> 1.899E-1000 Underflow Subnormal Inexact Rounded +sqtx8706 squareroot 3.9026E-2000 -> 1.975E-1000 Underflow Subnormal Inexact Rounded +sqtx8707 squareroot 3.9980E-2000 -> 1.999E-1000 Underflow Subnormal Inexact Rounded +sqtx8708 squareroot 4.3077E-2000 -> 2.075E-1000 Underflow Subnormal Inexact Rounded +sqtx8709 squareroot 4.4079E-2000 -> 2.099E-1000 Underflow Subnormal Inexact Rounded +sqtx8710 squareroot 4.7328E-2000 -> 2.175E-1000 Underflow Subnormal Inexact Rounded +sqtx8711 squareroot 4.8378E-2000 -> 2.199E-1000 Underflow Subnormal Inexact Rounded +sqtx8712 squareroot 5.1779E-2000 -> 2.275E-1000 Underflow Subnormal Inexact Rounded +sqtx8713 squareroot 5.2877E-2000 -> 2.299E-1000 Underflow Subnormal Inexact Rounded +sqtx8714 squareroot 5.6430E-2000 -> 2.375E-1000 Underflow Subnormal Inexact Rounded +sqtx8715 squareroot 5.7576E-2000 -> 2.399E-1000 Underflow Subnormal Inexact Rounded +sqtx8716 squareroot 6.1281E-2000 -> 2.475E-1000 Underflow Subnormal Inexact Rounded +sqtx8717 squareroot 6.2475E-2000 -> 2.499E-1000 Underflow Subnormal Inexact Rounded +sqtx8718 squareroot 6.6332E-2000 -> 2.575E-1000 Underflow Subnormal Inexact Rounded +sqtx8719 squareroot 6.7574E-2000 -> 2.599E-1000 Underflow Subnormal Inexact Rounded +sqtx8720 squareroot 7.1583E-2000 -> 2.675E-1000 Underflow Subnormal Inexact Rounded +sqtx8721 squareroot 7.2873E-2000 -> 2.699E-1000 Underflow Subnormal Inexact Rounded +sqtx8722 squareroot 7.7034E-2000 -> 2.775E-1000 Underflow Subnormal Inexact Rounded +sqtx8723 squareroot 7.8372E-2000 -> 2.799E-1000 Underflow Subnormal Inexact Rounded +sqtx8724 squareroot 8.2685E-2000 -> 2.875E-1000 Underflow Subnormal Inexact Rounded +sqtx8725 squareroot 8.4071E-2000 -> 2.899E-1000 Underflow Subnormal Inexact Rounded +sqtx8726 squareroot 8.8536E-2000 -> 2.975E-1000 Underflow Subnormal Inexact Rounded +sqtx8727 squareroot 8.9970E-2000 -> 2.999E-1000 Underflow Subnormal Inexact Rounded +sqtx8728 squareroot 9.4587E-2000 -> 3.075E-1000 Underflow Subnormal Inexact Rounded +sqtx8729 squareroot 9.6069E-2000 -> 3.099E-1000 Underflow Subnormal Inexact Rounded +-- (End of Mark Dickinson's testcases.) + + +-- Some additional edge cases +maxexponent: 9 +minexponent: -9 +precision: 2 +sqtx9000 squareroot 9980.01 -> 1.0E+2 Inexact Rounded +precision: 3 +sqtx9001 squareroot 9980.01 -> 99.9 +precision: 4 +sqtx9002 squareroot 9980.01 -> 99.9 + +-- Exact from over-precise +precision: 4 +sqtx9003 squareroot 11025 -> 105 +precision: 3 +sqtx9004 squareroot 11025 -> 105 +precision: 2 +sqtx9005 squareroot 11025 -> 1.0E+2 Inexact Rounded +precision: 1 +sqtx9006 squareroot 11025 -> 1E+2 Inexact Rounded + +-- Out-of-bounds zeros +precision: 4 +sqtx9010 squareroot 0E-9 -> 0.00000 +sqtx9011 squareroot 0E-10 -> 0.00000 +sqtx9012 squareroot 0E-11 -> 0.000000 +sqtx9013 squareroot 0E-12 -> 0.000000 +sqtx9014 squareroot 0E-13 -> 0E-7 +sqtx9015 squareroot 0E-14 -> 0E-7 +sqtx9020 squareroot 0E-17 -> 0E-9 +sqtx9021 squareroot 0E-20 -> 0E-10 +sqtx9022 squareroot 0E-22 -> 0E-11 +sqtx9023 squareroot 0E-24 -> 0E-12 +sqtx9024 squareroot 0E-25 -> 0E-12 Clamped +sqtx9025 squareroot 0E-26 -> 0E-12 Clamped +sqtx9026 squareroot 0E-27 -> 0E-12 Clamped +sqtx9027 squareroot 0E-28 -> 0E-12 Clamped + +sqtx9030 squareroot 0E+8 -> 0E+4 +sqtx9031 squareroot 0E+10 -> 0E+5 +sqtx9032 squareroot 0E+12 -> 0E+6 +sqtx9033 squareroot 0E+14 -> 0E+7 +sqtx9034 squareroot 0E+15 -> 0E+7 +sqtx9035 squareroot 0E+16 -> 0E+8 +sqtx9036 squareroot 0E+18 -> 0E+9 +sqtx9037 squareroot 0E+19 -> 0E+9 +sqtx9038 squareroot 0E+20 -> 0E+9 Clamped +sqtx9039 squareroot 0E+21 -> 0E+9 Clamped +sqtx9040 squareroot 0E+22 -> 0E+9 Clamped + + -- Null test -sqtx900 squareroot # -> NaN Invalid_operation +sqtx9900 squareroot # -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/subtract.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/subtract.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/subtract.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- subtract.decTest -- decimal subtraction -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 extended: 1 precision: 9 @@ -805,9 +805,9 @@ subx1015 subtract 0 0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow subx1016 subtract 0 0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow subx1017 subtract 0 0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow -subx1018 subtract 0 0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow -subx1019 subtract 0 0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow -subx1020 subtract 0 0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow +subx1018 subtract 0 0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +subx1019 subtract 0 0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped +subx1020 subtract 0 0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped subx1030 subtract 0 -1.00E-999 -> 1.00E-999 subx1031 subtract 0 -0.1E-999 -> 1E-1000 Subnormal @@ -818,9 +818,9 @@ subx1035 subtract 0 -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow subx1036 subtract 0 -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow subx1037 subtract 0 -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow -subx1038 subtract 0 -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -subx1039 subtract 0 -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow -subx1040 subtract 0 -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow +subx1038 subtract 0 -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +subx1039 subtract 0 -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped +subx1040 subtract 0 -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped -- some non-zero subnormal subtracts -- subx1056 is a tricky case @@ -831,7 +831,7 @@ subx1053 subtract 0.100E-999 0.1E-999 -> 0E-1001 Clamped subx1054 subtract 0.01E-999 0.1E-999 -> -9E-1001 Subnormal subx1055 subtract 0.999E-999 0.1E-999 -> 9.0E-1000 Inexact Rounded Subnormal Underflow -subx1056 subtract 0.099E-999 0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow +subx1056 subtract 0.099E-999 0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped subx1057 subtract 0.009E-999 0.1E-999 -> -9E-1001 Inexact Rounded Subnormal Underflow subx1058 subtract 0.001E-999 0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow subx1059 subtract 0.0009E-999 0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow @@ -849,15 +849,25 @@ subx1105 subtract 1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow subx1106 subtract 1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow -subx1111 subtract 1.2345678E-80 1.2345671E-80 -> 0E-83 Inexact Rounded Subnormal Underflow -subx1112 subtract 1.2345678E-80 1.2345618E-80 -> 0E-83 Inexact Rounded Subnormal Underflow -subx1113 subtract 1.2345678E-80 1.2345178E-80 -> 0E-83 Inexact Rounded Subnormal Underflow -subx1114 subtract 1.2345678E-80 1.2341678E-80 -> 0E-83 Inexact Rounded Subnormal Underflow +subx1111 subtract 1.2345678E-80 1.2345671E-80 -> 0E-83 Inexact Rounded Subnormal Underflow Clamped +subx1112 subtract 1.2345678E-80 1.2345618E-80 -> 0E-83 Inexact Rounded Subnormal Underflow Clamped +subx1113 subtract 1.2345678E-80 1.2345178E-80 -> 0E-83 Inexact Rounded Subnormal Underflow Clamped +subx1114 subtract 1.2345678E-80 1.2341678E-80 -> 0E-83 Inexact Rounded Subnormal Underflow Clamped subx1115 subtract 1.2345678E-80 1.2315678E-80 -> 3E-83 Rounded Subnormal subx1116 subtract 1.2345678E-80 1.2145678E-80 -> 2.0E-82 Rounded Subnormal subx1117 subtract 1.2345678E-80 1.1345678E-80 -> 1.00E-81 Rounded Subnormal subx1118 subtract 1.2345678E-80 0.2345678E-80 -> 1.000E-80 Rounded Subnormal +precision: 34 +rounding: half_up +maxExponent: 6144 +minExponent: -6143 +-- Examples from SQL proposal (Krishna Kulkarni) +subx1125 subtract 130E-2 120E-2 -> 0.10 +subx1126 subtract 130E-2 12E-1 -> 0.10 +subx1127 subtract 130E-2 1E0 -> 0.30 +subx1128 subtract 1E2 1E4 -> -9.9E+3 + -- Null tests subx9990 subtract 10 # -> NaN Invalid_operation subx9991 subtract # 10 -> NaN Invalid_operation Modified: python/trunk/Lib/test/decimaltestdata/testall.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/testall.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/testall.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- testall.decTest -- run all general decimal arithmetic testcases -- --- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- +-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,41 +17,70 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- core tests (using Extended: 1) -------------------------------------- dectest: base + dectest: abs dectest: add +dectest: and dectest: clamp +dectest: class dectest: compare +dectest: comparesig +dectest: comparetotal +dectest: comparetotmag +dectest: copy +dectest: copyabs +dectest: copynegate +dectest: copysign dectest: divide dectest: divideint +dectest: exp +dectest: fma dectest: inexact +dectest: invert +dectest: ln +dectest: logb +dectest: log10 dectest: max +dectest: maxmag dectest: min +dectest: minmag dectest: minus dectest: multiply -dectest: normalize +dectest: nextminus +dectest: nextplus +dectest: nexttoward +dectest: or dectest: plus dectest: power +dectest: powersqrt dectest: quantize dectest: randoms +dectest: reduce -- [was called normalize] dectest: remainder dectest: remaindernear dectest: rescale -- [obsolete] +dectest: rotate dectest: rounding dectest: samequantum +dectest: scaleb +dectest: shift dectest: squareroot dectest: subtract dectest: tointegral +dectest: tointegralx dectest: trim +dectest: xor --- The next are for the Strawman 4d concrete representations -dectest: decimal32 -dectest: decimal64 -dectest: decimal128 - +-- The next are for the Strawman 4d concrete representations and +-- tests at those sizes [including dsEncode, ddEncode, and dqEncode, +-- which replace decimal32, decimal64, and decimal128] +dectest: decSingle +dectest: decDouble +dectest: decQuad -- General 31->33-digit boundary tests dectest: randombound32 Modified: python/trunk/Lib/test/decimaltestdata/tointegral.decTest ============================================================================== --- python/trunk/Lib/test/decimaltestdata/tointegral.decTest (original) +++ python/trunk/Lib/test/decimaltestdata/tointegral.decTest Thu Sep 13 20:13:15 2007 @@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -- tointegral.decTest -- round decimal to integral value -- --- Copyright (c) IBM Corporation, 2001, 2003. All rights reserved. -- +-- Copyright (c) IBM Corporation, 2001, 2007. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- @@ -17,7 +17,7 @@ -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc at uk.ibm.com -- ------------------------------------------------------------------------ -version: 2.39 +version: 2.56 -- This set of tests tests the extended specification 'round-to-integral -- value' operation (from IEEE 854, later modified in 754r). @@ -174,3 +174,68 @@ intx206 tointegral 7.89E+77 -> 7.89E+77 intx207 tointegral -Inf -> -Infinity + +-- all rounding modes +rounding: half_even + +intx210 tointegral 55.5 -> 56 +intx211 tointegral 56.5 -> 56 +intx212 tointegral 57.5 -> 58 +intx213 tointegral -55.5 -> -56 +intx214 tointegral -56.5 -> -56 +intx215 tointegral -57.5 -> -58 + +rounding: half_up + +intx220 tointegral 55.5 -> 56 +intx221 tointegral 56.5 -> 57 +intx222 tointegral 57.5 -> 58 +intx223 tointegral -55.5 -> -56 +intx224 tointegral -56.5 -> -57 +intx225 tointegral -57.5 -> -58 + +rounding: half_down + +intx230 tointegral 55.5 -> 55 +intx231 tointegral 56.5 -> 56 +intx232 tointegral 57.5 -> 57 +intx233 tointegral -55.5 -> -55 +intx234 tointegral -56.5 -> -56 +intx235 tointegral -57.5 -> -57 + +rounding: up + +intx240 tointegral 55.3 -> 56 +intx241 tointegral 56.3 -> 57 +intx242 tointegral 57.3 -> 58 +intx243 tointegral -55.3 -> -56 +intx244 tointegral -56.3 -> -57 +intx245 tointegral -57.3 -> -58 + +rounding: down + +intx250 tointegral 55.7 -> 55 +intx251 tointegral 56.7 -> 56 +intx252 tointegral 57.7 -> 57 +intx253 tointegral -55.7 -> -55 +intx254 tointegral -56.7 -> -56 +intx255 tointegral -57.7 -> -57 + +rounding: ceiling + +intx260 tointegral 55.3 -> 56 +intx261 tointegral 56.3 -> 57 +intx262 tointegral 57.3 -> 58 +intx263 tointegral -55.3 -> -55 +intx264 tointegral -56.3 -> -56 +intx265 tointegral -57.3 -> -57 + +rounding: floor + +intx270 tointegral 55.7 -> 55 +intx271 tointegral 56.7 -> 56 +intx272 tointegral 57.7 -> 57 +intx273 tointegral -55.7 -> -56 +intx274 tointegral -56.7 -> -57 +intx275 tointegral -57.7 -> -58 + Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Thu Sep 13 20:13:15 2007 @@ -65,9 +65,7 @@ # Slower, since it runs some things several times. EXTENDEDERRORTEST = False - #Map the test cases' error names to the actual errors - ErrorNames = {'clamped' : Clamped, 'conversion_syntax' : InvalidOperation, 'division_by_zero' : DivisionByZero, @@ -92,20 +90,62 @@ 'half_down' : ROUND_HALF_DOWN, 'half_even' : ROUND_HALF_EVEN, 'half_up' : ROUND_HALF_UP, - 'up' : ROUND_UP} + 'up' : ROUND_UP, + '05up' : ROUND_05UP} # Name adapter to be able to change the Decimal and Context # interface without changing the test files from Cowlishaw nameAdapter = {'toeng':'to_eng_string', 'tosci':'to_sci_string', 'samequantum':'same_quantum', - 'tointegral':'to_integral', + 'tointegral':'to_integral_value', + 'tointegralx':'to_integral_exact', 'remaindernear':'remainder_near', 'divideint':'divide_int', 'squareroot':'sqrt', 'apply':'_apply', + 'class':'number_class', + 'comparesig':'compare_signal', + 'comparetotal':'compare_total', + 'comparetotmag':'compare_total_mag', + 'copyabs':'copy_abs', + 'copy':'copy_decimal', + 'copynegate':'copy_negate', + 'copysign':'copy_sign', + 'and':'logical_and', + 'or':'logical_or', + 'xor':'logical_xor', + 'invert':'logical_invert', + 'maxmag':'max_mag', + 'minmag':'min_mag', + 'nextminus':'next_minus', + 'nextplus':'next_plus', + 'nexttoward':'next_toward', + 'reduce':'normalize', } +# For some operations (currently exp, ln, log10, power), the decNumber +# reference implementation imposes additional restrictions on the +# context and operands. These restrictions are not part of the +# specification; however, the effect of these restrictions does show +# up in some of the testcases. We skip testcases that violate these +# restrictions, since Decimal behaves differently from decNumber for +# these testcases so these testcases would otherwise fail. + +decNumberRestricted = ('power', 'ln', 'log10', 'exp') +DEC_MAX_MATH = 999999 +def outside_decNumber_bounds(v, context): + if (context.prec > DEC_MAX_MATH or + context.Emax > DEC_MAX_MATH or + -context.Emin > DEC_MAX_MATH): + return True + if not v._is_special and v and ( + len(v._int) > DEC_MAX_MATH or + v.adjusted() > DEC_MAX_MATH or + v.adjusted() < 1-2*DEC_MAX_MATH): + return True + return False + class DecimalTest(unittest.TestCase): """Class which tests the Decimal class against the test cases. @@ -142,10 +182,6 @@ #print line try: t = self.eval_line(line) - except InvalidOperation: - print 'Error in test cases:' - print line - continue except DecimalException, exception: #Exception raised where there shoudn't have been one. self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line) @@ -194,7 +230,8 @@ Sides = s.split('->') L = Sides[0].strip().split() id = L[0] -# print id, + if DEBUG: + print "Test ", id, funct = L[1].lower() valstemp = L[2:] L = Sides[1].strip().split() @@ -246,11 +283,27 @@ self.context.traps[error] = 0 v = self.context.create_decimal(v) else: - v = Decimal(v) + v = Decimal(v, self.context) vals.append(v) ans = FixQuotes(ans) + # skip tests that are related to bounds imposed in the decNumber + # reference implementation + if fname in decNumberRestricted: + if fname == 'power': + if not (vals[1]._isinteger() and + -1999999997 <= vals[1] <= 999999999): + if outside_decNumber_bounds(vals[0], self.context) or \ + outside_decNumber_bounds(vals[1], self.context): + #print "Skipping test %s" % s + return + else: + if outside_decNumber_bounds(vals[0], self.context): + #print "Skipping test %s" % s + return + + if EXTENDEDERRORTEST and fname not in ('to_sci_string', 'to_eng_string'): for error in theirexceptions: self.context.traps[error] = 1 @@ -264,6 +317,8 @@ else: self.fail("Did not raise %s in %s" % (error, s)) self.context.traps[error] = 0 + if DEBUG: + print "--", self.context try: result = str(funct(*vals)) if fname == 'same_quantum': @@ -283,8 +338,7 @@ self.assertEqual(result, ans, 'Incorrect answer for ' + s + ' -- got ' + result) self.assertEqual(myexceptions, theirexceptions, - 'Incorrect flags set in ' + s + ' -- got ' \ - + str(myexceptions)) + 'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions)) return def getexceptions(self): @@ -301,17 +355,6 @@ def change_clamp(self, clamp): self.context._clamp = clamp -# Dynamically build custom test definition for each file in the test -# directory and add the definitions to the DecimalTest class. This -# procedure insures that new files do not get skipped. -for filename in os.listdir(directory): - if '.decTest' not in filename: - continue - head, tail = filename.split('.') - tester = lambda self, f=filename: self.eval_file(directory + f) - setattr(DecimalTest, 'test_' + head, tester) - del filename, head, tail, tester - # The following classes test the behaviour of Decimal according to PEP 327 @@ -853,6 +896,10 @@ a.sort() self.assertEqual(a, b) + # with None + self.assertFalse(Decimal(1) < None) + self.assertTrue(Decimal(1) > None) + def test_copy_and_deepcopy_methods(self): d = Decimal('43.24') c = copy.copy(d) @@ -960,8 +1007,8 @@ d1 = Decimal('-25e55') b1 = Decimal('-25e55') - d2 = Decimal('33e-33') - b2 = Decimal('33e-33') + d2 = Decimal('33e+33') + b2 = Decimal('33e+33') def checkSameDec(operation, useOther=False): if useOther: @@ -1091,7 +1138,59 @@ self.assert_(new_ctx is not set_ctx, 'did not copy the context') self.assert_(set_ctx is enter_ctx, '__enter__ returned wrong context') -def test_main(arith=False, verbose=None): +class ContextFlags(unittest.TestCase): + def test_flags_irrelevant(self): + # check that the result (numeric result + flags raised) of an + # arithmetic operation doesn't depend on the current flags + + context = Context(prec=9, Emin = -999999999, Emax = 999999999, + rounding=ROUND_HALF_EVEN, traps=[], flags=[]) + + # operations that raise various flags, in the form (function, arglist) + operations = [ + (context._apply, [Decimal("100E-1000000009")]), + (context.sqrt, [Decimal(2)]), + (context.add, [Decimal("1.23456789"), Decimal("9.87654321")]), + (context.multiply, [Decimal("1.23456789"), Decimal("9.87654321")]), + (context.subtract, [Decimal("1.23456789"), Decimal("9.87654321")]), + ] + + # try various flags individually, then a whole lot at once + flagsets = [[Inexact], [Rounded], [Underflow], [Clamped], [Subnormal], + [Inexact, Rounded, Underflow, Clamped, Subnormal]] + + for fn, args in operations: + # find answer and flags raised using a clean context + context.clear_flags() + ans = fn(*args) + flags = [k for k, v in context.flags.items() if v] + + for extra_flags in flagsets: + # set flags, before calling operation + context.clear_flags() + for flag in extra_flags: + context._raise_error(flag) + new_ans = fn(*args) + + # flags that we expect to be set after the operation + expected_flags = list(flags) + for flag in extra_flags: + if flag not in expected_flags: + expected_flags.append(flag) + expected_flags.sort() + + # flags we actually got + new_flags = [k for k,v in context.flags.items() if v] + new_flags.sort() + + self.assertEqual(ans, new_ans, + "operation produces different answers depending on flags set: " + + "expected %s, got %s." % (ans, new_ans)) + self.assertEqual(new_flags, expected_flags, + "operation raises different flags depending on flags set: " + + "expected %s, got %s" % (expected_flags, new_flags)) + +def test_main(arith=False, verbose=None, todo_tests=None, debug=None): """ Execute the tests. Runs all arithmetic tests if arith is True or if the "decimal" resource @@ -1099,35 +1198,58 @@ """ init() - global TEST_ALL + global TEST_ALL, DEBUG TEST_ALL = arith or is_resource_enabled('decimal') + DEBUG = debug + + if todo_tests is None: + test_classes = [ + DecimalExplicitConstructionTest, + DecimalImplicitConstructionTest, + DecimalArithmeticOperatorsTest, + DecimalUseOfContextTest, + DecimalUsabilityTest, + DecimalPythonAPItests, + ContextAPItests, + DecimalTest, + WithStatementTest, + ContextFlags + ] + else: + test_classes = [DecimalTest] + + # Dynamically build custom test definition for each file in the test + # directory and add the definitions to the DecimalTest class. This + # procedure insures that new files do not get skipped. + for filename in os.listdir(directory): + if '.decTest' not in filename or filename.startswith("."): + continue + head, tail = filename.split('.') + if todo_tests is not None and head not in todo_tests: + continue + tester = lambda self, f=filename: self.eval_file(directory + f) + setattr(DecimalTest, 'test_' + head, tester) + del filename, head, tail, tester - test_classes = [ - DecimalExplicitConstructionTest, - DecimalImplicitConstructionTest, - DecimalArithmeticOperatorsTest, - DecimalUseOfContextTest, - DecimalUsabilityTest, - DecimalPythonAPItests, - ContextAPItests, - DecimalTest, - WithStatementTest, - ] try: run_unittest(*test_classes) - import decimal as DecimalModule - run_doctest(DecimalModule, verbose) + if todo_tests is None: + import decimal as DecimalModule + run_doctest(DecimalModule, verbose) finally: setcontext(ORIGINAL_CONTEXT) if __name__ == '__main__': - # Calling with no arguments runs all tests. - # Calling with "Skip" will skip over 90% of the arithmetic tests. - if len(sys.argv) == 1: - test_main(arith=True, verbose=True) - elif len(sys.argv) == 2: - arith = sys.argv[1].lower() != 'skip' - test_main(arith=arith, verbose=True) + import optparse + p = optparse.OptionParser("test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]") + p.add_option('--debug', '-d', action='store_true', help='shows the test number and context before each test') + p.add_option('--skip', '-s', action='store_true', help='skip over 90% of the arithmetic tests') + (opt, args) = p.parse_args() + + if opt.skip: + test_main(arith=False, verbose=True) + elif args: + test_main(arith=True, verbose=True, todo_tests=args, debug=opt.debug) else: - raise ValueError("test called with wrong arguments, use test_Decimal [Skip]") + test_main(arith=True, verbose=True) From python-checkins at python.org Thu Sep 13 20:26:13 2007 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 13 Sep 2007 20:26:13 +0200 (CEST) Subject: [Python-checkins] r58144 - python/branches/release25-maint/Tools/buildbot/buildmsi.bat python/branches/release25-maint/Tools/buildbot/getchm.py Message-ID: <20070913182613.DD97E1E4018@bag.python.org> Author: martin.v.loewis Date: Thu Sep 13 20:26:13 2007 New Revision: 58144 Added: python/branches/release25-maint/Tools/buildbot/buildmsi.bat (contents, props changed) python/branches/release25-maint/Tools/buildbot/getchm.py (contents, props changed) Log: Add 2.5 MSI builder. Added: python/branches/release25-maint/Tools/buildbot/buildmsi.bat ============================================================================== --- (empty file) +++ python/branches/release25-maint/Tools/buildbot/buildmsi.bat Thu Sep 13 20:26:13 2007 @@ -0,0 +1,23 @@ + at rem Used by the buildbot "buildmsi" step. + +cmd /c Tools\buildbot\external.bat + at rem build release versions of things +call "%VS71COMNTOOLS%vsvars32.bat" +if not exist ..\db-4.4.20\build_win32\release\libdb44s.lib ( + devenv ..\db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static +) + + at rem build Python +cmd /q/c Tools\buildbot\kill_python.bat +devenv.com /useenv /build Release PCbuild\pcbuild.sln + + at rem fetch the documentation +python Tools/buildbot/getchm.py + + at rem buold the MSI file +cd PC +nmake /f icons.mak +cd ..\Tools\msi +del *.msi +nmake /f msisupport.mak +%HOST_PYTHON% msi.py Added: python/branches/release25-maint/Tools/buildbot/getchm.py ============================================================================== --- (empty file) +++ python/branches/release25-maint/Tools/buildbot/getchm.py Thu Sep 13 20:26:13 2007 @@ -0,0 +1,6 @@ +# We cannot build the documentation on Windows, so download an old +# one instead. +import urllib, os +if not os.path.exists("Doc/python25.chm"): + urllib.urlretrieve("http://www.python.org/ftp/python/2.5.1/Python25.chm", + "Doc/python25.chm") From python-checkins at python.org Thu Sep 13 20:42:09 2007 From: python-checkins at python.org (facundo.batista) Date: Thu, 13 Sep 2007 20:42:09 +0200 (CEST) Subject: [Python-checkins] r58145 - python/trunk/Lib/decimal.py Message-ID: <20070913184209.87FEA1E400E@bag.python.org> Author: facundo.batista Date: Thu Sep 13 20:42:09 2007 New Revision: 58145 Modified: python/trunk/Lib/decimal.py Log: Put the parameter watchexp back in (changed watchexp from an int to a bool). Also second argument to watchexp is now converted to Decimal, just as with all the other two-argument operations. Thanks Mark Dickinson. Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Thu Sep 13 20:42:09 2007 @@ -2160,12 +2160,13 @@ end -= 1 return Decimal( (dup._sign, dup._int[:end], exp) ) - - def quantize(self, exp, rounding=None, context=None): + def quantize(self, exp, rounding=None, context=None, watchexp=True): """Quantize self so its exponent is the same as that of exp. Similar to self._rescale(exp._exp) but with error checking. """ + exp = _convert_other(exp, raiseit=True) + if context is None: context = getcontext() if rounding is None: @@ -2182,6 +2183,16 @@ return context._raise_error(InvalidOperation, 'quantize with one INF') + # if we're not watching exponents, do a simple rescale + if not watchexp: + ans = self._rescale(exp._exp, rounding) + # raise Inexact and Rounded where appropriate + if ans._exp > self._exp: + context._raise_error(Rounded) + if ans != self: + context._raise_error(Inexact) + return ans + # exp._exp should be between Etiny and Emax if not (context.Etiny() <= exp._exp <= context.Emax): return context._raise_error(InvalidOperation, From buildbot at python.org Thu Sep 13 20:51:23 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 13 Sep 2007 18:51:23 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 trunk Message-ID: <20070913185123.901211E4008@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%20trunk/builds/46 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,mark.summerfield BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Thu Sep 13 21:46:51 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 13 Sep 2007 19:46:51 +0000 Subject: [Python-checkins] buildbot failure in 2.5.msi Message-ID: <20070913194652.09F501E400D@bag.python.org> The Buildbot has detected a new failure of 2.5.msi. Full details are available at: http://www.python.org/dev/buildbot/all/2.5.msi/builds/1 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The web-page 'rebuild' button was pressed by 'Martin von Loewis': Fix upload file name Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Thu Sep 13 22:54:48 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 13 Sep 2007 20:54:48 +0000 Subject: [Python-checkins] buildbot failure in 2.6.msi Message-ID: <20070913205448.404A71E4008@bag.python.org> The Buildbot has detected a new failure of 2.6.msi. Full details are available at: http://www.python.org/dev/buildbot/all/2.6.msi/builds/7 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The web-page 'force build' button was pressed by 'Martin von Loewis': Test upload Build Source Stamp: [branch trun] HEAD Blamelist: BUILD FAILED: failed svn sincerely, -The Buildbot From python-checkins at python.org Fri Sep 14 00:49:15 2007 From: python-checkins at python.org (andrew.kuchling) Date: Fri, 14 Sep 2007 00:49:15 +0200 (CEST) Subject: [Python-checkins] r58146 - peps/trunk/pep-0352.txt peps/trunk/pep-3100.txt peps/trunk/pep-3119.txt Message-ID: <20070913224915.2557D1E400E@bag.python.org> Author: andrew.kuchling Date: Fri Sep 14 00:49:14 2007 New Revision: 58146 Modified: peps/trunk/pep-0352.txt peps/trunk/pep-3100.txt peps/trunk/pep-3119.txt Log: Typo fixes Modified: peps/trunk/pep-0352.txt ============================================================================== --- peps/trunk/pep-0352.txt (original) +++ peps/trunk/pep-0352.txt Fri Sep 14 00:49:14 2007 @@ -276,7 +276,7 @@ [#pycon2007-sprint-email]_, it was discovered that the transition was very painful, especially for C extension modules. It was decided that it would be better to deprecate the ``message`` attribute in -Python 2.6 (and remove in Python 2.7 and Python 3.0) and consider a +Python 2.6 (and remove it in Python 2.7 and Python 3.0) and consider a more long-term transition strategy in Python 3.0 to remove multiple-argument support in BaseException in preference of accepting only a single argument. Thus the introduction of ``message`` and the Modified: peps/trunk/pep-3100.txt ============================================================================== --- peps/trunk/pep-3100.txt (original) +++ peps/trunk/pep-3100.txt Fri Sep 14 00:49:14 2007 @@ -190,7 +190,7 @@ * ``intern()``: put in ``sys`` [2]_, [22]_ [done] * ``reduce()``: write a loop instead [2]_, [9]_ [done] * ``xrange()``: use ``range()`` instead [1]_ [See range() above] [done] -* ``StandardError``: this is a relic from the original exception hierachy; +* ``StandardError``: this is a relic from the original exception hierarchy; subclass ``Exception`` instead. [done] Modified: peps/trunk/pep-3119.txt ============================================================================== --- peps/trunk/pep-3119.txt (original) +++ peps/trunk/pep-3119.txt Fri Sep 14 00:49:14 2007 @@ -162,7 +162,7 @@ mod_python [16]_). Another example would be someone who wants to define a generic -function (PEP 3124) for any sequences that has an ``append()`` method. +function (PEP 3124) for any sequence that has an ``append()`` method. The ``Sequence`` ABC (see below) doesn't promise the ``append()`` method, while ``MutableSequence`` requires not only ``append()`` but also various other mutating methods. @@ -512,7 +512,7 @@ return hasattr(C, "__bases__") and hasattr(C, "__len__") This has the advantage of not requiring explicit registration. -However, the semantics hard to get exactly right given the confusing +However, the semantics are hard to get exactly right given the confusing semantics of instance attributes vs. class attributes, and that a class is an instance of its metaclass; the check for ``__bases__`` is only an approximation of the desired semantics. **Strawman:** Let's From python-checkins at python.org Fri Sep 14 00:49:35 2007 From: python-checkins at python.org (andrew.kuchling) Date: Fri, 14 Sep 2007 00:49:35 +0200 (CEST) Subject: [Python-checkins] r58147 - python/trunk/Doc/whatsnew/2.6.rst Message-ID: <20070913224935.693F81E4015@bag.python.org> Author: andrew.kuchling Date: Fri Sep 14 00:49:34 2007 New Revision: 58147 Modified: python/trunk/Doc/whatsnew/2.6.rst Log: Add various items Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Fri Sep 14 00:49:34 2007 @@ -2,6 +2,9 @@ What's New in Python 2.6 **************************** +.. % XXX mention switch to reST for documentation +.. % XXX mention switch to Roundup for bug tracking + :Author: A.M. Kuchling :Release: |release| :Date: |today| @@ -67,12 +70,367 @@ .. % sets module deprecated .. % ====================================================================== +Python 3.0 +================ + +.. % XXX add general comment about Python 3.0 features in 2.6 + +.. % XXX mention -3 switch + +A new command-line switch, :option:`-3`, enables warnings +about features that will be removed in Python 3.0. You can run code +with this switch to see how much work will be necessary to port +code to 3.0. + +.. seealso:: + + The 3xxx series of PEPs, which describes the development process for + Python 3.0 and various features that have been accepted, rejected, + or are still under consideration. + +PEP 343: The 'with' statement +============================= + +The previous version, Python 2.5, added the ':keyword:`with`' +statement an optional feature, to be enabled by a ``from __future__ +import generators`` directive. In 2.6 the statement no longer need to +be specially enabled; this means that :keyword:`with` is now always a +keyword. The rest of this section is a copy of the corresponding +section from "What's New in Python 2.5" document; if you read +it back when Python 2.5 came out, you can skip the rest of this +section. + +The ':keyword:`with`' statement clarifies code that previously would use +``try...finally`` blocks to ensure that clean-up code is executed. In this +section, I'll discuss the statement as it will commonly be used. In the next +section, I'll examine the implementation details and show how to write objects +for use with this statement. + +The ':keyword:`with`' statement is a new control-flow structure whose basic +structure is:: + + with expression [as variable]: + with-block + +The expression is evaluated, and it should result in an object that supports the +context management protocol (that is, has :meth:`__enter__` and :meth:`__exit__` +methods. + +The object's :meth:`__enter__` is called before *with-block* is executed and +therefore can run set-up code. It also may return a value that is bound to the +name *variable*, if given. (Note carefully that *variable* is *not* assigned +the result of *expression*.) + +After execution of the *with-block* is finished, the object's :meth:`__exit__` +method is called, even if the block raised an exception, and can therefore run +clean-up code. + +Some standard Python objects now support the context management protocol and can +be used with the ':keyword:`with`' statement. File objects are one example:: + + with open('/etc/passwd', 'r') as f: + for line in f: + print line + ... more processing code ... + +After this statement has executed, the file object in *f* will have been +automatically closed, even if the :keyword:`for` loop raised an exception part- +way through the block. + +.. note:: + + In this case, *f* is the same object created by :func:`open`, because + :meth:`file.__enter__` returns *self*. + +The :mod:`threading` module's locks and condition variables also support the +':keyword:`with`' statement:: + + lock = threading.Lock() + with lock: + # Critical section of code + ... + +The lock is acquired before the block is executed and always released once the +block is complete. + +The new :func:`localcontext` function in the :mod:`decimal` module makes it easy +to save and restore the current decimal context, which encapsulates the desired +precision and rounding characteristics for computations:: + + from decimal import Decimal, Context, localcontext + + # Displays with default precision of 28 digits + v = Decimal('578') + print v.sqrt() + + with localcontext(Context(prec=16)): + # All code in this block uses a precision of 16 digits. + # The original context is restored on exiting the block. + print v.sqrt() + + +.. _new-26-context-managers: + +Writing Context Managers +------------------------ + +Under the hood, the ':keyword:`with`' statement is fairly complicated. Most +people will only use ':keyword:`with`' in company with existing objects and +don't need to know these details, so you can skip the rest of this section if +you like. Authors of new objects will need to understand the details of the +underlying implementation and should keep reading. + +A high-level explanation of the context management protocol is: + +* The expression is evaluated and should result in an object called a "context + manager". The context manager must have :meth:`__enter__` and :meth:`__exit__` + methods. + +* The context manager's :meth:`__enter__` method is called. The value returned + is assigned to *VAR*. If no ``'as VAR'`` clause is present, the value is simply + discarded. + +* The code in *BLOCK* is executed. + +* If *BLOCK* raises an exception, the :meth:`__exit__(type, value, traceback)` + is called with the exception details, the same values returned by + :func:`sys.exc_info`. The method's return value controls whether the exception + is re-raised: any false value re-raises the exception, and ``True`` will result + in suppressing it. You'll only rarely want to suppress the exception, because + if you do the author of the code containing the ':keyword:`with`' statement will + never realize anything went wrong. + +* If *BLOCK* didn't raise an exception, the :meth:`__exit__` method is still + called, but *type*, *value*, and *traceback* are all ``None``. + +Let's think through an example. I won't present detailed code but will only +sketch the methods necessary for a database that supports transactions. + +(For people unfamiliar with database terminology: a set of changes to the +database are grouped into a transaction. Transactions can be either committed, +meaning that all the changes are written into the database, or rolled back, +meaning that the changes are all discarded and the database is unchanged. See +any database textbook for more information.) + +Let's assume there's an object representing a database connection. Our goal will +be to let the user write code like this:: + + db_connection = DatabaseConnection() + with db_connection as cursor: + cursor.execute('insert into ...') + cursor.execute('delete from ...') + # ... more operations ... + +The transaction should be committed if the code in the block runs flawlessly or +rolled back if there's an exception. Here's the basic interface for +:class:`DatabaseConnection` that I'll assume:: + + class DatabaseConnection: + # Database interface + def cursor (self): + "Returns a cursor object and starts a new transaction" + def commit (self): + "Commits current transaction" + def rollback (self): + "Rolls back current transaction" + +The :meth:`__enter__` method is pretty easy, having only to start a new +transaction. For this application the resulting cursor object would be a useful +result, so the method will return it. The user can then add ``as cursor`` to +their ':keyword:`with`' statement to bind the cursor to a variable name. :: + + class DatabaseConnection: + ... + def __enter__ (self): + # Code to start a new transaction + cursor = self.cursor() + return cursor + +The :meth:`__exit__` method is the most complicated because it's where most of +the work has to be done. The method has to check if an exception occurred. If +there was no exception, the transaction is committed. The transaction is rolled +back if there was an exception. + +In the code below, execution will just fall off the end of the function, +returning the default value of ``None``. ``None`` is false, so the exception +will be re-raised automatically. If you wished, you could be more explicit and +add a :keyword:`return` statement at the marked location. :: + + class DatabaseConnection: + ... + def __exit__ (self, type, value, tb): + if tb is None: + # No exception, so commit + self.commit() + else: + # Exception occurred, so rollback. + self.rollback() + # return False + + +.. _module-contextlib: + +The contextlib module +--------------------- + +The new :mod:`contextlib` module provides some functions and a decorator that +are useful for writing objects for use with the ':keyword:`with`' statement. + +The decorator is called :func:`contextmanager`, and lets you write a single +generator function instead of defining a new class. The generator should yield +exactly one value. The code up to the :keyword:`yield` will be executed as the +:meth:`__enter__` method, and the value yielded will be the method's return +value that will get bound to the variable in the ':keyword:`with`' statement's +:keyword:`as` clause, if any. The code after the :keyword:`yield` will be +executed in the :meth:`__exit__` method. Any exception raised in the block will +be raised by the :keyword:`yield` statement. + +Our database example from the previous section could be written using this +decorator as:: + + from contextlib import contextmanager + + @contextmanager + def db_transaction (connection): + cursor = connection.cursor() + try: + yield cursor + except: + connection.rollback() + raise + else: + connection.commit() + + db = DatabaseConnection() + with db_transaction(db) as cursor: + ... + +The :mod:`contextlib` module also has a :func:`nested(mgr1, mgr2, ...)` function +that combines a number of context managers so you don't need to write nested +':keyword:`with`' statements. In this example, the single ':keyword:`with`' +statement both starts a database transaction and acquires a thread lock:: + + lock = threading.Lock() + with nested (db_transaction(db), lock) as (cursor, locked): + ... + +Finally, the :func:`closing(object)` function returns *object* so that it can be +bound to a variable, and calls ``object.close`` at the end of the block. :: + + import urllib, sys + from contextlib import closing + + with closing(urllib.urlopen('http://www.yahoo.com')) as f: + for line in f: + sys.stdout.write(line) + + +.. seealso:: + + :pep:`343` - The "with" statement + PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland, + Guido van Rossum, and Neal Norwitz. The PEP shows the code generated for a + ':keyword:`with`' statement, which can be helpful in learning how the statement + works. + + The documentation for the :mod:`contextlib` module. + +.. % ====================================================================== + +.. _pep-3110: + +PEP 3110: Exception-Handling Changes +===================================================== + +One error that Python programmers occasionally make +is the following:: + + try: + ... + except TypeError, ValueError: + ... + +The author is probably trying to catch both +:exc:`TypeError` and :exc:`ValueError` exceptions, but this code +actually does something different: it will catch +:exc:`TypeError` and bind the resulting exception object +to the local name ``"ValueError"``. The correct code +would have specified a tuple:: + + try: + ... + except (TypeError, ValueError): + ... + +This error is possible because the use of the comma here is ambiguous: +does it indicate two different nodes in the parse tree, or a single +node that's a tuple. + +Python 3.0 changes the syntax to make this unambiguous by replacing +the comma with the word "as". To catch an exception and store the +exception object in the variable ``exc``, you must write:: + + try: + ... + except TypeError as exc: + ... + +Python 3.0 will only support the use of "as", and therefore interprets +the first example as catching two different exceptions. Python 2.6 +supports both the comma and "as", so existing code will continue to +work. + +.. seealso:: + + :pep:`3110` - Catching Exceptions in Python 3000 + PEP written and implemented by Collin Winter. + +.. % ====================================================================== + +.. _pep-3119: + +PEP 3119: Abstract Base Classes +===================================================== + +XXX + +.. seealso:: + + :pep:`3119` - Introducing Abstract Base Classes + PEP written by Guido van Rossum and Talin. + Implemented by XXX. + Backported to 2.6 by Benjamin Aranguren (with Alex Martelli). Other Language Changes ====================== Here are all of the changes that Python 2.6 makes to the core Python language. +* Changes to the :class:`Exception` interface + as dictated by :pep:`352` continue to be made. For 2.6, + the :attr:`message` attribute is being deprecated in favor of the + :attr:`args` attribute. + +* When calling a function using the ``**`` syntax to provide keyword + arguments, you are no longer required to use a Python dictionary; + any mapping will now work:: + + >>> def f(**kw): + ... print sorted(kw) + ... + >>> ud=UserDict.UserDict() + >>> ud['a'] = 1 + >>> ud['b'] = 'string' + >>> f(**ud) + ['a', 'b'] + + .. % Patch 1686487 + +* The :func:`compile` built-in function now accepts keyword arguments + as well as positional parameters. (Contributed by XXX.) + + .. % Patch 1444529 + * The :func:`complex` constructor now accepts strings containing parenthesized complex numbers, letting ``complex(repr(cmplx))`` will now round-trip values. For example, ``complex('(3+4j)')`` @@ -87,6 +445,15 @@ .. % Patch 1193128 +* The built-in :func:`dir` function now checks for a :meth:`__dir__` + method on the objects it receives. This method must return a list + of strings containing the names of valid attributes for the object, + and lets the object control the value that :func:`dir` produces. + Objects that have :meth:`__getattr__` or :meth:`__getattribute__` + methods. + + .. % Patch 1591665 + * An obscure change: when you use the the :func:`locals` function inside a :keyword:`class` statement, the resulting dictionary no longer returns free variables. (Free variables, in this case, are variables referred to in the @@ -160,6 +527,11 @@ (Contributed by Raymond Hettinger.) +* An optional ``timeout`` parameter was added to the + :class:`httplib.HTTPConnection` and :class:`HTTPSConnection` + class constructors, specifying a timeout measured in seconds. + (Added by Facundo Batista.) + * A new function in the :mod:`itertools` module: ``izip_longest(iter1, iter2, ...[, fillvalue])`` makes tuples from each of the elements; if some of the iterables are shorter than others, the missing values are set to *fillvalue*. @@ -176,6 +548,15 @@ .. % Patch #1490190 +* The :func:`os.walk` function now has a "followlinks" parameter. If + set to True, it will follow symlinks pointing to directories and + visit the directory's contents. For backward compatibility, the + parameter's default value is false. Note that the function can fall + into an infinite recursion if there's a symlink that points to a + parent directory. + + .. % Patch 1273829 + * In the :mod:`os.path` module, the :func:`splitext` function has been changed to not split on leading period characters. This produces better results when operating on Unix's dot-files. @@ -191,6 +572,12 @@ .. % Patch 1339796 + On Windows, :func:`os.path.expandvars` will now expand environment variables + in the form "%var%", and "~user" will be expanded into the + user's home directory path. (Contributed by XXX.) + + .. % Patch 957650 + * New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags` are wrappers for the corresponding system calls (where they're available). Constants for the flag values are defined in the :mod:`stat` module; some @@ -217,10 +604,37 @@ .. % Patch #957003 +* The :mod:`textwrap` module can now preserve existing whitespace + at the beginnings and ends of the newly-created lines + by specifying ``drop_whitespace=False`` + as an argument:: + + >>> S = """This sentence has a bunch of extra whitespace.""" + >>> print textwrap.fill(S, width=15) + This sentence + has a bunch + of extra + whitespace. + >>> print textwrap.fill(S, drop_whitespace=False, width=15) + This sentence + has a bunch + of extra + whitespace. + >>> + + .. % Patch #1581073 + * An optional ``timeout`` parameter was added to the :class:`telnetlib.Telnet` class constructor, specifying a timeout measured in seconds. (Added by Facundo Batista.) +* The :class:`tempfile.NamedTemporaryFile` class usually deletes + the temporary file it created when the file is closed. This + behaviour can now be changed by passing ``delete=False`` to the + constructor. (Contributed by Damien Miller.) + + .. % Patch #1537850 + * The :mod:`test.test_support` module now contains a :func:`EnvironmentVarGuard` context manager that supports temporarily changing environment variables and automatically restores them to their old values. (Contributed by Brett Cannon.) @@ -235,6 +649,20 @@ .. % Patch #1533909 +* An optional ``timeout`` parameter was added to the + :func:`urllib.urlopen` function and the + :class:`urllib.ftpwrapper` class constructor, as well as the + :func:`urllib2.urlopen` function. The parameter specifies a timeout + measured in seconds. For example:: + + >>> u = urllib2.urlopen("http://slow.example.com", timeout=3) + Traceback (most recent call last): + ... + urllib2.URLError: + >>> + + (Added by Facundo Batista.) + .. % ====================================================================== .. % whole new modules get described in \subsections here From python-checkins at python.org Fri Sep 14 00:50:10 2007 From: python-checkins at python.org (andrew.kuchling) Date: Fri, 14 Sep 2007 00:50:10 +0200 (CEST) Subject: [Python-checkins] r58148 - python/trunk/Doc/whatsnew/2.5.rst Message-ID: <20070913225010.A1D291E400D@bag.python.org> Author: andrew.kuchling Date: Fri Sep 14 00:50:10 2007 New Revision: 58148 Modified: python/trunk/Doc/whatsnew/2.5.rst Log: Make target unique Modified: python/trunk/Doc/whatsnew/2.5.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.5.rst (original) +++ python/trunk/Doc/whatsnew/2.5.rst Fri Sep 14 00:50:10 2007 @@ -637,7 +637,7 @@ print v.sqrt() -.. _context-managers: +.. _new-25-context-managers: Writing Context Managers ------------------------ From python-checkins at python.org Fri Sep 14 08:49:44 2007 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 14 Sep 2007 08:49:44 +0200 (CEST) Subject: [Python-checkins] r58149 - python/trunk/Tools/buildbot/clean.bat Message-ID: <20070914064944.3B6351E401B@bag.python.org> Author: martin.v.loewis Date: Fri Sep 14 08:49:43 2007 New Revision: 58149 Modified: python/trunk/Tools/buildbot/clean.bat Log: Clean both Release and Debug projects, to support the MSI builder. Modified: python/trunk/Tools/buildbot/clean.bat ============================================================================== --- python/trunk/Tools/buildbot/clean.bat (original) +++ python/trunk/Tools/buildbot/clean.bat Fri Sep 14 08:49:43 2007 @@ -3,4 +3,5 @@ cd PCbuild @echo Deleting .pyc/.pyo files ... python_d.exe rmpyc.py +devenv.com /clean Release pcbuild.sln devenv.com /clean Debug pcbuild.sln From python-checkins at python.org Fri Sep 14 08:50:21 2007 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 14 Sep 2007 08:50:21 +0200 (CEST) Subject: [Python-checkins] r58150 - python/trunk/PCbuild/_msi.vcproj Message-ID: <20070914065021.CD5951E401D@bag.python.org> Author: martin.v.loewis Date: Fri Sep 14 08:50:21 2007 New Revision: 58150 Modified: python/trunk/PCbuild/_msi.vcproj Log: Rename import library for debug build to _msi_d.lib. Modified: python/trunk/PCbuild/_msi.vcproj ============================================================================== --- python/trunk/PCbuild/_msi.vcproj (original) +++ python/trunk/PCbuild/_msi.vcproj Fri Sep 14 08:50:21 2007 @@ -42,7 +42,7 @@ GenerateDebugInformation="TRUE" ProgramDatabaseFile=".\./_msi_d.pdb" BaseAddress="0x1D160000" - ImportLibrary=".\./_msi.lib" + ImportLibrary=".\./_msi_d.lib" TargetMachine="1"/> From python-checkins at python.org Fri Sep 14 09:01:59 2007 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 14 Sep 2007 09:01:59 +0200 (CEST) Subject: [Python-checkins] r58151 - python/branches/release25-maint/Tools/buildbot/clean.bat Message-ID: <20070914070159.A33A61E4017@bag.python.org> Author: martin.v.loewis Date: Fri Sep 14 09:01:59 2007 New Revision: 58151 Modified: python/branches/release25-maint/Tools/buildbot/clean.bat Log: Backport r58149: Clean Release projects as well. Modified: python/branches/release25-maint/Tools/buildbot/clean.bat ============================================================================== --- python/branches/release25-maint/Tools/buildbot/clean.bat (original) +++ python/branches/release25-maint/Tools/buildbot/clean.bat Fri Sep 14 09:01:59 2007 @@ -3,4 +3,5 @@ cd PCbuild @echo Deleting .pyc/.pyo files ... python_d.exe rmpyc.py +devenv.com /clean Release pcbuild.sln devenv.com /clean Debug pcbuild.sln From python-checkins at python.org Fri Sep 14 09:02:51 2007 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 14 Sep 2007 09:02:51 +0200 (CEST) Subject: [Python-checkins] r58152 - python/branches/release25-maint/PCbuild/_msi.vcproj Message-ID: <20070914070251.C93F61E4007@bag.python.org> Author: martin.v.loewis Date: Fri Sep 14 09:02:51 2007 New Revision: 58152 Modified: python/branches/release25-maint/PCbuild/_msi.vcproj Log: Backport 58150: Rename debug import lib to _msi_d.lib. Modified: python/branches/release25-maint/PCbuild/_msi.vcproj ============================================================================== --- python/branches/release25-maint/PCbuild/_msi.vcproj (original) +++ python/branches/release25-maint/PCbuild/_msi.vcproj Fri Sep 14 09:02:51 2007 @@ -42,7 +42,7 @@ GenerateDebugInformation="TRUE" ProgramDatabaseFile=".\./_msi_d.pdb" BaseAddress="0x1D160000" - ImportLibrary=".\./_msi.lib" + ImportLibrary=".\./_msi_d.lib" TargetMachine="1"/> From buildbot at python.org Fri Sep 14 09:51:59 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 07:51:59 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu 3.0 Message-ID: <20070914075200.17C5A1E4007@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%203.0/builds/94 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 09:52:10 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 07:52:10 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD 3.0 Message-ID: <20070914075210.CE7131E4007@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%203.0/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 10:08:36 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 08:08:36 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 3.0 Message-ID: <20070914080837.212CC1E4007@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%203.0/builds/97 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_urllib2net ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot\work\3.0.heller-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot\work\3.0.heller-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot\work\3.0.heller-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot\work\3.0.heller-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\work\3.0.heller-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot\work\3.0.heller-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\work\3.0.heller-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_urllib2net.py", line 173, in test_ftp self._test_urls(urls, self._extra_handlers()) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_urllib2net.py", line 242, in _test_urls f = urllib2.urlopen(url, req) File "C:\buildbot\work\3.0.heller-windows\build\lib\urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "C:\buildbot\work\3.0.heller-windows\build\lib\urllib2.py", line 378, in open response = self._open(req, data) File "C:\buildbot\work\3.0.heller-windows\build\lib\urllib2.py", line 396, in _open '_open', req) File "C:\buildbot\work\3.0.heller-windows\build\lib\urllib2.py", line 356, in _call_chain result = func(*args) File "C:\buildbot\work\3.0.heller-windows\build\lib\urllib2.py", line 1271, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "C:\buildbot\work\3.0.heller-windows\build\lib\urllib2.py", line 1316, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "C:\buildbot\work\3.0.heller-windows\build\lib\urllib.py", line 783, in __init__ self.init() File "C:\buildbot\work\3.0.heller-windows\build\lib\urllib.py", line 790, in init self.ftp.login(self.user, self.passwd) File "C:\buildbot\work\3.0.heller-windows\build\lib\ftplib.py", line 372, in login if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd) File "C:\buildbot\work\3.0.heller-windows\build\lib\ftplib.py", line 242, in sendcmd return self.getresp() File "C:\buildbot\work\3.0.heller-windows\build\lib\ftplib.py", line 208, in getresp resp = self.getmultiline() File "C:\buildbot\work\3.0.heller-windows\build\lib\ftplib.py", line 198, in getmultiline nextline = self.getline() File "C:\buildbot\work\3.0.heller-windows\build\lib\ftplib.py", line 181, in getline line = self.file.readline() File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1319, in readline readahead, pending = self._read_chunk() File "c:\buildbot\work\3.0.heller-windows\build\lib\io.py", line 1123, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "C:\buildbot\work\3.0.heller-windows\build\lib\encodings\ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 47: ordinal not in range(128) sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 10:30:01 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 08:30:01 +0000 Subject: [Python-checkins] buildbot failure in amd64 XP 3.0 Message-ID: <20070914083002.1B9881E400C@bag.python.org> The Buildbot has detected a new failure of amd64 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%203.0/builds/113 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows-amd64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 20 tests failed: test_bigaddrspace test_csv test_dumbdbm test_file test_fileinput test_format test_getargs2 test_gettext test_index test_io test_itertools test_largefile test_mailbox test_netrc test_operator test_pep277 test_subprocess test_tempfile test_urllib2net test_winsound ====================================================================== FAIL: test_concat (test.test_bigaddrspace.StrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_support.py", line 495, in wrapper return f(self) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_bigaddrspace.py", line 14, in test_concat self.assertRaises(OverflowError, operator.add, s1, '?') AssertionError: OverflowError not raised by add ====================================================================== FAIL: test_optimized_concat (test.test_bigaddrspace.StrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_support.py", line 495, in wrapper return f(self) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_bigaddrspace.py", line 24, in test_optimized_concat self.fail("should have raised OverflowError") AssertionError: should have raised OverflowError ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot\3.0.heller-windows-amd64\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None Traceback (most recent call last): File "../lib/test/regrtest.py", line 586, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 48, in testboth("%.*d", (sys.maxint,1)) # expect overflow File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 43, in testboth testformat(str8(formatstr), *args) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_format.py", line 22, in testformat result = formatstr % args MemoryError ====================================================================== ERROR: test_n (test.test_getargs2.Signed_TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_getargs2.py", line 190, in test_n self.failUnlessEqual(99, getargs_n(Long())) TypeError: 'Long' object cannot be interpreted as an integer ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_getitem (test.test_index.OverflowTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_index.py", line 190, in test_getitem (0, maxsize, 1)) AssertionError: (-1, -1, 1) != (0, -1, 1) ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_islice (test.test_itertools.TestBasicOps) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_itertools.py", line 343, in test_islice self.assertEqual(len(list(islice(count(), 1, 10, maxsize))), 1) ValueError: Step for islice() must be a positive integer or None. ====================================================================== FAIL: test_count (test.test_itertools.TestBasicOps) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_itertools.py", line 60, in test_count self.assertRaises(OverflowError, list, islice(count(maxsize-5), 10)) AssertionError: OverflowError not raised by list ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== FAIL: test_delslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 147, in test_delslice self.assertEqual(a, []) AssertionError: [9] != [] ====================================================================== FAIL: test_getslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 171, in test_getslice self.assertEqual(b, a) AssertionError: [0, 1, 2, 3, 4, 5, 6, 7, 8] != [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ====================================================================== FAIL: test_setslice (test.test_operator.OperatorTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_operator.py", line 308, in test_setslice self.assertEqual(a, []) AssertionError: [3] != [] ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_urllib2net.py", line 173, in test_ftp self._test_urls(urls, self._extra_handlers()) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_urllib2net.py", line 242, in _test_urls f = urllib2.urlopen(url, req) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\urllib2.py", line 378, in open response = self._open(req, data) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\urllib2.py", line 396, in _open '_open', req) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\urllib2.py", line 356, in _call_chain result = func(*args) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\urllib2.py", line 1271, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\urllib2.py", line 1316, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\urllib.py", line 783, in __init__ self.init() File "C:\buildbot\3.0.heller-windows-amd64\build\lib\urllib.py", line 790, in init self.ftp.login(self.user, self.passwd) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\ftplib.py", line 372, in login if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\ftplib.py", line 242, in sendcmd return self.getresp() File "C:\buildbot\3.0.heller-windows-amd64\build\lib\ftplib.py", line 208, in getresp resp = self.getmultiline() File "C:\buildbot\3.0.heller-windows-amd64\build\lib\ftplib.py", line 198, in getmultiline nextline = self.getline() File "C:\buildbot\3.0.heller-windows-amd64\build\lib\ftplib.py", line 181, in getline line = self.file.readline() File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1319, in readline readahead, pending = self._read_chunk() File "c:\buildbot\3.0.heller-windows-amd64\build\lib\io.py", line 1123, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "C:\buildbot\3.0.heller-windows-amd64\build\lib\encodings\ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 47: ordinal not in range(128) ====================================================================== ERROR: test_extremes (test.test_winsound.BeepTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 18, in test_extremes winsound.Beep(37, 75) RuntimeError: Failed to beep ====================================================================== ERROR: test_increasingfrequency (test.test_winsound.BeepTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 23, in test_increasingfrequency winsound.Beep(i, 75) RuntimeError: Failed to beep ====================================================================== ERROR: test_alias_asterisk (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 64, in test_alias_asterisk winsound.PlaySound('SystemAsterisk', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_exclamation (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 74, in test_alias_exclamation winsound.PlaySound('SystemExclamation', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_exit (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 84, in test_alias_exit winsound.PlaySound('SystemExit', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_hand (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 94, in test_alias_hand winsound.PlaySound('SystemHand', winsound.SND_ALIAS) RuntimeError: Failed to play sound ====================================================================== ERROR: test_alias_question (test.test_winsound.PlaySoundTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\3.0.heller-windows-amd64\build\lib\test\test_winsound.py", line 104, in test_alias_question winsound.PlaySound('SystemQuestion', winsound.SND_ALIAS) RuntimeError: Failed to play sound sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 10:35:30 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 08:35:30 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD 3.0 Message-ID: <20070914083531.9D1AD1E401A@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/25 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/SocketServer.py", line 522, in __init__ self.handle() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 330, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 313, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 380, in readline b = self.read(nreadahead()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 366, in nreadahead readahead = self.peek(1, unsafe=True) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 758, in peek current = self.raw.read(to_read) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 442, in read n = self.readinto(b) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/socket.py", line 292, in readinto return self._sock.recv_into(b) socket.error: [Errno 35] Resource temporarily unavailable 4 tests failed: test_asynchat test_email test_urllib2net test_xmlrpc ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 211, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_urllib2net.py", line 173, in test_ftp self._test_urls(urls, self._extra_handlers()) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_urllib2net.py", line 242, in _test_urls f = urllib2.urlopen(url, req) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/urllib2.py", line 378, in open response = self._open(req, data) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/urllib2.py", line 396, in _open '_open', req) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/urllib2.py", line 356, in _call_chain result = func(*args) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/urllib2.py", line 1271, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/urllib2.py", line 1316, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/urllib.py", line 783, in __init__ self.init() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/urllib.py", line 790, in init self.ftp.login(self.user, self.passwd) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/ftplib.py", line 372, in login if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/ftplib.py", line 242, in sendcmd return self.getresp() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/ftplib.py", line 208, in getresp resp = self.getmultiline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/ftplib.py", line 198, in getmultiline nextline = self.getline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/ftplib.py", line 181, in getline line = self.file.readline() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1319, in readline readahead, pending = self._read_chunk() File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/io.py", line 1123, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 47: ordinal not in range(128) ====================================================================== FAIL: test_introspection1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 354, in test_introspection1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection2 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 365, in test_introspection2 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_introspection3 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 378, in test_introspection3 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_multicall (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 395, in test_multicall self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_simple1 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 341, in test_simple1 self.fail("%s\n%s" % (e, e.headers)) AssertionError: ====================================================================== FAIL: test_basic (test.test_xmlrpc.FailingServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_xmlrpc.py", line 447, in test_basic self.fail("%s\n%s" % (e, e.headers)) AssertionError: sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 13:01:27 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 11:01:27 +0000 Subject: [Python-checkins] buildbot failure in 2.5.msi Message-ID: <20070914110127.336B01E4008@bag.python.org> The Buildbot has detected a new failure of 2.5.msi. Full details are available at: http://www.python.org/dev/buildbot/all/2.5.msi/builds/6 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The Nightly scheduler named '2.5.msi' triggered this build Build Source Stamp: HEAD Blamelist: BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 13:56:44 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 11:56:44 +0000 Subject: [Python-checkins] buildbot failure in 2.6.msi Message-ID: <20070914115644.AF8751E400A@bag.python.org> The Buildbot has detected a new failure of 2.6.msi. Full details are available at: http://www.python.org/dev/buildbot/all/2.6.msi/builds/9 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The web-page 'force build' button was pressed by 'Martin von Loewis': Cleanup Build Source Stamp: [branch foo] HEAD Blamelist: BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 18:01:21 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 16:01:21 +0000 Subject: [Python-checkins] buildbot failure in x86 XP 3.0 Message-ID: <20070914160121.6DA0B1E4007@bag.python.org> The Buildbot has detected a new failure of x86 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%203.0/builds/117 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: mcintyre-windows Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_urllib2net ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_urllib2net.py", line 173, in test_ftp self._test_urls(urls, self._extra_handlers()) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\test\test_urllib2net.py", line 242, in _test_urls f = urllib2.urlopen(url, req) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\urllib2.py", line 378, in open response = self._open(req, data) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\urllib2.py", line 396, in _open '_open', req) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\urllib2.py", line 356, in _call_chain result = func(*args) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\urllib2.py", line 1271, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\urllib2.py", line 1316, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\urllib.py", line 783, in __init__ self.init() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\urllib.py", line 790, in init self.ftp.login(self.user, self.passwd) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\ftplib.py", line 372, in login if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\ftplib.py", line 242, in sendcmd return self.getresp() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\ftplib.py", line 208, in getresp resp = self.getmultiline() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\ftplib.py", line 198, in getmultiline nextline = self.getline() File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\ftplib.py", line 181, in getline line = self.file.readline() File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1319, in readline readahead, pending = self._read_chunk() File "c:\buildbot_py25\3.0.mcintyre-windows\build\lib\io.py", line 1123, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "C:\buildbot_py25\3.0.mcintyre-windows\build\lib\encodings\ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 47: ordinal not in range(128) sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 18:04:21 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 16:04:21 +0000 Subject: [Python-checkins] buildbot failure in MIPS Debian 3.0 Message-ID: <20070914160421.77A471E4007@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%203.0/builds/10 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-mips Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_email test_urllib2net ====================================================================== ERROR: test_same_boundary_inner_outer (email.test.test_email.TestNonConformant) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/email/test/test_email.py", line 1445, in test_same_boundary_inner_outer msg = self._msgobj('msg_15.txt') File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/email/test/test_email.py", line 67, in _msgobj return email.message_from_file(fp) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/email/__init__.py", line 46, in message_from_file return Parser(*args, **kws).parse(fp) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/email/parser.py", line 68, in parse data = fp.read(8192) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/io.py", line 1231, in read readahead, pending = self._read_chunk() File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/io.py", line 1127, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 86: ordinal not in range(128) ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 173, in test_ftp self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 242, in _test_urls f = urllib2.urlopen(url, req) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 378, in open response = self._open(req, data) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 396, in _open '_open', req) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 356, in _call_chain result = func(*args) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 1289, in ftp_open raise URLError('ftp error', msg).with_traceback(sys.exc_info()[2]) TypeError: __init__() takes exactly 2 positional arguments (3 given) ====================================================================== ERROR: test_ftp_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 304, in test_ftp_NoneNodefault timeout=None) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 378, in open response = self._open(req, data) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 396, in _open '_open', req) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 356, in _call_chain result = func(*args) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 1289, in ftp_open raise URLError('ftp error', msg).with_traceback(sys.exc_info()[2]) TypeError: __init__() takes exactly 2 positional arguments (3 given) ====================================================================== ERROR: test_ftp_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 297, in test_ftp_NoneWithdefault timeout=None) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 378, in open response = self._open(req, data) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 396, in _open '_open', req) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 356, in _call_chain result = func(*args) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 1289, in ftp_open raise URLError('ftp error', msg).with_traceback(sys.exc_info()[2]) TypeError: __init__() takes exactly 2 positional arguments (3 given) ====================================================================== ERROR: test_ftp_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 308, in test_ftp_Value u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/", timeout=60) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 378, in open response = self._open(req, data) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 396, in _open '_open', req) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 356, in _call_chain result = func(*args) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 1289, in ftp_open raise URLError('ftp error', msg).with_traceback(sys.exc_info()[2]) TypeError: __init__() takes exactly 2 positional arguments (3 given) ====================================================================== ERROR: test_ftp_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/test/test_urllib2net.py", line 289, in test_ftp_basic u = urllib2.urlopen("ftp://ftp.mirror.nl/pub/mirror/gnu/") File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 378, in open response = self._open(req, data) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 396, in _open '_open', req) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 356, in _call_chain result = func(*args) File "/home/pybot/buildarea/3.0.klose-debian-mips/build/Lib/urllib2.py", line 1289, in ftp_open raise URLError('ftp error', msg).with_traceback(sys.exc_info()[2]) TypeError: __init__() takes exactly 2 positional arguments (3 given) make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 18:26:38 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 16:26:38 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian 3.0 Message-ID: <20070914162638.3C5F11E4012@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%203.0/builds/112 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 19:59:33 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 17:59:33 +0000 Subject: [Python-checkins] buildbot failure in 3.0.msi Message-ID: <20070914175933.CC6AE1E4007@bag.python.org> The Buildbot has detected a new failure of 3.0.msi. Full details are available at: http://www.python.org/dev/buildbot/all/3.0.msi/builds/9 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The web-page 'rebuild' button was pressed by 'David Bolen': Try to reproduce hhc crash Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Fri Sep 14 20:58:35 2007 From: python-checkins at python.org (facundo.batista) Date: Fri, 14 Sep 2007 20:58:35 +0200 (CEST) Subject: [Python-checkins] r58154 - python/trunk/Doc/library/decimal.rst Message-ID: <20070914185835.2DEC01E4008@bag.python.org> Author: facundo.batista Date: Fri Sep 14 20:58:34 2007 New Revision: 58154 Modified: python/trunk/Doc/library/decimal.rst Log: Included the new functions, and new descriptions. Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Fri Sep 14 20:58:34 2007 @@ -19,7 +19,7 @@ .. versionadded:: 2.4 The :mod:`decimal` module provides support for decimal floating point -arithmetic. It offers several advantages over the :class:`float()` datatype: +arithmetic. It offers several advantages over the :class:`float` datatype: * Decimal numbers can be represented exactly. In contrast, numbers like :const:`1.1` do not have an exact representation in binary floating point. End @@ -27,7 +27,7 @@ :const:`1.1000000000000001` as it does with binary floating point. * The exactness carries over into arithmetic. In decimal floating point, ``0.1 - + 0.1 + 0.1 - 0.3`` is exactly equal to zero. In binary floating point, result + + 0.1 + 0.1 - 0.3`` is exactly equal to zero. In binary floating point, the result is :const:`5.5511151231257827e-017`. While near to zero, the differences prevent reliable equality testing and differences can accumulate. For this reason, decimal would be preferred in accounting applications which have strict @@ -41,7 +41,7 @@ 1.20`` gives :const:`1.5600`. * Unlike hardware based binary floating point, the decimal module has a user - settable precision (defaulting to 28 places) which can be as large as needed for + alterable precision (defaulting to 28 places) which can be as large as needed for a given problem:: >>> getcontext().prec = 6 @@ -61,7 +61,7 @@ A decimal number is immutable. It has a sign, coefficient digits, and an exponent. To preserve significance, the coefficient digits do not truncate -trailing zeroes. Decimals also include special values such as +trailing zeros. Decimals also include special values such as :const:`Infinity`, :const:`-Infinity`, and :const:`NaN`. The standard also differentiates :const:`-0` from :const:`+0`. @@ -70,7 +70,7 @@ enablers which determine whether signals are treated as exceptions. Rounding options include :const:`ROUND_CEILING`, :const:`ROUND_DOWN`, :const:`ROUND_FLOOR`, :const:`ROUND_HALF_DOWN`, :const:`ROUND_HALF_EVEN`, -:const:`ROUND_HALF_UP`, and :const:`ROUND_UP`. +:const:`ROUND_HALF_UP`, :const:`ROUND_UP`, and :const:`ROUND_05UP`. Signals are groups of exceptional conditions arising during the course of computation. Depending on the needs of the application, signals may be ignored, @@ -87,11 +87,11 @@ .. seealso:: - IBM's General Decimal Arithmetic Specification, `The General Decimal Arithmetic - Specification `_. + * IBM's General Decimal Arithmetic Specification, `The General Decimal Arithmetic + Specification `_. - IEEE standard 854-1987, `Unofficial IEEE 854 Text - `_. + * IEEE standard 854-1987, `Unofficial IEEE 854 Text + `_. .. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -290,7 +290,7 @@ The *context* precision does not affect how many digits are stored. That is determined exclusively by the number of digits in *value*. For example, - ``Decimal("3.00000")`` records all five zeroes even if the context precision is + ``Decimal("3.00000")`` records all five zeros even if the context precision is only three. The purpose of the *context* argument is determining what to do if *value* is a @@ -300,7 +300,7 @@ Once constructed, :class:`Decimal` objects are immutable. -Decimal floating point objects share many properties with the other builtin +Decimal floating point objects share many properties with the other built-in numeric types such as :class:`float` and :class:`int`. All of the usual math operations and special methods apply. Likewise, decimal objects can be copied, pickled, printed, used as dictionary keys, used as set elements, compared, @@ -320,50 +320,351 @@ .. method:: Decimal.as_tuple() - Returns a tuple representation of the number: ``(sign, digittuple, exponent)``. + Return a tuple representation of the number: ``(sign, digit_tuple, exponent)``. +.. method:: Decimal.canonical() + + Return the canonical encoding of the argument. Currently, the + encoding of a :class:`Decimal` instance is always canonical, so + this operation returns its argument unchanged. + + .. versionadded:: 2.6 + .. method:: Decimal.compare(other[, context]) - Compares like :meth:`__cmp__` but returns a decimal instance:: + Compare the values of two Decimal instances. This operation + behaves in the same way as the usual comparison method + :meth:`__cmp__`, except that :meth:`compare` returns a Decimal + instance rather than an integer, and if either operand is a NaN + then the result is a NaN:: a or b is a NaN ==> Decimal("NaN") a < b ==> Decimal("-1") a == b ==> Decimal("0") a > b ==> Decimal("1") +.. method:: Decimal.compare_signal(other[, context]) + + This operation is identical to the :meth:`compare` method, except + that all NaNs signal. That is, if neither operand is a signaling + NaN then any quiet NaN operand is treated as though it were a + signaling NaN. + + .. versionadded:: 2.6 + +.. method:: Decimal.compare_total(other) + + Compare two operands using their abstract representation rather + than their numerical value. Similar to the :meth:`compare` method, + but the result gives a total ordering on :class:`Decimal` + instances. Two :class:`Decimal` instances with the same numeric + value but different representations compare unequal in this + ordering:: + + >>> Decimal("12.0").compare_total(Decimal("12")) + Decimal("-1") + + Quiet and signaling NaNs are also included in the total ordering. + The result of this function is ``Decimal("0")`` if both operands + have the same representation, ``Decimal("-1")`` if the first + operand is lower in the total order than the second, and + ``Decimal("1")`` if the first operand is higher in the total order + than the second operand. See the specification for details of the + total order. + + .. versionadded:: 2.6 + +.. method:: Decimal.compare_total_mag(other) + + Compare two operands using their abstract representation rather + than their value as in :meth:`compare_total`, but ignoring the sign + of each operand. ``x.compare_total_mag(y)`` is equivalent to + ``x.copy_abs().compare_total(y.copy_abs())``. + + .. versionadded:: 2.6 + +.. method:: Decimal.copy_abs() + + Return the absolute value of the argument. This operation is + unaffected by the context and is quiet: no flags are changed and no + rounding is performed. + + .. versionadded:: 2.6 + +.. method:: Decimal.copy_negate() + + Return the negation of the argument. This operation is unaffected + by the context and is quiet: no flags are changed and no rounding + is performed. + + .. versionadded:: 2.6 + +.. method:: Decimal.copy_sign(other) + + Return a copy of the first operand with the sign set to be the + same as the sign of the second operand. For example:: + + >>> Decimal("2.3").copy_sign(Decimal("-1.5")) + Decimal("-2.3") + + This operation is unaffected by the context and is quiet: no flags + are changed and no rounding is performed. + + .. versionadded:: 2.6 + +.. method:: Decimal.exp([context]) + + Return the value of the (natural) exponential function ``e**x`` at the + given number. The result is correctly rounded using the + :const:`ROUND_HALF_EVEN` rounding mode. + + .. versionadded:: 2.6 + +.. method:: Decimal.fma(other, third[, context]) + + Fused multiply-add. Return self*other+third with no rounding of + the intermediate product self*other. + + .. versionadded:: 2.6 + +.. method:: Decimal.is_canonical() + + Return ``Decimal(1)`` if the argument is canonical and + ``Decimal(0)`` otherwise. Currently, a :class:`Decimal` instance + is always canonical, so this operation always returns + ``Decimal(1)``. + + .. versionadded:: 2.6 + +.. method:: is_finite() + + Return ``Decimal(1)`` if the argument is a finite number, and + ``Decimal(0)`` if the argument is an infinity or a NaN. + + .. versionadded:: 2.6 + +.. method:: is_infinite() + + Return ``Decimal(1)`` if the argument is either positive or + negative infinity and ``Decimal(0)`` otherwise. + + .. versionadded:: 2.6 + +.. method:: is_nan() + + Return ``Decimal(1)`` if the argument is a (quiet or signaling) + NaN and ``Decimal(0)`` otherwise. + + .. versionadded:: 2.6 + +.. method:: is_normal() + + Return ``Decimal(1)`` if the argument is a *normal* finite number. + Return ``Decimal(0)`` if the argument is zero, subnormal, infinite + or a NaN. + + .. versionadded:: 2.6 + +.. method:: is_qnan() + + Return ``Decimal(1)`` if the argument is a quiet NaN, and ``Decimal(0)`` otherwise. + + .. versionadded:: 2.6 + +.. method:: is_signed() + + Return ``Decimal(1)`` if the argument has a negative sign and + ``Decimal(0)`` otherwise. Note that zeros and NaNs can both carry + signs. + + .. versionadded:: 2.6 + +.. method:: is_snan() + + Return ``Decimal(1)`` if the argument is a signaling NaN and + ``Decimal(0)`` otherwise. + + .. versionadded:: 2.6 + +.. method:: is_subnormal() + + Return ``Decimal(1)`` if the argument is subnormal, and + ``Decimal(0)`` otherwise. + + .. versionadded:: 2.6 + +.. method:: is_zero() + + Return ``Decimal(1)`` if the argument is a (positive or negative) + zero and ``Decimal(0)`` otherwise. + + .. versionadded:: 2.6 + +.. method:: Decimal.ln([context]) + + Return the natural (base e) logarithm of the operand. The result + is correctly rounded using the :const:`ROUND_HALF_EVEN` rounding + mode. + + .. versionadded:: 2.6 + +.. method:: Decimal.log10([context]) + + Return the base ten logarithm of the operand. The result is + correctly rounded using the :const:`ROUND_HALF_EVEN` rounding mode. + + .. versionadded:: 2.6 + +.. method: Decimal.logb([context]) + + For a nonzero number, return the adjusted exponent of its operand + as a :class:`Decimal` instance. If the operand is a zero then + ``Decimal("-Infinity")`` is returned and the + :const:`DivisionByZero` flag is raised. If the operand is an + infinity then ``Decimal("Infinity")`` is returned. + + .. versionadded:: 2.6 + +.. method:: Decimal.logical_and(other[, context]) + + :meth:`logical_and` is a logical operation which takes two + *logical operands* (see :ref:`logical_operands_label`). The result + is the digit-wise ``and`` of the two operands. + + .. versionadded:: 2.6 + +.. method:: Decimal.logical_invert(other[, context]) + + :meth:`logical_invert` is a logical operation. The argument must + be a *logical operand* (see :ref:`logical_operands_label`). The + result is the digit-wise inversion of the operand. + + .. versionadded:: 2.6 + +.. method:: Decimal.logical_or(other[, context]) + + :meth:`logical_or` is a logical operation which takes two *logical + operands* (see :ref:`logical_operands_label`). The result is the + digit-wise ``or`` of the two operands. + + .. versionadded:: 2.6 + +.. method:: Decimal.logical_xor(other[, context]) + + :meth:`logical_xor` is a logical operation which takes two + *logical operands* (see :ref:`logical_operands_label`). The result + is the digit-wise exclusive or of the two operands. + + .. versionadded:: 2.6 .. method:: Decimal.max(other[, context]) Like ``max(self, other)`` except that the context rounding rule is applied - before returning and that :const:`NaN` values are either signalled or ignored + before returning and that :const:`NaN` values are either signaled or ignored (depending on the context and whether they are signaling or quiet). +.. method:: Decimal.max_mag(other[, context]) + + Similar to the :meth:`max` method, but the comparison is done using + the absolute values of the operands. + + .. versionadded:: 2.6 .. method:: Decimal.min(other[, context]) Like ``min(self, other)`` except that the context rounding rule is applied - before returning and that :const:`NaN` values are either signalled or ignored + before returning and that :const:`NaN` values are either signaled or ignored (depending on the context and whether they are signaling or quiet). +.. method:: Decimal.min_mag(other[, context]) + + Similar to the :meth:`min` method, but the comparison is done using + the absolute values of the operands. + + .. versionadded:: 2.6 + +.. method:: Decimal.next_minus([context]) + + Return the largest number representable in the given context (or + in the current thread's context if no context is given) that is smaller + than the given operand. + + .. versionadded:: 2.6 + +.. method:: Decimal.next_plus([context]) + + Return the smallest number representable in the given context (or + in the current thread's context if no context is given) that is + larger than the given operand. + + .. versionadded:: 2.6 + +.. method:: Decimal.next_toward(other[, context]) + + If the two operands are unequal, return the number closest to the + first operand in the direction of the second operand. If both + operands are numerically equal, return a copy of the first operand + with the sign set to be the same as the sign of the second operand. + + .. versionadded:: 2.6 .. method:: Decimal.normalize([context]) - Normalize the number by stripping the rightmost trailing zeroes and converting + Normalize the number by stripping the rightmost trailing zeros and converting any result equal to :const:`Decimal("0")` to :const:`Decimal("0e0")`. Used for producing canonical values for members of an equivalence class. For example, ``Decimal("32.100")`` and ``Decimal("0.321000e+2")`` both normalize to the equivalent value ``Decimal("32.1")``. +.. method:: Decimal.number_class([context]) -.. method:: Decimal.quantize(exp [, rounding[, context[, watchexp]]]) - - Quantize makes the exponent the same as *exp*. Searches for a rounding method - in *rounding*, then in *context*, and then in the current context. + Return a string describing the *class* of the operand. The + returned value is one of the following ten strings. - If *watchexp* is set (default), then an error is returned whenever the resulting - exponent is greater than :attr:`Emax` or less than :attr:`Etiny`. + * ``"-Infinity"``, indicating that the operand is negative infinity. + * ``"-Normal"``, indicating that the operand is a negative normal number. + * ``"-Subnormal"``, indicating that the operand is negative and subnormal. + * ``"-Zero"``, indicating that the operand is a negative zero. + * ``"+Zero"``, indicating that the operand is a positive zero. + * ``"+Subnormal"``, indicating that the operand is positive and subnormal. + * ``"+Normal"``, indicating that the operand is a positive normal number. + * ``"+Infinity"``, indicating that the operand is positive infinity. + * ``"NaN"``, indicating that the operand is a quiet NaN (Not a Number). + * ``"sNaN"``, indicating that the operand is a signaling NaN. + + .. versionadded:: 2.6 + +.. method:: Decimal.quantize(exp[, rounding[, context[, watchexp]]]) + + Returns a value equal to the first operand after rounding and + having the exponent of the second operand. + + Unlike other operations, if the length of the coefficient after the + quantize operation would be greater than precision, then an + :const:`InvalidOperation` is signaled. This guarantees that, unless + there is an error condition, the quantized exponent is always equal + to that of the right-hand operand. + + Also unlike other operations, quantize never signals Underflow, + even if the result is subnormal and inexact. + + If the exponent of the second operand is larger than that of the + first then rounding may be necessary. In this case, the rounding + mode is determined by the ``rounding`` argument if given, else by + the given ``context`` argument; if neither argument is given the + rounding mode of the current thread's context is used. + + If watchexp is set (default), then an error is returned whenever + the resulting exponent is greater than Emax or less than Etiny. + +.. method:: Decimal.radix() + + Return ``Decimal(10)``, the radix (base) in which the + :class:`Decimal` class does all its arithmetic. Included for + compatibility with the specification. + .. versionadded:: 2.6 .. method:: Decimal.remainder_near(other[, context]) @@ -373,16 +674,49 @@ If both are equally close, the one chosen will have the same sign as *self*. +.. method:: Decimal.rotate(other[, context]) + + Return the result of rotating the digits of the first operand by + an amount specified by the second operand. The second operand + must be an integer in the range -precision through precision. The + absolute value of the second operand gives the number of places to + rotate. If the second operand is positive then rotation is to the + left; otherwise rotation is to the right. The coefficient of the + first operand is padded on the left with zeros to length precision + if necessary. The sign and exponent of the first operand are + unchanged. + + .. versionadded:: 2.6 .. method:: Decimal.same_quantum(other[, context]) Test whether self and other have the same exponent or whether both are :const:`NaN`. +.. method:: Decimal.scaleb(other[, context]) + + Return the first operand with exponent adjusted by the second. + Equivalently, return the first operand multiplied by ``10**other``. + The second operand must be an integer. + + .. versionadded:: 2.6 + +.. method:: Decimal.shift(other[, context]) + + Return the result of shifting the digits of the first operand by + an amount specified by the second operand. The second operand must + be an integer in the range -precision through precision. The + absolute value of the second operand gives the number of places to + shift. If the second operand is positive then the shift is to the + left; otherwise the shift is to the right. Digits shifted into the + coefficient are zeros. The sign and exponent of the first operand + are unchanged. + + .. versionadded:: 2.6 .. method:: Decimal.sqrt([context]) - Return the square root to full precision. + Return the square root of the argument to full precision. .. method:: Decimal.to_eng_string([context]) @@ -393,13 +727,53 @@ to 3 digits left of the decimal place. For example, converts ``Decimal('123E+1')`` to ``Decimal("1.23E+3")`` - .. method:: Decimal.to_integral([rounding[, context]]) + Identical to the :meth:`to_integral_value` method. The ``to_integral`` + name has been kept for compatibility with older versions. + +.. method:: Decimal.to_integral_exact([rounding[, context]]) + + Round the argument to the nearest integer, signaling + :const:`Inexact` or :const:`Rounded` as appropriate if rounding + occurs. The rounding mode is determined by the ``rounding`` + parameter if given, else by the given ``context``. If neither + parameter is given then the rounding mode of the current context is + used. + + .. versionadded:: 2.6 + +.. method:: Decimal.to_integral_value([rounding[, context]]) + Rounds to the nearest integer without signaling :const:`Inexact` or :const:`Rounded`. If given, applies *rounding*; otherwise, uses the rounding method in either the supplied *context* or the current context. + .. versionchanged:: 2.6 + renamed from ``to_integral`` to ``to_integral_value``. The old name + remains valid for compatibility. + +.. method:: Decimal.trim() + + Returns its argument with *insignificant* trailing zeros removed. + Here, a trailing zero is considered insignificant either if it + follows the decimal point, or if the exponent of the argument (that + is, the last element of the :meth:`as_tuple` representation) is + positive. + + .. versionadded:: 2.6 + +.. _logical_operands_label: + +Logical operands +^^^^^^^^^^^^^^^^ + +The :meth:`logical_and`, :meth:`logical_invert`, :meth:`logical_or`, +and :meth:`logical_xor` methods expect their arguments to be *logical +operands*. A *logical operand* is a :class:`Decimal` instance whose +exponent and sign are both zero, and whose digits are all either +:const:`0` or :const:`1`. + .. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -516,6 +890,8 @@ * :const:`ROUND_HALF_EVEN` (to nearest with ties going to nearest even integer), * :const:`ROUND_HALF_UP` (to nearest with ties going away from zero), or * :const:`ROUND_UP` (away from zero). + * :const:`ROUND_05UP` (away from zero if last digit after rounding towards zero + would have been 0 or 5; otherwise towards zero) The *traps* and *flags* fields list any signals to be set. Generally, new contexts should only set traps and leave the flags clear. @@ -527,9 +903,16 @@ :const:`1`, exponents are printed with a capital :const:`E`; otherwise, a lowercase :const:`e` is used: :const:`Decimal('6.02e+23')`. -The :class:`Context` class defines several general purpose methods as well as a -large number of methods for doing arithmetic directly in a given context. + .. versionchanged:: 2.6 + The :const:`ROUND_05UP` rounding mode was added. +The :class:`Context` class defines several general purpose methods as +well as a large number of methods for doing arithmetic directly in a +given context. In addition, for each of the :class:`Decimal` methods +described above (with the exception of the :meth:`adjusted` and +:meth:`as_tuple` methods) there is a corresponding :class:`Context` +method. For example, ``C.exp(x)`` is equivalent to +``x.exp(context=C)``. .. method:: Context.clear_flags() @@ -540,6 +923,9 @@ Return a duplicate of the context. +.. method:: Context.copy_decimal(num) + + Return a copy of the Decimal instance num. .. method:: Context.create_decimal(num) @@ -588,42 +974,19 @@ Return the sum of *x* and *y*. -.. method:: Context.compare(x, y) - - Compares values numerically. - - Like :meth:`__cmp__` but returns a decimal instance:: - - a or b is a NaN ==> Decimal("NaN") - a < b ==> Decimal("-1") - a == b ==> Decimal("0") - a > b ==> Decimal("1") - - .. method:: Context.divide(x, y) Return *x* divided by *y*. -.. method:: Context.divmod(x, y) - - Divides two numbers and returns the integer part of the result. - - -.. method:: Context.max(x, y) - - Compare two values numerically and return the maximum. - - If they are numerically equal then the left-hand operand is chosen as the - result. +.. method:: Context.divide_int(x, y) + Return *x* divided by *y*, truncated to an integer. -.. method:: Context.min(x, y) - Compare two values numerically and return the minimum. +.. method:: Context.divmod(x, y) - If they are numerically equal then the left-hand operand is chosen as the - result. + Divides two numbers and returns the integer part of the result. .. method:: Context.minus(x) @@ -636,14 +999,6 @@ Return the product of *x* and *y*. -.. method:: Context.normalize(x) - - Normalize reduces an operand to its simplest form. - - Essentially a :meth:`plus` operation with all trailing zeros removed from the - result. - - .. method:: Context.plus(x) Plus corresponds to the unary prefix plus operator in Python. This operation @@ -653,33 +1008,31 @@ .. method:: Context.power(x, y[, modulo]) - Return ``x ** y`` to the *modulo* if given. - - The right-hand operand must be a whole number whose integer part (after any - exponent has been applied) has no more than 9 digits and whose fractional part - (if any) is all zeros before any rounding. The operand may be positive, - negative, or zero; if negative, the absolute value of the power is used, and the - left-hand operand is inverted (divided into 1) before use. - - If the increased precision needed for the intermediate calculations exceeds the - capabilities of the implementation then an :const:`InvalidOperation` condition - is signaled. - - If, when raising to a negative power, an underflow occurs during the division - into 1, the operation is not halted at that point but continues. - + Return ``x`` to the power of ``y``, reduced modulo ``modulo`` if + given. -.. method:: Context.quantize(x, y) - - Returns a value equal to *x* after rounding and having the exponent of *y*. - - Unlike other operations, if the length of the coefficient after the quantize - operation would be greater than precision, then an :const:`InvalidOperation` is - signaled. This guarantees that, unless there is an error condition, the - quantized exponent is always equal to that of the right-hand operand. - - Also unlike other operations, quantize never signals Underflow, even if the - result is subnormal and inexact. + With two arguments, compute ``x**y``. If ``x`` is negative then + ``y`` must be integral. The result will be inexact unless ``y`` is + integral and the result is finite and can be expressed exactly in + 'precision' digits. The result should always be correctly rounded, + using the rounding mode of the current thread's context. + + With three arguments, compute ``(x**y) % modulo``. For the three + argument form, the following restrictions on the arguments hold: + + - all three arguments must be integral + - ``y`` must be nonnegative + - at least one of ``x`` or ``y`` must be nonzero + - ``modulo`` must be nonzero and have at most 'precision' digits + + The result of ``Context.power(x, y, modulo)`` is identical to + the result that would be obtained by computing ``(x**y) % + modulo`` with unbounded precision, but is computed more + efficiently. It is always exact. + + .. versionchanged:: 2.6 + ``y`` may now be nonintegral in ``x**y``. + Stricter requirements for the three-argument version. .. method:: Context.remainder(x, y) @@ -689,47 +1042,10 @@ The sign of the result, if non-zero, is the same as that of the original dividend. - -.. method:: Context.remainder_near(x, y) - - Computed the modulo as either a positive or negative value depending on which is - closest to zero. For instance, ``Decimal(10).remainder_near(6)`` returns - ``Decimal("-2")`` which is closer to zero than ``Decimal("4")``. - - If both are equally close, the one chosen will have the same sign as *self*. - - -.. method:: Context.same_quantum(x, y) - - Test whether *x* and *y* have the same exponent or whether both are - :const:`NaN`. - - -.. method:: Context.sqrt(x) - - Return the square root of *x* to full precision. - - .. method:: Context.subtract(x, y) Return the difference between *x* and *y*. - -.. method:: Context.to_eng_string() - - Convert to engineering-type string. - - Engineering notation has an exponent which is a multiple of 3, so there are up - to 3 digits left of the decimal place. For example, converts - ``Decimal('123E+1')`` to ``Decimal("1.23E+3")`` - - -.. method:: Context.to_integral(x) - - Rounds to the nearest integer without signaling :const:`Inexact` or - :const:`Rounded`. - - .. method:: Context.to_sci_string(x) Converts a number to a string using scientific notation. @@ -762,7 +1078,7 @@ Typically, clamping occurs when an exponent falls outside the context's :attr:`Emin` and :attr:`Emax` limits. If possible, the exponent is reduced to - fit by adding zeroes to the coefficient. + fit by adding zeros to the coefficient. .. class:: DecimalException @@ -915,7 +1231,7 @@ The number system for the :mod:`decimal` module provides special values including :const:`NaN`, :const:`sNaN`, :const:`-Infinity`, :const:`Infinity`, -and two zeroes, :const:`+0` and :const:`-0`. +and two zeros, :const:`+0` and :const:`-0`. Infinities can be constructed directly with: ``Decimal('Infinity')``. Also, they can arise from dividing by zero when the :exc:`DivisionByZero` signal is From python-checkins at python.org Fri Sep 14 21:40:36 2007 From: python-checkins at python.org (thomas.heller) Date: Fri, 14 Sep 2007 21:40:36 +0200 (CEST) Subject: [Python-checkins] r58155 - python/trunk/Lib/ctypes/util.py Message-ID: <20070914194036.07D061E4009@bag.python.org> Author: thomas.heller Date: Fri Sep 14 21:40:35 2007 New Revision: 58155 Modified: python/trunk/Lib/ctypes/util.py Log: ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris. Fixes issue #1777530; will backport to release25-maint. Modified: python/trunk/Lib/ctypes/util.py ============================================================================== --- python/trunk/Lib/ctypes/util.py (original) +++ python/trunk/Lib/ctypes/util.py Fri Sep 14 21:40:35 2007 @@ -66,15 +66,27 @@ return None return res.group(0) - def _get_soname(f): - # assuming GNU binutils / ELF - if not f: - return None - cmd = "objdump -p -j .dynamic 2>/dev/null " + f - res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read()) - if not res: - return None - return res.group(1) + + if sys.platform == "sunos5": + # use /usr/ccs/bin/dump on solaris + def _get_soname(f): + if not f: + return None + cmd = "/usr/ccs/bin/dump -Lpv 2>/dev/null " + f + res = re.search(r'\[.*\]\sSONAME\s+([^\s]+)', os.popen(cmd).read()) + if not res: + return None + return res.group(1) + else: + def _get_soname(f): + # assuming GNU binutils / ELF + if not f: + return None + cmd = "objdump -p -j .dynamic 2>/dev/null " + f + res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read()) + if not res: + return None + return res.group(1) if (sys.platform.startswith("freebsd") or sys.platform.startswith("openbsd") From python-checkins at python.org Fri Sep 14 22:05:26 2007 From: python-checkins at python.org (thomas.heller) Date: Fri, 14 Sep 2007 22:05:26 +0200 (CEST) Subject: [Python-checkins] r58158 - in python/branches/release25-maint: Lib/ctypes/util.py Misc/NEWS Message-ID: <20070914200526.E16011E400F@bag.python.org> Author: thomas.heller Date: Fri Sep 14 22:05:26 2007 New Revision: 58158 Modified: python/branches/release25-maint/Lib/ctypes/util.py python/branches/release25-maint/Misc/NEWS Log: ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris. Fixes issue #1777530; backported from trunk. Modified: python/branches/release25-maint/Lib/ctypes/util.py ============================================================================== --- python/branches/release25-maint/Lib/ctypes/util.py (original) +++ python/branches/release25-maint/Lib/ctypes/util.py Fri Sep 14 22:05:26 2007 @@ -66,15 +66,27 @@ return None return res.group(0) - def _get_soname(f): - # assuming GNU binutils / ELF - if not f: - return None - cmd = "objdump -p -j .dynamic 2>/dev/null " + f - res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read()) - if not res: - return None - return res.group(1) + + if sys.platform == "sunos5": + # use /usr/ccs/bin/dump on solaris + def _get_soname(f): + if not f: + return None + cmd = "/usr/ccs/bin/dump -Lpv 2>/dev/null " + f + res = re.search(r'\[.*\]\sSONAME\s+([^\s]+)', os.popen(cmd).read()) + if not res: + return None + return res.group(1) + else: + def _get_soname(f): + # assuming GNU binutils / ELF + if not f: + return None + cmd = "objdump -p -j .dynamic 2>/dev/null " + f + res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read()) + if not res: + return None + return res.group(1) if (sys.platform.startswith("freebsd") or sys.platform.startswith("openbsd") Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Fri Sep 14 22:05:26 2007 @@ -32,6 +32,9 @@ Library ------- +- Bug #1777530: ctypes.util.find_library uses dump(1) instead of + objdump(1) on Solaris. + - Bug #1153: repr.repr() now doesn't require set and dictionary items to be orderable to properly represent them. From buildbot at python.org Fri Sep 14 22:09:12 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 20:09:12 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20070914200913.1298C1E401E@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/819 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_xmlrpc make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 22:44:58 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 20:44:58 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc 2.5 Message-ID: <20070914204458.84C8D1E4009@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%202.5/builds/300 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home2/buildbot/slave/2.5.loewis-linux/build/Lib/threading.py", line 460, in __bootstrap self.run() File "/home2/buildbot/slave/2.5.loewis-linux/build/Lib/test/test_urllib2_localnet.py", line 64, in run self._RequestHandlerClass) File "/home2/buildbot/slave/2.5.loewis-linux/build/Lib/test/test_urllib2_localnet.py", line 22, in __init__ RequestHandlerClass) File "/home2/buildbot/slave/2.5.loewis-linux/build/Lib/SocketServer.py", line 330, in __init__ self.server_bind() File "/home2/buildbot/slave/2.5.loewis-linux/build/Lib/BaseHTTPServer.py", line 101, in server_bind SocketServer.TCPServer.server_bind(self) File "/home2/buildbot/slave/2.5.loewis-linux/build/Lib/SocketServer.py", line 341, in server_bind self.socket.bind(self.server_address) File "", line 1, in bind error: (98, 'Address already in use') sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 22:50:29 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 20:50:29 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070914205029.8B1541E4013@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/50 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_threading sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 23:16:33 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 21:16:33 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu 2.5 Message-ID: <20070914211633.84F7F1E400D@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%202.5/builds/364 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Fri Sep 14 23:19:24 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 21:19:24 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 2.5 Message-ID: <20070914211924.EF54B1E4009@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%202.5/builds/10 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Fri Sep 14 23:29:53 2007 From: python-checkins at python.org (facundo.batista) Date: Fri, 14 Sep 2007 23:29:53 +0200 (CEST) Subject: [Python-checkins] r58159 - python/trunk/Doc/library/decimal.rst Message-ID: <20070914212953.1CC901E4009@bag.python.org> Author: facundo.batista Date: Fri Sep 14 23:29:52 2007 New Revision: 58159 Modified: python/trunk/Doc/library/decimal.rst Log: Some additions (examples and a bit on the tutorial). Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Fri Sep 14 23:29:52 2007 @@ -128,6 +128,8 @@ Decimal("3.14") >>> Decimal(str(2.0 ** 0.5)) Decimal("1.41421356237") + >>> Decimal(2) ** Decimal("0.5") + Decimal("1.414213562373095048801688724") >>> Decimal("NaN") Decimal("NaN") >>> Decimal("-Infinity") @@ -177,6 +179,17 @@ >>> c % a Decimal("0.77") +And some mathematic functions are also available to Decimal:: + + >>> Decimal(2).sqrt() + Decimal("1.414213562373095048801688724") + >>> Decimal(1).exp() + Decimal("2.718281828459045235360287471") + >>> Decimal("10").ln() + Decimal("2.302585092994045684017991455") + >>> Decimal("10").log10() + Decimal("1") + The :meth:`quantize` method rounds a number to a fixed exponent. This method is useful for monetary applications that often round results to a fixed number of places:: @@ -419,6 +432,11 @@ given number. The result is correctly rounded using the :const:`ROUND_HALF_EVEN` rounding mode. + >>> Decimal(1).exp() + Decimal("2.718281828459045235360287471") + >>> Decimal(321).exp() + Decimal("2.561702493119680037517373933E+139") + .. versionadded:: 2.6 .. method:: Decimal.fma(other, third[, context]) @@ -426,78 +444,82 @@ Fused multiply-add. Return self*other+third with no rounding of the intermediate product self*other. + >>> Decimal(2).fma(3, 5) + Decimal("11") + .. versionadded:: 2.6 .. method:: Decimal.is_canonical() - Return ``Decimal(1)`` if the argument is canonical and - ``Decimal(0)`` otherwise. Currently, a :class:`Decimal` instance + Return :const:`True` if the argument is canonical and + :const:`False` otherwise. Currently, a :class:`Decimal` instance is always canonical, so this operation always returns - ``Decimal(1)``. + :const:`True`. .. versionadded:: 2.6 .. method:: is_finite() - Return ``Decimal(1)`` if the argument is a finite number, and - ``Decimal(0)`` if the argument is an infinity or a NaN. + Return :const:`True` if the argument is a finite number, and + :const:`False` if the argument is an infinity or a NaN. .. versionadded:: 2.6 .. method:: is_infinite() - Return ``Decimal(1)`` if the argument is either positive or - negative infinity and ``Decimal(0)`` otherwise. + Return :const:`True` if the argument is either positive or + negative infinity and :const:`False` otherwise. .. versionadded:: 2.6 .. method:: is_nan() - Return ``Decimal(1)`` if the argument is a (quiet or signaling) - NaN and ``Decimal(0)`` otherwise. + Return :const:`True` if the argument is a (quiet or signaling) + NaN and :const:`False` otherwise. .. versionadded:: 2.6 .. method:: is_normal() - Return ``Decimal(1)`` if the argument is a *normal* finite number. - Return ``Decimal(0)`` if the argument is zero, subnormal, infinite + Return :const:`True` if the argument is a *normal* finite number. + Return :const:`False` if the argument is zero, subnormal, infinite or a NaN. .. versionadded:: 2.6 .. method:: is_qnan() - Return ``Decimal(1)`` if the argument is a quiet NaN, and ``Decimal(0)`` otherwise. + Return :const:`True` if the argument is a quiet NaN, and + :const:`False` otherwise. .. versionadded:: 2.6 .. method:: is_signed() - Return ``Decimal(1)`` if the argument has a negative sign and - ``Decimal(0)`` otherwise. Note that zeros and NaNs can both carry + Return :const:`True` if the argument has a negative sign and + :const:`False` otherwise. Note that zeros and NaNs can both carry signs. .. versionadded:: 2.6 .. method:: is_snan() - Return ``Decimal(1)`` if the argument is a signaling NaN and - ``Decimal(0)`` otherwise. + Return :const:`True` if the argument is a signaling NaN and + :const:`False` otherwise. .. versionadded:: 2.6 .. method:: is_subnormal() - Return ``Decimal(1)`` if the argument is subnormal, and - ``Decimal(0)`` otherwise. + Return :const:`True` if the argument is subnormal, and + :const:`False` otherwise. .. versionadded:: 2.6 .. method:: is_zero() - Return ``Decimal(1)`` if the argument is a (positive or negative) - zero and ``Decimal(0)`` otherwise. + Return :const:`True` if the argument is a (positive or negative) + zero and :const:`False` otherwise. .. versionadded:: 2.6 @@ -640,6 +662,9 @@ Returns a value equal to the first operand after rounding and having the exponent of the second operand. + >>> Decimal("1.41421356").quantize(Decimal("1.000")) + Decimal("1.414") + Unlike other operations, if the length of the coefficient after the quantize operation would be greater than precision, then an :const:`InvalidOperation` is signaled. This guarantees that, unless From buildbot at python.org Sat Sep 15 00:14:55 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 14 Sep 2007 22:14:55 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 2.5 Message-ID: <20070914221455.F2BA81E4009@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%202.5/builds/40 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_resource.py", line 42, in f.close() IOError: [Errno 27] File too large make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Sep 15 02:23:04 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 15 Sep 2007 00:23:04 +0000 Subject: [Python-checkins] buildbot failure in alpha Debian 2.5 Message-ID: <20070915002304.E46001E4009@bag.python.org> The Buildbot has detected a new failure of alpha Debian 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Debian%202.5/builds/43 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-alpha Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_pow test_resource ====================================================================== ERROR: test_bug705231 (test.test_pow.PowTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-debian-alpha/build/Lib/test/test_pow.py", line 109, in test_bug705231 eq(pow(a, 1.23e167), 1.0) ValueError: negative number cannot be raised to a fractional power Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/2.5.klose-debian-alpha/build/Lib/test/test_resource.py", line 42, in f.close() IOError: [Errno 27] File too large make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Sep 15 03:21:59 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 15 Sep 2007 01:21:59 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian 2.5 Message-ID: <20070915012159.4A2B91E4009@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%202.5/builds/55 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller BUILD FAILED: failed test clean Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Sat Sep 15 05:54:28 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 15 Sep 2007 03:54:28 +0000 Subject: [Python-checkins] buildbot failure in MIPS Debian 2.5 Message-ID: <20070915035429.025D51E4016@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%202.5/builds/7 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-mips Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/2.5.klose-debian-mips/build/Lib/test/test_resource.py", line 42, in f.close() IOError: [Errno 27] File too large make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Sep 15 09:20:12 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 15 Sep 2007 07:20:12 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 2.5 Message-ID: <20070915072013.04F091E400C@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%202.5/builds/55 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Sat Sep 15 18:53:37 2007 From: python-checkins at python.org (georg.brandl) Date: Sat, 15 Sep 2007 18:53:37 +0200 (CEST) Subject: [Python-checkins] r58160 - python/trunk/Doc/library/undoc.rst Message-ID: <20070915165337.5CCE91E4003@bag.python.org> Author: georg.brandl Date: Sat Sep 15 18:53:36 2007 New Revision: 58160 Modified: python/trunk/Doc/library/undoc.rst Log: Remove bdb from the "undocumented modules" list. Modified: python/trunk/Doc/library/undoc.rst ============================================================================== --- python/trunk/Doc/library/undoc.rst (original) +++ python/trunk/Doc/library/undoc.rst Sat Sep 15 18:53:36 2007 @@ -19,9 +19,6 @@ Some of these are very old and/or not very robust; marked with "hmm." -:mod:`bdb` - --- A generic Python debugger base class (used by pdb). - :mod:`ihooks` --- Import hook support (for :mod:`rexec`; may become obsolete). From python-checkins at python.org Sat Sep 15 21:50:19 2007 From: python-checkins at python.org (georg.brandl) Date: Sat, 15 Sep 2007 21:50:19 +0200 (CEST) Subject: [Python-checkins] r58161 - doctools/trunk/sphinx/templates/genindex.html Message-ID: <20070915195019.9DB3F1E4015@bag.python.org> Author: georg.brandl Date: Sat Sep 15 21:50:19 2007 New Revision: 58161 Modified: doctools/trunk/sphinx/templates/genindex.html Log: Properly escape index entry names. Modified: doctools/trunk/sphinx/templates/genindex.html ============================================================================== --- doctools/trunk/sphinx/templates/genindex.html (original) +++ doctools/trunk/sphinx/templates/genindex.html Sat Sep 15 21:50:19 2007 @@ -18,7 +18,7 @@ {%- set numcols = 1 %} {%- set numitems = 0 %} {% for entryname, (links, subitems) in entries %} -
{%- if links -%}{{ entryname }} +
{%- if links -%}{{ entryname|e }} {%- for link in links[1:] %}, [Link]{% endfor -%} {%- else -%} {{ entryname }} @@ -26,7 +26,7 @@ {%- if subitems %}
{%- for subentryname, subentrylinks in subitems %} -
{{ subentryname }} +
{{ subentryname|e }} {%- for link in subentrylinks[1:] %}, [Link]{% endfor -%}
{%- endfor %} From python-checkins at python.org Sun Sep 16 14:31:17 2007 From: python-checkins at python.org (erik.forsberg) Date: Sun, 16 Sep 2007 14:31:17 +0200 (CEST) Subject: [Python-checkins] r58162 - tracker/instances/python-dev/extensions/local_replace.py Message-ID: <20070916123118.01A8D1E4011@bag.python.org> Author: erik.forsberg Date: Sun Sep 16 14:31:17 2007 New Revision: 58162 Modified: tracker/instances/python-dev/extensions/local_replace.py Log: Automatically link to svn.python.org for revision ID's. Resolves most of http://psf.upfronthosting.co.za/roundup/meta/issue154. Modified: tracker/instances/python-dev/extensions/local_replace.py ============================================================================== --- tracker/instances/python-dev/extensions/local_replace.py (original) +++ tracker/instances/python-dev/extensions/local_replace.py Sun Sep 16 14:31:17 2007 @@ -2,7 +2,11 @@ substitutions = [ (re.compile('\#(?P\s*)(?P\d+)'), "#\g\g" ), - ] + (re.compile('(?P\s+)revision(?P\s*)(?P\d+)'), + "\grevision\g\g"), + (re.compile('(?P\s+)(?Pr|r\s+)(?P\d+)'), + "\g\g\g"), + ] def localReplace(message): @@ -16,3 +20,11 @@ def init(instance): instance.registerUtil('localReplace', localReplace) + +if "__main__" == __name__: + print " revision 222", localReplace(" revision 222") + print " wordthatendswithr 222", localReplace(" wordthatendswithr 222") + print " r222", localReplace(" r222") + print " r 222", localReplace(" r 222") + print " #555", localReplace(" #555") + From python-checkins at python.org Sun Sep 16 15:52:31 2007 From: python-checkins at python.org (skip.montanaro) Date: Sun, 16 Sep 2007 15:52:31 +0200 (CEST) Subject: [Python-checkins] r58163 - peps/trunk/pep-0011.txt Message-ID: <20070916135231.E40B31E4002@bag.python.org> Author: skip.montanaro Date: Sun Sep 16 15:52:31 2007 New Revision: 58163 Modified: peps/trunk/pep-0011.txt Log: Note maintainers for Cygwin and OS/2. Modified: peps/trunk/pep-0011.txt ============================================================================== --- peps/trunk/pep-0011.txt (original) +++ peps/trunk/pep-0011.txt Sun Sep 16 15:52:31 2007 @@ -146,7 +146,9 @@ Platform Maintainers - TBD. + Cygwin Jason Tishler (jason at tishler.net) + OS2/EMX Andrew MacIntyre (andymac at bullseye.apana.org.au) + More TBD. Copyright From python-checkins at python.org Mon Sep 17 00:06:01 2007 From: python-checkins at python.org (bill.janssen) Date: Mon, 17 Sep 2007 00:06:01 +0200 (CEST) Subject: [Python-checkins] r58164 - in python/trunk: Doc/library/ssl.rst Lib/ssl.py Lib/test/test_socket_ssl.py Lib/test/test_ssl.py Modules/_ssl.c Message-ID: <20070916220601.3424D1E4002@bag.python.org> Author: bill.janssen Date: Mon Sep 17 00:06:00 2007 New Revision: 58164 Modified: python/trunk/Doc/library/ssl.rst python/trunk/Lib/ssl.py python/trunk/Lib/test/test_socket_ssl.py python/trunk/Lib/test/test_ssl.py python/trunk/Modules/_ssl.c Log: Add support for asyncore server-side SSL support. This requires adding the 'makefile' method to ssl.SSLSocket, and importing the requisite fakefile class from socket.py, and making the appropriate changes to it to make it use the SSL connection. Added sample HTTPS server to test_ssl.py, and test that uses it. Change SSL tests to use https://svn.python.org/, instead of www.sf.net and pop.gmail.com. Added utility function to ssl module, get_server_certificate, to wrap up the several things to be done to pull a certificate from a remote server. Modified: python/trunk/Doc/library/ssl.rst ============================================================================== --- python/trunk/Doc/library/ssl.rst (original) +++ python/trunk/Doc/library/ssl.rst Mon Sep 17 00:06:00 2007 @@ -54,7 +54,7 @@ network connection. This error is a subtype of :exc:`socket.error`, which in turn is a subtype of :exc:`IOError`. -.. function:: wrap_socket (sock [, keyfile=None, certfile=None, server_side=False, cert_reqs=CERT_NONE, ssl_version={see docs}, ca_certs=None]) +.. function:: wrap_socket (sock, keyfile=None, certfile=None, server_side=False, cert_reqs=CERT_NONE, ssl_version={see docs}, ca_certs=None) Takes an instance ``sock`` of :class:`socket.socket`, and returns an instance of :class:`ssl.SSLSocket`, a subtype of :class:`socket.socket`, which wraps the underlying socket in an SSL context. @@ -162,6 +162,28 @@ 'Wed May 9 00:00:00 2007' >>> +.. function:: get_server_certificate (addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None) + + Given the address ``addr`` of an SSL-protected server, as a + (*hostname*, *port-number*) pair, fetches the server's certificate, + and returns it as a PEM-encoded string. If ``ssl_version`` is + specified, uses that version of the SSL protocol to attempt to + connect to the server. If ``ca_certs`` is specified, it should be + a file containing a list of root certificates, the same format as + used for the same parameter in :func:`wrap_socket`. The call will + attempt to validate the server certificate against that set of root + certificates, and will fail if the validation attempt fails. + +.. function:: DER_cert_to_PEM_cert (DER_cert_bytes) + + Given a certificate as a DER-encoded blob of bytes, returns a PEM-encoded + string version of the same certificate. + +.. function:: PEM_cert_to_DER_cert (PEM_cert_string) + + Given a certificate as an ASCII PEM string, returns a DER-encoded + sequence of bytes for that same certificate. + .. data:: CERT_NONE Value to pass to the ``cert_reqs`` parameter to :func:`sslobject` @@ -253,8 +275,12 @@ If the ``binary_form`` parameter is :const:`True`, and a certificate was provided, this method returns the DER-encoded form - of the entire certificate as a sequence of bytes. Note that this - binary certificate may not be valid. + of the entire certificate as a sequence of bytes, or :const:`None` if the + peer did not provide a certificate. This return + value is independent of validation; if validation was required + (:const:`CERT_OPTIONAL` or :const:`CERT_REQUIRED`), it will have + been validated, but if :const:`CERT_NONE` was used to establish the + connection, the certificate, if present, will not have been validated. .. method:: SSLSocket.cipher() @@ -263,12 +289,6 @@ number of secret bits being used. If no connection has been established, returns ``None``. -.. method:: SSLSocket.ssl_shutdown() - - Closes the SSL context (if any) over the socket, but leaves the socket connection - open for further use, if both sides are willing. This is different from :meth:`socket.socket.shutdown`, - which will close the connection, but leave the local socket available for further use. - .. index:: single: certificates @@ -351,6 +371,7 @@ `CACert.org `_, `Thawte `_, `Verisign `_, +`Positive SSL `_ (used by python.org), `Equifax and GeoTrust `_. In general, if you are using Modified: python/trunk/Lib/ssl.py ============================================================================== --- python/trunk/Lib/ssl.py (original) +++ python/trunk/Lib/ssl.py Mon Sep 17 00:06:00 2007 @@ -55,7 +55,7 @@ PROTOCOL_TLSv1 """ -import os, sys +import os, sys, textwrap import _ssl # if we can't import it, let the error propagate @@ -76,19 +76,7 @@ from socket import socket from socket import getnameinfo as _getnameinfo - -def get_protocol_name (protocol_code): - if protocol_code == PROTOCOL_TLSv1: - return "TLSv1" - elif protocol_code == PROTOCOL_SSLv23: - return "SSLv23" - elif protocol_code == PROTOCOL_SSLv2: - return "SSLv2" - elif protocol_code == PROTOCOL_SSLv3: - return "SSLv3" - else: - return "" - +import base64 # for DER-to-PEM translation class SSLSocket (socket): @@ -193,21 +181,12 @@ else: return socket.recv_from(self, addr, buflen, flags) - def ssl_shutdown(self): - - """Shuts down the SSL channel over this socket (if active), - without closing the socket connection.""" - - if self._sslobj: - self._sslobj.shutdown() - self._sslobj = None - def shutdown(self, how): - self.ssl_shutdown() + self._sslobj = None socket.shutdown(self, how) def close(self): - self.ssl_shutdown() + self._sslobj = None socket.close(self) def connect(self, addr): @@ -236,6 +215,248 @@ self.ca_certs), addr) + def makefile(self, mode='r', bufsize=-1): + + """Ouch. Need to make and return a file-like object that + works with the SSL connection.""" + + if self._sslobj: + return SSLFileStream(self._sslobj, mode, bufsize) + else: + return socket.makefile(self, mode, bufsize) + + +class SSLFileStream: + + """A class to simulate a file stream on top of a socket. + Most of this is just lifted from the socket module, and + adjusted to work with an SSL stream instead of a socket.""" + + + default_bufsize = 8192 + name = "" + + __slots__ = ["mode", "bufsize", "softspace", + # "closed" is a property, see below + "_sslobj", "_rbufsize", "_wbufsize", "_rbuf", "_wbuf", + "_close", "_fileno"] + + def __init__(self, sslobj, mode='rb', bufsize=-1, close=False): + self._sslobj = sslobj + self.mode = mode # Not actually used in this version + if bufsize < 0: + bufsize = self.default_bufsize + self.bufsize = bufsize + self.softspace = False + if bufsize == 0: + self._rbufsize = 1 + elif bufsize == 1: + self._rbufsize = self.default_bufsize + else: + self._rbufsize = bufsize + self._wbufsize = bufsize + self._rbuf = "" # A string + self._wbuf = [] # A list of strings + self._close = close + self._fileno = -1 + + def _getclosed(self): + return self._sslobj is None + closed = property(_getclosed, doc="True if the file is closed") + + def fileno(self): + return self._fileno + + def close(self): + try: + if self._sslobj: + self.flush() + finally: + if self._close and self._sslobj: + self._sslobj.close() + self._sslobj = None + + def __del__(self): + try: + self.close() + except: + # close() may fail if __init__ didn't complete + pass + + def flush(self): + if self._wbuf: + buffer = "".join(self._wbuf) + self._wbuf = [] + count = 0 + while (count < len(buffer)): + written = self._sslobj.write(buffer) + count += written + buffer = buffer[written:] + + def write(self, data): + data = str(data) # XXX Should really reject non-string non-buffers + if not data: + return + self._wbuf.append(data) + if (self._wbufsize == 0 or + self._wbufsize == 1 and '\n' in data or + self._get_wbuf_len() >= self._wbufsize): + self.flush() + + def writelines(self, list): + # XXX We could do better here for very long lists + # XXX Should really reject non-string non-buffers + self._wbuf.extend(filter(None, map(str, list))) + if (self._wbufsize <= 1 or + self._get_wbuf_len() >= self._wbufsize): + self.flush() + + def _get_wbuf_len(self): + buf_len = 0 + for x in self._wbuf: + buf_len += len(x) + return buf_len + + def read(self, size=-1): + data = self._rbuf + if size < 0: + # Read until EOF + buffers = [] + if data: + buffers.append(data) + self._rbuf = "" + if self._rbufsize <= 1: + recv_size = self.default_bufsize + else: + recv_size = self._rbufsize + while True: + data = self._sslobj.read(recv_size) + if not data: + break + buffers.append(data) + return "".join(buffers) + else: + # Read until size bytes or EOF seen, whichever comes first + buf_len = len(data) + if buf_len >= size: + self._rbuf = data[size:] + return data[:size] + buffers = [] + if data: + buffers.append(data) + self._rbuf = "" + while True: + left = size - buf_len + recv_size = max(self._rbufsize, left) + data = self._sslobj.read(recv_size) + if not data: + break + buffers.append(data) + n = len(data) + if n >= left: + self._rbuf = data[left:] + buffers[-1] = data[:left] + break + buf_len += n + return "".join(buffers) + + def readline(self, size=-1): + data = self._rbuf + if size < 0: + # Read until \n or EOF, whichever comes first + if self._rbufsize <= 1: + # Speed up unbuffered case + assert data == "" + buffers = [] + while data != "\n": + data = self._sslobj.read(1) + if not data: + break + buffers.append(data) + return "".join(buffers) + nl = data.find('\n') + if nl >= 0: + nl += 1 + self._rbuf = data[nl:] + return data[:nl] + buffers = [] + if data: + buffers.append(data) + self._rbuf = "" + while True: + data = self._sslobj.read(self._rbufsize) + if not data: + break + buffers.append(data) + nl = data.find('\n') + if nl >= 0: + nl += 1 + self._rbuf = data[nl:] + buffers[-1] = data[:nl] + break + return "".join(buffers) + else: + # Read until size bytes or \n or EOF seen, whichever comes first + nl = data.find('\n', 0, size) + if nl >= 0: + nl += 1 + self._rbuf = data[nl:] + return data[:nl] + buf_len = len(data) + if buf_len >= size: + self._rbuf = data[size:] + return data[:size] + buffers = [] + if data: + buffers.append(data) + self._rbuf = "" + while True: + data = self._sslobj.read(self._rbufsize) + if not data: + break + buffers.append(data) + left = size - buf_len + nl = data.find('\n', 0, left) + if nl >= 0: + nl += 1 + self._rbuf = data[nl:] + buffers[-1] = data[:nl] + break + n = len(data) + if n >= left: + self._rbuf = data[left:] + buffers[-1] = data[:left] + break + buf_len += n + return "".join(buffers) + + def readlines(self, sizehint=0): + total = 0 + list = [] + while True: + line = self.readline() + if not line: + break + list.append(line) + total += len(line) + if sizehint and total >= sizehint: + break + return list + + # Iterator protocols + + def __iter__(self): + return self + + def next(self): + line = self.readline() + if not line: + raise StopIteration + return line + + + + def wrap_socket(sock, keyfile=None, certfile=None, server_side=False, cert_reqs=CERT_NONE, ssl_version=PROTOCOL_SSLv23, ca_certs=None): @@ -255,6 +476,71 @@ import time return time.mktime(time.strptime(cert_time, "%b %d %H:%M:%S %Y GMT")) +PEM_HEADER = "-----BEGIN CERTIFICATE-----" +PEM_FOOTER = "-----END CERTIFICATE-----" + +def DER_cert_to_PEM_cert(der_cert_bytes): + + """Takes a certificate in binary DER format and returns the + PEM version of it as a string.""" + + if hasattr(base64, 'standard_b64encode'): + # preferred because older API gets line-length wrong + f = base64.standard_b64encode(der_cert_bytes) + return (PEM_HEADER + '\n' + + textwrap.fill(f, 64) + + PEM_FOOTER + '\n') + else: + return (PEM_HEADER + '\n' + + base64.encodestring(der_cert_bytes) + + PEM_FOOTER + '\n') + +def PEM_cert_to_DER_cert(pem_cert_string): + + """Takes a certificate in ASCII PEM format and returns the + DER-encoded version of it as a byte sequence""" + + if not pem_cert_string.startswith(PEM_HEADER): + raise ValueError("Invalid PEM encoding; must start with %s" + % PEM_HEADER) + if not pem_cert_string.strip().endswith(PEM_FOOTER): + raise ValueError("Invalid PEM encoding; must end with %s" + % PEM_FOOTER) + d = pem_cert_string.strip()[len(PEM_HEADER):-len(PEM_FOOTER)] + return base64.decodestring(d) + +def get_server_certificate (addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None): + + """Retrieve the certificate from the server at the specified address, + and return it as a PEM-encoded string. + If 'ca_certs' is specified, validate the server cert against it. + If 'ssl_version' is specified, use it in the connection attempt.""" + + host, port = addr + if (ca_certs is not None): + cert_reqs = CERT_REQUIRED + else: + cert_reqs = CERT_NONE + s = wrap_socket(socket(), ssl_version=ssl_version, + cert_reqs=cert_reqs, ca_certs=ca_certs) + s.connect(addr) + dercert = s.getpeercert(True) + s.close() + return DER_cert_to_PEM_cert(dercert) + +def get_protocol_name (protocol_code): + if protocol_code == PROTOCOL_TLSv1: + return "TLSv1" + elif protocol_code == PROTOCOL_SSLv23: + return "SSLv23" + elif protocol_code == PROTOCOL_SSLv2: + return "SSLv2" + elif protocol_code == PROTOCOL_SSLv3: + return "SSLv3" + else: + return "" + + # a replacement for the old socket.ssl function def sslwrap_simple (sock, keyfile=None, certfile=None): Modified: python/trunk/Lib/test/test_socket_ssl.py ============================================================================== --- python/trunk/Lib/test/test_socket_ssl.py (original) +++ python/trunk/Lib/test/test_socket_ssl.py Mon Sep 17 00:06:00 2007 @@ -113,7 +113,7 @@ import os, httplib, ssl with test_support.transient_internet(): s = socket.socket(socket.AF_INET) - s.connect(("www.sf.net", 443)) + s.connect(("svn.python.org", 443)) fd = s._sock.fileno() sock = ssl.wrap_socket(s) s = None Modified: python/trunk/Lib/test/test_ssl.py ============================================================================== --- python/trunk/Lib/test/test_ssl.py (original) +++ python/trunk/Lib/test/test_ssl.py Mon Sep 17 00:06:00 2007 @@ -9,10 +9,13 @@ import time import os import pprint -import urllib +import urllib, urlparse import shutil import traceback +from BaseHTTPServer import HTTPServer +from SimpleHTTPServer import SimpleHTTPRequestHandler + # Optionally test SSL support, if we have it in the tested platform skip_expected = False try: @@ -21,6 +24,7 @@ skip_expected = True CERTFILE = None +SVN_PYTHON_ORG_ROOT_CERT = None TESTPORT = 10025 @@ -34,24 +38,24 @@ def testSSLconnect(self): import os - with test_support.transient_internet(): - s = ssl.wrap_socket(socket.socket(socket.AF_INET), - cert_reqs=ssl.CERT_NONE) - s.connect(("pop.gmail.com", 995)) - c = s.getpeercert() - if c: - raise test_support.TestFailed("Peer cert %s shouldn't be here!") + s = ssl.wrap_socket(socket.socket(socket.AF_INET), + cert_reqs=ssl.CERT_NONE) + s.connect(("svn.python.org", 443)) + c = s.getpeercert() + if c: + raise test_support.TestFailed("Peer cert %s shouldn't be here!") + s.close() + + # this should fail because we have no verification certs + s = ssl.wrap_socket(socket.socket(socket.AF_INET), + cert_reqs=ssl.CERT_REQUIRED) + try: + s.connect(("svn.python.org", 443)) + except ssl.SSLError: + pass + finally: s.close() - # this should fail because we have no verification certs - s = ssl.wrap_socket(socket.socket(socket.AF_INET), - cert_reqs=ssl.CERT_REQUIRED) - try: - s.connect(("pop.gmail.com", 995)) - except ssl.SSLError: - pass - finally: - s.close() def testCrucialConstants(self): ssl.PROTOCOL_SSLv2 @@ -84,6 +88,70 @@ if test_support.verbose: sys.stdout.write("\n" + pprint.pformat(p) + "\n") + def testDERtoPEM(self): + + pem = open(SVN_PYTHON_ORG_ROOT_CERT, 'r').read() + d1 = ssl.PEM_cert_to_DER_cert(pem) + p2 = ssl.DER_cert_to_PEM_cert(d1) + d2 = ssl.PEM_cert_to_DER_cert(p2) + if (d1 != d2): + raise test_support.TestFailed("PEM-to-DER or DER-to-PEM translation failed") + + +class NetworkTests(unittest.TestCase): + + def testConnect(self): + import os + s = ssl.wrap_socket(socket.socket(socket.AF_INET), + cert_reqs=ssl.CERT_NONE) + s.connect(("svn.python.org", 443)) + c = s.getpeercert() + if c: + raise test_support.TestFailed("Peer cert %s shouldn't be here!") + s.close() + + # this should fail because we have no verification certs + s = ssl.wrap_socket(socket.socket(socket.AF_INET), + cert_reqs=ssl.CERT_REQUIRED) + try: + s.connect(("svn.python.org", 443)) + except ssl.SSLError: + pass + finally: + s.close() + + # this should succeed because we specify the root cert + s = ssl.wrap_socket(socket.socket(socket.AF_INET), + cert_reqs=ssl.CERT_REQUIRED, + ca_certs=SVN_PYTHON_ORG_ROOT_CERT) + try: + s.connect(("svn.python.org", 443)) + except ssl.SSLError, x: + raise test_support.TestFailed("Unexpected exception %s" % x) + finally: + s.close() + + def testFetchServerCert(self): + + pem = ssl.get_server_certificate(("svn.python.org", 443)) + if not pem: + raise test_support.TestFailed("No server certificate on svn.python.org:443!") + + try: + pem = ssl.get_server_certificate(("svn.python.org", 443), ca_certs=CERTFILE) + except ssl.SSLError: + #should fail + pass + else: + raise test_support.TestFailed("Got server certificate %s for svn.python.org!" % pem) + + pem = ssl.get_server_certificate(("svn.python.org", 443), ca_certs=SVN_PYTHON_ORG_ROOT_CERT) + if not pem: + raise test_support.TestFailed("No server certificate on svn.python.org:443!") + if test_support.verbose: + sys.stdout.write("\nVerified certificate for svn.python.org:443 is\n%s\n" % pem) + + try: import threading except ImportError: @@ -258,6 +326,133 @@ self.active = False self.sock.close() + + class AsyncoreHTTPSServer(threading.Thread): + + class HTTPSServer(HTTPServer): + + def __init__(self, server_address, RequestHandlerClass, certfile): + + HTTPServer.__init__(self, server_address, RequestHandlerClass) + # we assume the certfile contains both private key and certificate + self.certfile = certfile + self.active = False + self.allow_reuse_address = True + + def get_request (self): + # override this to wrap socket with SSL + sock, addr = self.socket.accept() + sslconn = ssl.wrap_socket(sock, server_side=True, + certfile=self.certfile) + return sslconn, addr + + # The methods overridden below this are mainly so that we + # can run it in a thread and be able to stop it from another + # You probably wouldn't need them in other uses. + + def server_activate(self): + # We want to run this in a thread for testing purposes, + # so we override this to set timeout, so that we get + # a chance to stop the server + self.socket.settimeout(0.5) + HTTPServer.server_activate(self) + + def serve_forever(self): + # We want this to run in a thread, so we use a slightly + # modified version of "forever". + self.active = True + while self.active: + try: + self.handle_request() + except socket.timeout: + pass + except KeyboardInterrupt: + self.server_close() + return + except: + sys.stdout.write(''.join(traceback.format_exception(*sys.exc_info()))); + + def server_close(self): + # Again, we want this to run in a thread, so we need to override + # close to clear the "active" flag, so that serve_forever() will + # terminate. + HTTPServer.server_close(self) + self.active = False + + class RootedHTTPRequestHandler(SimpleHTTPRequestHandler): + + # need to override translate_path to get a known root, + # instead of using os.curdir, since the test could be + # run from anywhere + + server_version = "TestHTTPS/1.0" + + root = None + + def translate_path(self, path): + """Translate a /-separated PATH to the local filename syntax. + + Components that mean special things to the local file system + (e.g. drive or directory names) are ignored. (XXX They should + probably be diagnosed.) + + """ + # abandon query parameters + path = urlparse.urlparse(path)[2] + path = os.path.normpath(urllib.unquote(path)) + words = path.split('/') + words = filter(None, words) + path = self.root + for word in words: + drive, word = os.path.splitdrive(word) + head, word = os.path.split(word) + if word in self.root: continue + path = os.path.join(path, word) + return path + + def log_message(self, format, *args): + + # we override this to suppress logging unless "verbose" + + if test_support.verbose: + sys.stdout.write(" server (%s, %d, %s):\n [%s] %s\n" % + (self.server.server_name, + self.server.server_port, + self.request.cipher(), + self.log_date_time_string(), + format%args)) + + + def __init__(self, port, certfile): + self.flag = None + self.active = False + self.RootedHTTPRequestHandler.root = os.path.split(CERTFILE)[0] + self.server = self.HTTPSServer( + ('', port), self.RootedHTTPRequestHandler, certfile) + threading.Thread.__init__(self) + self.setDaemon(True) + + def __str__(self): + return '<%s %s:%d>' % (self.__class__.__name__, + self.server.server_name, + self.server.server_port) + + def start (self, flag=None): + self.flag = flag + threading.Thread.start(self) + + def run (self): + self.active = True + if self.flag: + self.flag.set() + self.server.serve_forever() + self.active = False + + def stop (self): + self.active = False + self.server.server_close() + + def badCertTest (certfile): server = ThreadedEchoServer(TESTPORT, CERTFILE, certreqs=ssl.CERT_REQUIRED, @@ -331,7 +526,6 @@ if connectionchatty: if test_support.verbose: sys.stdout.write(" client: closing connection.\n") - s.ssl_shutdown() s.close() finally: server.stop() @@ -388,7 +582,7 @@ s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) if hasattr(socket, 'SO_REUSEPORT'): s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) - port = test_support.bind_port(s, '127.0.0.1', TESTPORT) + s.bind(('127.0.0.1', TESTPORT)) s.listen(5) listener_ready.set() s.accept() @@ -566,27 +760,31 @@ sys.stdout.write("\n") for indata in msgs: if test_support.verbose: - sys.stdout.write(" client: sending %s...\n" % repr(indata)) + sys.stdout.write( + " client: sending %s...\n" % repr(indata)) if wrapped: conn.write(indata) outdata = conn.read() else: s.send(indata) outdata = s.recv(1024) - if indata == "STARTTLS" and outdata.strip().lower().startswith("ok"): + if (indata == "STARTTLS" and + outdata.strip().lower().startswith("ok")): if test_support.verbose: - sys.stdout.write(" client: read %s from server, starting TLS...\n" % repr(outdata)) + sys.stdout.write( + " client: read %s from server, starting TLS...\n" + % repr(outdata)) conn = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1) wrapped = True else: if test_support.verbose: - sys.stdout.write(" client: read %s from server\n" % repr(outdata)) + sys.stdout.write( + " client: read %s from server\n" % repr(outdata)) if test_support.verbose: sys.stdout.write(" client: closing connection.\n") if wrapped: conn.write("over\n") - conn.ssl_shutdown() else: s.send("over\n") s.close() @@ -594,83 +792,43 @@ server.stop() server.join() + def testAsyncore(self): -CERTFILE_CONFIG_TEMPLATE = """ -# create RSA certs - Server - -[ req ] -default_bits = 1024 -encrypt_key = yes -distinguished_name = req_dn -x509_extensions = cert_type - -[ req_dn ] -countryName = Country Name (2 letter code) -countryName_default = US -countryName_min = 2 -countryName_max = 2 - -stateOrProvinceName = State or Province Name (full name) -stateOrProvinceName_default = %(state)s - -localityName = Locality Name (eg, city) -localityName_default = %(city)s - -0.organizationName = Organization Name (eg, company) -0.organizationName_default = %(organization)s - -organizationalUnitName = Organizational Unit Name (eg, section) -organizationalUnitName_default = %(unit)s - -0.commonName = Common Name (FQDN of your server) -0.commonName_default = %(common-name)s - -# To create a certificate for more than one name uncomment: -# 1.commonName = DNS alias of your server -# 2.commonName = DNS alias of your server -# ... -# See http://home.netscape.com/eng/security/ssl_2.0_certificate.html -# to see how Netscape understands commonName. - -[ cert_type ] -nsCertType = server -""" - -def create_cert_files(hostname=None): - - """This is the routine that was run to create the certificate - and private key contained in keycert.pem.""" - - import tempfile, socket, os - d = tempfile.mkdtemp() - # now create a configuration file for the CA signing cert - fqdn = hostname or socket.getfqdn() - crtfile = os.path.join(d, "cert.pem") - conffile = os.path.join(d, "ca.conf") - fp = open(conffile, "w") - fp.write(CERTFILE_CONFIG_TEMPLATE % - {'state': "Delaware", - 'city': "Wilmington", - 'organization': "Python Software Foundation", - 'unit': "SSL", - 'common-name': fqdn, - }) - fp.close() - error = os.system( - "openssl req -batch -new -x509 -days 2000 -nodes -config %s " - "-keyout \"%s\" -out \"%s\" > /dev/null < /dev/null 2>&1" % - (conffile, crtfile, crtfile)) - # now we have a self-signed server cert in crtfile - os.unlink(conffile) - if (os.WEXITSTATUS(error) or - not os.path.exists(crtfile) or os.path.getsize(crtfile) == 0): - if test_support.verbose: - sys.stdout.write("Unable to create certificate for test, " - + "error status %d\n" % (error >> 8)) - crtfile = None - elif test_support.verbose: - sys.stdout.write(open(crtfile, 'r').read() + '\n') - return d, crtfile + server = AsyncoreHTTPSServer(TESTPORT, CERTFILE) + flag = threading.Event() + server.start(flag) + # wait for it to start + flag.wait() + # try to connect + try: + if test_support.verbose: + sys.stdout.write('\n') + d1 = open(CERTFILE, 'r').read() + d2 = '' + # now fetch the same data from the HTTPS server + url = 'https://127.0.0.1:%d/%s' % ( + TESTPORT, os.path.split(CERTFILE)[1]) + f = urllib.urlopen(url) + dlen = f.info().getheader("content-length") + if dlen and (int(dlen) > 0): + d2 = f.read(int(dlen)) + if test_support.verbose: + sys.stdout.write( + " client: read %d bytes from remote server '%s'\n" + % (len(d2), server)) + f.close() + except: + msg = ''.join(traceback.format_exception(*sys.exc_info())) + if test_support.verbose: + sys.stdout.write('\n' + msg) + raise test_support.TestFailed(msg) + else: + if not (d1 == d2): + raise test_support.TestFailed( + "Couldn't fetch data from HTTPS server") + finally: + server.stop() + server.join() def findtestsocket(start, end): @@ -695,10 +853,15 @@ if skip_expected: raise test_support.TestSkipped("No SSL support") - global CERTFILE, TESTPORT + global CERTFILE, TESTPORT, SVN_PYTHON_ORG_ROOT_CERT CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir, - "keycert.pem") - if (not os.path.exists(CERTFILE)): + "keycert.pem") + SVN_PYTHON_ORG_ROOT_CERT = os.path.join( + os.path.dirname(__file__) or os.curdir, + "https_svn_python_org_root.pem") + + if (not os.path.exists(CERTFILE) or + not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT)): raise test_support.TestFailed("Can't read certificate files!") TESTPORT = findtestsocket(10025, 12000) if not TESTPORT: @@ -706,9 +869,12 @@ tests = [BasicTests] + if test_support.is_resource_enabled('network'): + tests.append(NetworkTests) + if _have_threads: thread_info = test_support.threading_setup() - if CERTFILE and thread_info and test_support.is_resource_enabled('network'): + if thread_info and test_support.is_resource_enabled('network'): tests.append(ConnectedTests) test_support.run_unittest(*tests) Modified: python/trunk/Modules/_ssl.c ============================================================================== --- python/trunk/Modules/_ssl.c (original) +++ python/trunk/Modules/_ssl.c Mon Sep 17 00:06:00 2007 @@ -126,7 +126,6 @@ int writing); static PyObject *PySSL_peercert(PySSLObject *self, PyObject *args); static PyObject *PySSL_cipher(PySSLObject *self); -static PyObject *PySSL_SSLshutdown(PySSLObject *self); #define PySSLObject_Check(v) (Py_Type(v) == &PySSL_Type) @@ -661,7 +660,7 @@ char buf[2048]; char *vptr; int len; - const unsigned char *p; + unsigned char *p; if (certificate == NULL) return peer_alt_names; @@ -1233,18 +1232,9 @@ Py_DECREF(buf); return NULL; } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) { - if (SSL_get_shutdown(self->ssl) != - SSL_RECEIVED_SHUTDOWN) - { - Py_DECREF(buf); - PyErr_SetString(PySSLErrorObject, - "Socket closed without SSL shutdown handshake"); - return NULL; - } else { - /* should contain a zero-length string */ - _PyString_Resize(&buf, 0); - return buf; - } + /* should contain a zero-length string */ + _PyString_Resize(&buf, 0); + return buf; } } do { @@ -1295,39 +1285,6 @@ \n\ Read up to len bytes from the SSL socket."); -static PyObject *PySSL_SSLshutdown(PySSLObject *self) -{ - int err; - - /* Guard against closed socket */ - if (self->Socket->sock_fd < 0) { - PyErr_SetString(PySSLErrorObject, - "Underlying socket has been closed."); - return NULL; - } - - PySSL_BEGIN_ALLOW_THREADS - err = SSL_shutdown(self->ssl); - if (err == 0) { - /* we need to call it again to finish the shutdown */ - err = SSL_shutdown(self->ssl); - } - PySSL_END_ALLOW_THREADS - - if (err < 0) - return PySSL_SetError(self, err, __FILE__, __LINE__); - else { - Py_INCREF(self->Socket); - return (PyObject *) (self->Socket); - } -} - -PyDoc_STRVAR(PySSL_SSLshutdown_doc, -"shutdown(s) -> socket\n\ -\n\ -Does the SSL shutdown handshake with the remote end, and returns\n\ -the underlying socket object."); - static PyMethodDef PySSLMethods[] = { {"write", (PyCFunction)PySSL_SSLwrite, METH_VARARGS, PySSL_SSLwrite_doc}, @@ -1338,8 +1295,6 @@ {"peer_certificate", (PyCFunction)PySSL_peercert, METH_VARARGS, PySSL_peercert_doc}, {"cipher", (PyCFunction)PySSL_cipher, METH_NOARGS}, - {"shutdown", (PyCFunction)PySSL_SSLshutdown, METH_NOARGS, - PySSL_SSLshutdown_doc}, {NULL, NULL} }; From python-checkins at python.org Mon Sep 17 00:06:08 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 00:06:08 +0200 (CEST) Subject: [Python-checkins] r58165 - sandbox/trunk/import_in_py/tests/__init__.py Message-ID: <20070916220608.C38AC1E4002@bag.python.org> Author: brett.cannon Date: Mon Sep 17 00:06:08 2007 New Revision: 58165 Modified: sandbox/trunk/import_in_py/tests/__init__.py Log: Make less package dependent (although internal tests all have a direct 'tests' package import which is bad for converting to py3k tests). Modified: sandbox/trunk/import_in_py/tests/__init__.py ============================================================================== --- sandbox/trunk/import_in_py/tests/__init__.py (original) +++ sandbox/trunk/import_in_py/tests/__init__.py Mon Sep 17 00:06:08 2007 @@ -2,12 +2,13 @@ import os import os.path - test_directory = os.path.split(__file__)[0] - for filename in os.listdir(test_directory): + abs_test_directory = os.path.split(__file__)[0] + rel_test_directory = os.path.split(abs_test_directory)[1] + for filename in os.listdir(abs_test_directory): if not filename.startswith('test_') or not filename.endswith('.py'): continue - full_filename = os.path.join(test_directory, filename) + full_filename = os.path.join(abs_test_directory, filename) module_name = os.path.splitext(filename)[0] - module = __import__('tests.' + module_name) + module = __import__(rel_test_directory + '.' + module_name) getattr(module, module_name).test_main() print '~' * 20 From buildbot at python.org Mon Sep 17 00:15:24 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 16 Sep 2007 22:15:24 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD trunk Message-ID: <20070916221524.A39AF1E401A@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%20trunk/builds/25 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen,facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Mon Sep 17 00:20:59 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 00:20:59 +0200 (CEST) Subject: [Python-checkins] r58166 - in sandbox/trunk/import_in_py: Py3K Py3K/Py3K_TODO Py3K/_importlib.py Py3K/importlib.py Py3K/tests Py3K/tests/__init__.py Py3K/tests/builtin_frozen_help.py Py3K/tests/ext_help.py Py3K/tests/mock_importlib.py Py3K/tests/py_help.py Py3K/tests/test_builtin_importer.py Py3K/tests/test_chained_importer.py Py3K/tests/test_frozen_importer.py Py3K/tests/test_fs_importer.py Py3K/tests/test_fs_loader.py Py3K/tests/test_import_mechanics.py Py3K/tests/test_regression.py Py3K_TODO Message-ID: <20070916222059.A15DE1E4002@bag.python.org> Author: brett.cannon Date: Mon Sep 17 00:20:58 2007 New Revision: 58166 Added: sandbox/trunk/import_in_py/Py3K/ sandbox/trunk/import_in_py/Py3K/Py3K_TODO - copied, changed from r57667, sandbox/trunk/import_in_py/Py3K_TODO sandbox/trunk/import_in_py/Py3K/_importlib.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/importlib.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/ sandbox/trunk/import_in_py/Py3K/tests/__init__.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/builtin_frozen_help.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/ext_help.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/mock_importlib.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/py_help.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/test_builtin_importer.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/test_chained_importer.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/test_frozen_importer.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/test_fs_importer.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/test_fs_loader.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/test_import_mechanics.py (contents, props changed) sandbox/trunk/import_in_py/Py3K/tests/test_regression.py (contents, props changed) Removed: sandbox/trunk/import_in_py/Py3K_TODO Log: Start a Py3K version of importlib. As of right now it doesn't work as there is at least one test failing because of integer division issues. Plus I know that _r_long fails in the face of a bytecode timestamp since that is being passed bytes instead of a string. Copied: sandbox/trunk/import_in_py/Py3K/Py3K_TODO (from r57667, sandbox/trunk/import_in_py/Py3K_TODO) ============================================================================== --- sandbox/trunk/import_in_py/Py3K_TODO (original) +++ sandbox/trunk/import_in_py/Py3K/Py3K_TODO Mon Sep 17 00:20:58 2007 @@ -7,7 +7,8 @@ * Put into 2.6 stdlib. - Py3K-specific * Port to Py3K. - + Consider it a fork of code as semantics can change compared to 2.6 code. + + Write script that will copy certain files (i.e., all files that have + no Py3K-specific modifications beyond 2to3) and pass through 2to3. * Bootstrap in as default import implementation. * Fix C API to call importlib. * Remove C implementation. Added: sandbox/trunk/import_in_py/Py3K/_importlib.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/_importlib.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,976 @@ +"""Implementation of import in Python source code. + +Direct imports are not allowed because of dependency issues. Any required +modules must be injected from an outside source. + +Default parameter values cannot be from a module as any injected module will +come after the module has been imported. + +==================== +References on import +==================== +* Language reference + http://docs.python.org/ref/import.html +* __import__ function + http://docs.python.org/lib/built-in-funcs.html +* Packages + http://www.python.org/doc/essays/packages.html +* PEP 235: Import on Case-Insensitive Platforms + http://www.python.org/dev/peps/pep-0235 +* PEP 275: Import Modules from Zip Archives + http://www.python.org/dev/peps/pep-0273 +* PEP 302: New Import Hooks + http://www.python.org/dev/peps/pep-0302/ +* PEP 328: Imports: Multi-line and Absolute/Relative + http://www.python.org/dev/peps/pep-0328 + +============ +Known Issues +============ +* runpy ('-m' command-line option for Python) does not work. + + Requires get_code to be implemented for loaders. + + Uses pkgutil.get_loader which fakes a loader if __loader__ is not defined. + + New loaders do define __loader__ but not get_code, and thus dies on an + AttributeError. + + Possible fix + - Implement optional interface for loaders. + - Do not have new loaders set __loader__. + * Might happen because of security issues. +* warnings and stack level. + + Affected tests + - test___all__ + - test_imageop + + 'warnings' assumes that the import code does not show up in the call + stack. + + Because import now implemented in Python, import does show up in the + call stack. + + Trick of specifying going back in the call stack two levels so warning + shows up in the caller will cause the warning no longer holds true. + + Possible fixes + - Special module deprecation function. + - Code in warnings.warn to handle special import case. + - Flag on warnings.warn that warning is for an import and ignore stack + level argument. + * Could also infer from type of warning. +* test_pkg + + Old-style test that compares output. + + Setting of __loader__ leads to different output. + +""" +from __future__ import with_statement +# The injected modules are 'imp', 'sys', 'marshal', and '_os' (a.k.a. 'posix', +# 'nt' & 'os2'). + + +# XXX Could also expose Modules/getpath.c:joinpath() +def _path_join(*args): + """Replacement for os.path.join so as to remove dependency on os module.""" + return path_sep.join(args) + +def _path_exists(path): + """Replacement for os.path.exists to help remove dependency on 'os'.""" + try: + _os.stat(path) + except OSError: + return False + else: + return True + + +def _path_is_mode_type(path, mode): + """Test whether the path is the specified mode type.""" + try: + stat_info = _os.stat(path) + except OSError: + return False + return (stat_info.st_mode & 0o170000) == mode + +# XXX Could also expose Modules/getpath.c:isfile() +def _path_isfile(path): + """Replacement for os.path.isfile.""" + return _path_is_mode_type(path, 0o100000) + +# XXX Could also expose Modules/getpath.c:isdir() +def _path_isdir(path): + """Replacement for os.path.isdir.""" + return _path_is_mode_type(path, 0o040000) + +def _path_without_ext(path, ext_type): + """Replacement for os.path.splitext()[0].""" + for suffix in suffix_list(ext_type): + if path.endswith(suffix): + return path[:-len(suffix)] + else: + raise ValueError("path is not of the specified type") + +def _path_absolute(path): + """Replacement for os.path.abspath.""" + try: + return _os._getfullpathname(path) + except AttributeError: + if path.startswith('/'): + return path + else: + return _path_join(_os.getcwd(), path) + + +class _BuiltinFrozenBaseImporter(object): + + """Base class for meta_path importers for built-in and frozen modules. + + Subclasses must provide the _find and _load methods. + + """ + + def find_module(self, fullname, path=None): + """See if a built-in or frozen module can be imported based on the + specified name.""" + if self._find(fullname): + return self + else: + return None + + def load_module(self, fullname): + """Load a built-in or frozen module. + + 'imp' code for loading a built-in or frozen module handles the setting + of a module in sys.modules before initializing the module. This means + that we do not need to perform that step as outlined by PEP 302. + + """ + try: + return sys.modules[fullname] + except KeyError: + mod = self._load(fullname) + if not mod: + raise ImportError("expected built-in module not loaded") + return mod + + +class BuiltinImporter(_BuiltinFrozenBaseImporter): + + """sys.meta_path class for importing built-in modules. + + XXX Possible optimization is to bail out in find_module() if 'path' is set + to a value. + + """ + + def __init__(self): + self._find = imp.is_builtin + self._load = imp.init_builtin + + +class FrozenImporter(_BuiltinFrozenBaseImporter): + + """sys.meta_path class for importing frozen modules.""" + + def __init__(self): + self._find = imp.is_frozen + self._load = imp.init_frozen + + +class ChainedImporter(object): + + """Importer that sequentially calls other importers.""" + + def __init__(self, *importers): + self._importers = importers + + def find_module(self, fullname, path=None): + for importer in self._importers: + result = importer.find_module(fullname, path) + if result: + return result + else: + return None + + +# XXX Make generic and push fs code into FileImporter? +def chaining_fs_path_hook(*path_hooks): + """Create a path hook that sequentially asks other path hooks if they can + handle a sys.path entry, returning a chained importer for those that said + they could.""" + def chained_fs_path_hook(path_entry): + """Check which of the associated importers are able to handle the + filesystem path entry.""" + absolute_path = _path_absolute(path_entry) + if not _path_isdir(absolute_path): + raise ImportError("only directories are supported") + accepted = [] + for path_hook in path_hooks: + try: + accepted.append(path_hook(absolute_path)) + except ImportError: + continue + if not accepted: + raise ImportError("no path hooks could handle %s" % path_entry) + return ChainedImporter(*accepted) + return chained_fs_path_hook + + +def check_name(method): + """Decorator to verify that the module being requested matches the one the + loader can handle.""" + def inner(self, name, *args, **kwargs): + if self._name != name: + raise ImportError("loader cannot handle %s" % name) + return method(self, name, *args, **kwargs) + inner.__name__ = method.__name__ + inner.__doc__ = method.__doc__ + inner.__dict__.update(method.__dict__) + return inner + + +class _ExtensionFileLoader(object): + + """Provide the ability to load an extension module.""" + + def __init__(self, name, path, is_pkg): + """Initialize the loader, ignoring the is_pkg argument.""" + self._name = name + self._path = path + if is_pkg: + raise ValueError("extension modules cannot be packages") + + @check_name + def load_module(self, fullname): + """Load an extension module.""" + assert self._name == fullname + try: + module = imp.load_dynamic(fullname, self._path) + module.__loader__ = self + return module + except: + # If an error occurred, don't leave a partially initialized module. + if fullname in sys.modules: + del sys.modules[fullname] + raise + + @check_name + def is_package(self, fullname): + """Return False as an extension module can never be a package.""" + return False + + @check_name + def get_code(self, fullname): + """Return None as an extension module cannot create just a code + object.""" + return None + + @check_name + def get_source(self, fullname): + """Return None as extension modules have no source code.""" + return None + + +def suffix_list(suffix_type): + """Return a list of suffixes for a specific type of file.""" + return [suffix[0] for suffix in imp.get_suffixes() + if suffix[2] == suffix_type] + + +def init_module(loader, code_object, name, path, is_pkg): + """Return an initialized module. + + If initialization fails and the module did not already exist, then remove + it from sys.modules to prevent a partially initialized module from being + left around. If this action is for a reload (i.e., the module already + existed), leave the original module state in place. + + """ + module = sys.modules.get(name) + is_reload = True if module is not None else False + if not is_reload: + module = imp.new_module(name) + sys.modules[name] = module + else: + original_values = {} + modified_attrs = ['__loader__', '__name__', '__file__'] + for attr in modified_attrs: + try: + original_values[attr] = getattr(module, attr) + except AttributeError: + pass + module.__loader__ = loader + module.__name__ = name + module.__file__ = path + if is_pkg: + module.__path__ = [module.__file__.rsplit(path_sep, 1)[0]] + try: + exec(code_object, module.__dict__) + except: + if not is_reload: + del sys.modules[name] + else: + for attr in modified_attrs: + if attr in original_values: + setattr(module, attr, original_values[attr]) + else: + delattr(module, attr) + raise + return module + + +def handle_code(loader, name, source_path, bytecode_path): + """Return the code object and the location of the code used to create the + code object in a two-item sequence. + + The loader is expected to implement: + + + get_bytecode(name:str) -> str + Read bytecode. + Only called if bytecode_path is true. + + mod_time(name:str) -> int + Return the last modification time for the source of the specified + module. + Only called if both source_path and bytecode_path are true. + + get_source(name:str) -> str + Return the source code for the module. + Only called if source_path is true. + + write_bytecode(name:str, timestamp:int, data:str) -> bool + Write out bytecode for the module with the specified timestamp, + returning a boolean based on whether any actual storage of the bytecode + was done. + + """ + # Request paths instead of just booleans since 'compile' needs it for + # source. + if not source_path and not bytecode_path: + raise ValueError("neither source nor bytecode was specified as " + "available") + source_timestamp = None + # Try to use bytecode if it is available. + if bytecode_path: + magic, pyc_timestamp, bytecode = loader.get_bytecode(name) + try: + # Verify that the magic number is valid. + if imp.get_magic() != magic: + raise ImportError("bad magic number") + # Verify that the bytecode is not stale. + if source_path: + # Keep in a variable so that if bytecode turns out to be bad + # then the value can be reused when re-generating bytecode. + source_timestamp = loader.mod_time(name) + if pyc_timestamp < source_timestamp: + raise ImportError("bytcode is stale") + # Bytecode seems fine, so try to use it. + try: + return marshal.loads(bytecode), bytecode_path + except ValueError: + # XXX Is it useful to bail out when the bytecode is bad? Why + # not use the source if possible and issue a warning that the + # bytecode was bad? + # Since bad bytecode halts the import entirely, having the + # source code is useless. Signal this fact by setting + # bytecode_path to None. + bytecode_path = None + raise ImportError('Non-code object found') + except ImportError: + # If the exception is from the bytecode being corrupt, let it + # propagate. + if not source_path or bytecode_path is None: + raise + # Use the source. + source = loader.get_source(name) + code_object = compile(source, source_path, 'exec') + # Generate bytecode and write it out. + if source_timestamp is None: # May have from bytecode verification. + source_timestamp = loader.mod_time(name) + data = marshal.dumps(code_object) + loader.write_bytecode(name, source_timestamp, data) + return code_object, source_path + + +class _PyFileLoader(object): + # XXX Still smart to have this as a separate class? Or would it work + # better to integrate with PyFileImporter? Could cache _is_pkg info. + # FileImporter can be changed to return self instead of a specific loader + # call. Otherwise _base_path can be calculated on the fly without issue if + # it is known whether a module should be treated as a path or package to + # minimize stat calls. Could even go as far as to stat the directory the + # importer is in to detect changes and then cache all the info about what + # files were found (if stating directories is platform-dependent). + + """Load a Python source or bytecode file.""" + + _handler = handle_code + _module_init = init_module + + def __init__(self, name, path, is_pkg): + self._name = name + self._is_pkg = is_pkg + # Figure out the base path based on whether it was source or bytecode + # that was found. + try: + self._base_path = _path_without_ext(path, imp.PY_SOURCE) + except ValueError: + self._base_path = _path_without_ext(path, imp.PY_COMPILED) + + def _find_path(self, ext_type): + """Find a path from the base path and the specified extension type that + exists, returning None if one is not found.""" + for suffix in suffix_list(ext_type): + path = self._base_path + suffix + if _path_exists(path): + return path + else: + return None + + + def _source_path(self): + """Return the path to an existing source file for the module, or None + if one cannot be found.""" + # Not a property so that it is easy to override. + return self._find_path(imp.PY_SOURCE) + + def _bytecode_path(self): + """Return the path to a bytecode file, or None if one does not + exist.""" + # Not a property for easy overriding. + return self._find_path(imp.PY_COMPILED) + + @check_name + def load_module(self, fullname): + """Load a Python source or bytecode file.""" + try: + code_object, path = self._handler(fullname, self._source_path(), + self._bytecode_path()) + except ValueError: + raise ImportError("loader cannot handle %s" % fullname) + return self._module_init(code_object, fullname, path, self._is_pkg) + + @check_name + def mod_time(self, name): + """Return the modification time of the source for the specified module. + + Raise ValueError if no source exists or ImportError (like get_source) + if the loader cannot handle the module. + + """ + source_path = self._source_path() + if source_path: + return int(_os.stat(source_path).st_mtime) + else: + raise ValueError('no source for %s' % name) + + @check_name + def get_source(self, fullname): + """Return the source for the specified module (using universal + newlines), or None if it is not available. + + Raises ImportError if the loader cannot handle the module. + + """ + source_path = self._source_path() + if source_path: + return open(source_path, 'U').read() + elif self._bytecode_path(): + return None + else: + raise ImportError('no source or bytecode available') + + @check_name + def get_bytecode(self, name): + """Return the magic number, timestamp, and the module bytecode for the + module. + + Raises ImportError (just like get_source) if the laoder cannot handle + the module. + + """ + try: + with open(self._bytecode_path(), 'rb') as bytecode_file: + data = bytecode_file.read() + return data[:4], _r_long(data[4:8]), data[8:] + except AttributeError: + return None + + @check_name + def write_bytecode(self, name, timestamp, data): + """Write out 'data' for the specified module using the specific + timestamp, returning a boolean + signifying if the write-out actually occurred. + + Raises ImportError (just like get_source) if the specified module + cannot be handled by the loader. + + """ + bytecode_path = self._bytecode_path() + if not bytecode_path: + bytecode_path = self._base_path + suffix_list(imp.PY_COMPILED)[0] + try: + with open(bytecode_path, 'wb') as bytecode_file: + bytecode_file.write(imp.get_magic()) + bytecode_file.write(_w_long(timestamp)) + bytecode_file.write(data) + return True + except IOError as exc: + if exc.errno == EACCES: + return False + else: + raise + + def get_data(self, path): + """Return the data from path as raw bytes.""" + return open(path, 'rb').read() + + @check_name + def is_package(self, fullname): + """Return a boolean based on whether the module is a package. + + Raises ImportError (like get_source) if the loader cannot handle the + package. + + """ + return self._is_pkg + + @check_name + def get_code(self, fullname): + """Return a code object for the module. + + Raise ImportError (like get_source) if the load cannot handle the + specified module. + + """ + try: + return self._handler(fullname, self._source_path(), + self._bytecode_path())[0] + except ValueError: + raise ImportError("cannot get the code for %s" % fullname) + + +class FileImporter(object): + + """Base class for file importers. + + Subclasses are expected to define the following attributes: + + * _suffixes + Sequence of file suffixes whose order will be followed. + * _possible_package + True if importer should check for packages. + * _loader + A callable that takes the module name, a file path, and whether + the path points to a package and returns a loader for the module found + at that path. + + """ + + def __init__(self, path_entry): + """Initialize an importer for the passed-in sys.path entry (which is + assumed to have already been verified as an existing directory). + + Can be used as an entry on sys.path_hook. + + """ + self._path_entry = path_entry + + def find_module(self, fullname, path=None): + tail_module = fullname.rsplit('.', 1)[-1] + package_directory = None + if self._possible_package: + for ext in self._suffixes: + package_directory = _path_join(self._path_entry, tail_module) + init_filename = '__init__' + ext + package_init = _path_join(package_directory, init_filename) + if (_path_isfile(package_init) and + _case_ok(self._path_entry, tail_module) and + _case_ok(package_directory, init_filename)): + return self._loader(fullname, package_init, True) + for ext in self._suffixes: + file_name = tail_module + ext + file_path = _path_join(self._path_entry, file_name) + if (_path_isfile(file_path) and + _case_ok(self._path_entry, file_name)): + return self._loader(fullname, file_path, False) + else: + # Raise a warning if it matches a directory w/o an __init__ file. + if (package_directory is not None and + _path_isdir(package_directory) and + _case_ok(self._path_entry, tail_module)): + warnings.warn("Not importing directory %s: missing __init__" + % package_directory, + ImportWarning) + return None + + +class ExtensionFileImporter(FileImporter): + + """Importer for extension files.""" + + _possible_package = False + _loader = _ExtensionFileLoader + + def __init__(self, path_entry): + # Assigning to _suffixes here instead of at the class level because + # imp is not imported at the time of class creation. + self._suffixes = suffix_list(imp.C_EXTENSION) + super(ExtensionFileImporter, self).__init__(path_entry) + + +class PyFileImporter(FileImporter): + + """Importer for source/bytecode files.""" + + _possible_package = True + _loader = _PyFileLoader + + def __init__(self, path_entry): + # Lack of imp during class creation means _suffixes is set here. + # Make sure that Python source files are listed first! Needed for an + # optimization by the loader. + self._suffixes = suffix_list(imp.PY_SOURCE) + self._suffixes += suffix_list(imp.PY_COMPILED) + super(PyFileImporter, self).__init__(path_entry) + + +class ImportLockContext(object): + + """Context manager for the import lock.""" + + def __enter__(self): + """Acquire the import lock.""" + imp.acquire_lock() + + def __exit__(self, exc_type, exc_value, exc_traceback): + """Release the import lock regardless of any raised exceptions.""" + imp.release_lock() + + +class Import(object): + + """Class that implements the __import__ interface. + + Backwards compatibility is maintained by extending sys.meta_path + interally (for handling built-in and frozen modules) and providing a + default path hooks entry (for extension modules, .py, and .pyc + files). Both are controlled during instance initialization. + + """ + + def __init__(self, default_path_hook=None, + extended_meta_path=None): + """Store a default path hook entry and a sequence to internally extend + sys.meta_path by (passing in None uses default importers).""" + if extended_meta_path is None: + self.extended_meta_path = BuiltinImporter(), FrozenImporter() + else: + self.extended_meta_path = extended_meta_path + self.default_path_hook = default_path_hook + if self.default_path_hook is None: + # Create a handler to deal with extension modules, .py, and .pyc + # files. Built-in and frozen modules are handled by sys.meta_path + # entries. + importers = [ExtensionFileImporter, PyFileImporter] + self.default_path_hook = chaining_fs_path_hook(*importers) + + def _search_meta_path(self, name, path=None): + """Check the importers on sys.meta_path for a loader along with the + extended meta path sequence stored within this instance. + + The extended sys.meta_path entries are searched after the entries on + sys.meta_path. + + """ + for entry in (tuple(sys.meta_path) + self.extended_meta_path): + loader = entry.find_module(name, path) + if loader: + return loader + else: + raise ImportError("No module named %s" % name) + + def _sys_path_importer(self, path_entry): + """Return the importer for the specified path, from + sys.path_importer_cache if possible. + + If None is stored in sys.path_importer_cache then use the default path + hook. + + """ + try: + # See if an importer is cached. + importer = sys.path_importer_cache[path_entry] + # If None was returned, use default importer factory. + if importer is None: + # XXX Would it break backwards-compatibility to set the importer + # in sys.path_importer_cache, replacing the None entry and not + # rely on None being there? + return self.default_path_hook(path_entry) + else: + return importer + except KeyError: + # No cached importer found; try to get a new one from + # sys.path_hooks. + for importer_factory in sys.path_hooks: + try: + importer = importer_factory(path_entry) + # XXX Going to break backwards-compatibility by storing + # an instance of the default importer? None still handled + # properly so shouldn't be any different than some other + # importer being stored. + sys.path_importer_cache[path_entry] = importer + return importer + except ImportError: + continue + else: + # No importer factory on sys.path_hooks works; use the default + # importer factory. + try: + importer = self.default_path_hook(path_entry) + sys.path_importer_cache[path_entry] = importer + return importer + except ImportError: + sys.path_importer_cache[path_entry] = None + raise ImportError("no importer found for %s" % path_entry) + + def _search_std_path(self, name, path=None): + """Check sys.path or 'path' (depending if 'path' is set) for the + named module and return its loader.""" + if path: + search_paths = path + else: + search_paths = sys.path + for entry in search_paths: + try: + importer = self._sys_path_importer(entry) + except ImportError: + continue + loader = importer.find_module(name) + if loader: + return loader + else: + raise ImportError("No module named %s" % name) + + def module_from_cache(self, name): + """Try to return the named module from sys.modules. + + Return False if the module is not in the cache. + """ + if name in sys.modules: + return sys.modules[name] + else: + return False + + def post_import(self, module): + """Perform any desired post-import processing on the module.""" + return module + + def _import_module(self, name, path=None): + """Import the specified module with no handling of parent modules. + + If None is set for a value in sys.modules (to signify that a relative + import was attempted and failed) then ImportError is raised. + + """ + cached_module = self.module_from_cache(name) + if cached_module is not False: + if cached_module is None: + raise ImportError("relative import redirect") + else: + return cached_module + try: + # Attempt to find a loader on sys.meta_path. + loader = self._search_meta_path(name, path) + except ImportError: + # sys.meta_path search failed. Attempt to find a loader on + # sys.path. If this fails then module cannot be found. + loader = self._search_std_path(name, path) + # A loader was found. It is the loader's responsibility to have put an + # entry in sys.modules. + return self.post_import(loader.load_module(name)) + + def _import_full_module(self, name): + """Import a module along with its parent modules and set into + sys.modules.""" + # Import the module (importing its parent modules first). + name_parts = name.split('.') + current_name_parts = [] + parent_module = None + path_list = None + # XXX Any perk to being optimistic and assuming parent modules were + # imported already, and thus search in the reverse order for the first module + # to be found? + for name_part in name_parts: + current_name_parts.append(name_part) + # Recreating name every time around the loop is sub-optimal, but + # does away with base case of a non-dotted name. + current_name = ".".join(current_name_parts) + if parent_module: + try: + # XXX Better to use __path__ as found in 'globals' argument + # in __call__? Possibly different if module in sys.modules + # resolves to a different one from where the import call + # was made. Not sure if this worth worrying about, though, + # since relative imports could easily negate use of + # __path__ and sys.modules is totally reasonable to + # consider the canonical modules. + path_list = parent_module.__path__ + except AttributeError: + pass + module = self._import_module(current_name, path_list) + if parent_module: + setattr(parent_module, name_part, module) + parent_module = module + + def _classic_resolve_name(self, name, caller_name, caller_is_package): + """Return the absolute name of the module specified in 'name' as based + on the name of the caller and whether it is a package.""" + if caller_is_package: + base_name = caller_name + else: + if '.' not in caller_name: + # Importing in a top-level module, so name is already absolute. + return name + else: + base_name = caller_name.rsplit('.', 1)[0] + return base_name + '.' + name + + def _resolve_name(self, name, caller_name, caller_is_package, level): + """Return the absolute name of the module specified by 'name' based on + where the module is being imported and the requested change in dotted + name level. + + Absolute imports always take the form of ``from import ...``. + This means that the number of leading dots in '' becomes 'level' + and the rest of '' becomes 'name'. This leads to the possibility + that 'name' is the empty string, representing the current package. + + """ + if caller_is_package: + level -= 1 + if caller_name.count('.') < level: + raise ImportError("attempted relative import beyond top-level " + "pacakge") + base_name = caller_name.rsplit('.', level)[0] + if name: + return base_name + '.' + name + else: + return base_name + + def _return_module(self, absolute_name, relative_name, fromlist): + """Return the proper module based on what module was requested (and its + absolute module name), who is requesting it, and whether any specific + attributes were specified. + + The semantics of this method revolve around 'fromlist'. When it is + empty, the module up to the first dot is to be returned. When the + module being requested is an absolute name this is simple (and + relative_name is an empty string). But if the requested module was + a relative import (as signaled by relative_name having a non-false + value), then the name up to the first dot in the relative name resolved + to an absolute name is to be returned. + + When fromlist is not empty and the module being imported is a package, + then the values + in fromlist need to be checked for. If a value is not a pre-existing + attribute a relative import is attempted. If it fails then suppressed + the failure silently. + + """ + if not fromlist: + if relative_name: + absolute_base = absolute_name.rpartition(relative_name)[0] + relative_head = relative_name.split('.', 1)[0] + to_return = absolute_base + relative_head + else: + to_return = absolute_name.split('.', 1)[0] + return sys.modules[to_return] + # When fromlist is not empty, return the actual module specified in + # the import. + else: + module = sys.modules[absolute_name] + if hasattr(module, '__path__') and hasattr(module, '__name__'): + # When fromlist has a value and the imported module is a + # package, then if a name in fromlist is not found as an + # attribute on module, try a relative import to find it. + # Failure is fine and the exception is suppressed. + check_for = list(fromlist) + if '*' in check_for and hasattr(module, '__all__'): + check_for.extend(module.__all__) + for item in check_for: + if item == '*': + continue + if not hasattr(module, item): + resolved_name = self._resolve_name(item, module.__name__, + True, 1) + try: + self._import_full_module(resolved_name) + except ImportError: + pass + return module + + def __call__(self, name, globals={}, locals={}, fromlist=[], level=-1): + """Import a module. + + The 'name' argument is the name of the module to be imported (e.g., + 'foo' in ``import foo`` or ``from foo import ...``). + + 'globals' and 'locals' are the global and local namespace dictionaries + of the module where the import statement appears. 'globals' is used to + introspect the __path__ and __name__ attributes of the module making + the call. 'local's is ignored. + + 'fromlist' lists any specific objects that are to eventually be put + into the namespace (e.g., ``from for.bar import baz`` would have 'baz' + in the fromlist, and this includes '*'). An entry of '*' will lead to + a check for __all__ being defined on the module. If it is defined then + the values in __all__ will be checked to make sure that all values are + attributes on the module, attempting a module import relative to 'name' + to set that attribute. + + When 'name' is a dotted name, there are two different situations to + consider for the return value. One is when the fromlist is empty. + In this situation the import statement imports and returns the name up + to the first dot. All subsequent names are imported but set as + attributes as needed on parent modules. When fromlist is not empty + then the module represented by the full dotted name is returned. + + 'level' represents how to handle possible relative imports. If 'level' + is set to -1 then the module name could be either relative or absolute. + A value of 0 is for absolute module names., Any positive value + represents the number of dots listed in the relative import statement + (e.g. has a value of 2 for ``from .. import foo``). + + """ + if not name and level < 1: + raise ValueError("Empty module name") + is_pkg = True if '__path__' in globals else False + caller_name = globals.get('__name__') + with ImportLockContext(): + if level and caller_name: + # Handle the classic style of import: relative first, then + # absolute. + if level == -1: + relative_name = self._classic_resolve_name(name, caller_name, + is_pkg) + imported_name = relative_name + try: + # Try a relative import. + self._import_full_module(imported_name) + except ImportError: + # If the relative import fails (or is redirected), try an + # absolute import. + imported_name = name + self._import_full_module(imported_name) + # Redirection entry for resolved relative name to instead + # redirect to the absolute import. + sys.modules[relative_name] = None + # If using absolute imports with a relative path, only attempt with + # the fully-resolved module name. + else: + imported_name = self._resolve_name(name, caller_name, is_pkg, + level) + # This call will also handle setting the attribute on the + # package. + self._import_full_module(imported_name) + # Absolute module import of a top-level module. + else: + imported_name = name + self._import_full_module(name) + relative_name = '' if imported_name == name else name + return self._return_module(imported_name, relative_name, fromlist) + +# XXX Eventually replace with a proper __all__ value (i.e., don't expose os +# replacements but do expose _ExtensionFileLoader, etc. for testing). +__all__ = list(globals().keys()) Added: sandbox/trunk/import_in_py/Py3K/importlib.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/importlib.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,139 @@ +"""Implementation of Python's import machinery in Python source code. + +The Import class implements the semantics of import. This means that an +instance of this class can be called to properly check sys.modules, +sys.meta_path, sys.path, etc. to import the requested module. + +The importing of built-in, frozen, extension, .py, and .pyc files are all +handled by implementing importers and loaders as specified by PEP 302. This +leads to the ability to easily control imports based on the type of module. +There is also a clear distinction between how the module is stored and how it +is formatted (e.g., a Python source file does not require it be stored as a +file on a filesystem). + +To help with the distinction between how a module is stored compared to its +format the idea of handlers is introduced. A handler implements a specific +interface while specifying the type of module it handles (usually by the what +one would expect as a file extension if the module was on a filesystem). This +allows a PEP 302 importer/loader to represent how a module is stored while the +handler deals with how the module is formatted. + +A handler is expected to implement the handle_code method only. The handler +for Python source and bytecode modules goes farther and defines an extensive +interface that is designed so that alternatives on module formatting can be +supported easily without needing to write a new importer/loader. The Python +source and bytecode handler also expects loaders to define a more extensive +interface to allow for different backend stores (e.g., databases) to use the +handler without modification. All of this helps with code reuse and possible +errors from the complicated relationship between Python source and bytecode +modules. +""" +import _importlib + +# XXX Temporary functions that should eventually be removed. +import os + +def _set__import__(): + """Set __import__ to an instance of Import.""" + global original__import__ + original__import__ = __import__ + __builtins__['__import__'] = Import() + + +def _reset__import__(): + """Set __import__ back to the original implementation (assumes + _set__import__ was called previously).""" + __builtins__['__import__'] = original__import__ + + +def _w_long(x): + """Convert a 32-bit integer to little-endian. + + XXX Temporary until marshal's long functions are exposed. + + """ + x = int(x) + bytes = [] + bytes.append(x & 0xFF) + bytes.append((x >> 8) & 0xFF) + bytes.append((x >> 16) & 0xFF) + bytes.append((x >> 24) & 0xFF) + return ''.join(chr(x) for x in bytes) + + +def _r_long(bytes): + """Convert 4 bytes in little-endian to an integer. + + XXX Temporary until marshal's long function are exposed. + + """ + x = ord(bytes[0]) + x |= ord(bytes[1]) << 8 + x |= ord(bytes[2]) << 16 + x |= ord(bytes[3]) << 24 + return x + + +def _case_ok(directory, file_name): + """Verify that file_name (as found in 'directory') has the proper case. + + The path is assumed to already exist. + + XXX Temporary until imp's case_ok function can be exposed. + + XXX Better to roll this into a single function some how so that existence + check can be part of case check and thus cut down on stat calls? + + """ + # If platform is not case-sensitive *or* the environment variable + # PYTHONCASEOK is defined, then os.path.exists already handled the case by + # either doing a case-sensitive check or from the user saying he does not + # want case-sensitivity, respectively. + if sys.platform not in ('win32', 'mac', 'riscos', 'darwin', 'cygwin', + 'os2emx') or os.environ.get('PYTHONCASEOK'): + return True + directory_contents = os.listdir(directory) + if file_name in directory_contents: + return True + else: + return False + + + +# Required built-in modules. +try: + import posix as _os +except ImportError: + try: + import nt as _os + except ImportError: + try: + import os2 as _os + except ImportError: + raise ImportError('posix, nt, or os2 module required for importlib') +_importlib._os = _os +import imp, sys, marshal +_importlib.imp = imp +_importlib.sys = sys +_importlib.marshal = marshal + + +# XXX These all need to either go away or become built-in modules +# (Neal). +from errno import EACCES +from os import sep +import warnings + +_importlib._r_long = _r_long #XXX Expose original from marshal. +_importlib._w_long = _w_long #XXX Expose original from marshal. +_importlib._case_ok = _case_ok #XXX Expose original from imp. +# For os.path.join replacement; pull from Include/osdefs.h:SEP . +_importlib.path_sep = sep +# For allowing silent failure of .pyc creation when permission is denied. +_importlib.EACCES = EACCES + +_importlib.warnings = warnings + +del _importlib + +from _importlib import * Added: sandbox/trunk/import_in_py/Py3K/tests/__init__.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/__init__.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,14 @@ +if __name__ == '__main__': + import os + import os.path + + abs_test_directory = os.path.split(__file__)[0] + rel_test_directory = os.path.split(abs_test_directory)[1] + for filename in os.listdir(abs_test_directory): + if not filename.startswith('test_') or not filename.endswith('.py'): + continue + full_filename = os.path.join(abs_test_directory, filename) + module_name = os.path.splitext(filename)[0] + module = __import__(rel_test_directory + '.' + module_name) + getattr(module, module_name).test_main() + print('~' * 20) Added: sandbox/trunk/import_in_py/Py3K/tests/builtin_frozen_help.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/builtin_frozen_help.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,67 @@ +import sys +import unittest + +class BuiltinFrozen_Tester(unittest.TestCase): + + """Common test cases for built-in and frozen modules. + + Expected attributes: + * self.importer + The meta_path importer to test. + * self.module_name + Name of a module that the importer can import. + * self.bad_module_names + Sequence of module names that cannot be imported. + + """ + + def test_find_module_basic(self): + # Make sure expected modules can be found. + self.failUnless(self.importer.find_module(self.module_name)) + + def test_find_module_failures(self): + # Modules of the wrong type should not be found. + for module_name in self.bad_module_names: + self.failUnlessEqual(self.importer.find_module(module_name), None) + + def test_find_module_arg_count(self): + # Cover proper number of arguments. + self.failUnlessRaises(TypeError, self.importer.find_module) + self.failUnlessRaises(TypeError, self.importer.find_module, + self.module_name, None, None) + + def test_load_module_prev_import_check(self): + # If a module is already in sys.modules it should be returned without + # being re-initialized. + self.failUnlessEqual(self.importer.load_module(self.module_name), + sys.modules[self.module_name]) + + def test_load_module_new_import(self): + # Make sure importing of a module that was not done before works + # properly. + # Do not forget to put any removed module back into sys.modules! + # Certain modules like 'sys' have some attributes that are set + # only once during interpreter initialization and are never set + # again afterwards. + mod = None + try: + if self.module_name in sys.modules: + mod = sys.modules[self.module_name] + del sys.modules[self.module_name] + loaded_module = self.importer.load_module(self.module_name) + self.failUnlessEqual(self.module_name, loaded_module.__name__) + finally: + if mod: + sys.modules[self.module_name] = mod + + def test_load_module_ImportError(self): + self.failUnlessRaises(ImportError, + self.importer.load_module, + self.bad_module_names[0]) + + def test_load_module_arg_count(self): + self.failUnlessRaises(TypeError, self.importer.load_module) + self.failUnlessRaises(TypeError, self.importer.load_module, + self.module_name, None, None) + + Added: sandbox/trunk/import_in_py/Py3K/tests/ext_help.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/ext_help.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,21 @@ +import imp +import os +import sys + + +def find_ext_location(name): + possible_suffixes = [suffix[0] for suffix in imp.get_suffixes() + if suffix[2] == imp.C_EXTENSION] + path_entry = None + filename = None + try: + for path in sys.path: + for suffix in possible_suffixes: + filename = name + suffix + if os.path.exists(os.path.join(path, name + suffix)): + path_entry = path + raise StopIteration + except StopIteration: + return (path_entry, filename) + else: + raise ValueError('%s could not be found on sys.path' % name) Added: sandbox/trunk/import_in_py/Py3K/tests/mock_importlib.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/mock_importlib.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,100 @@ +import sys +import marshal +import imp +from test import test_support +from importlib import _w_long + + +def log_call(method): + """Log method calls to self.log.""" + def log_and_call(self, *args, **kwargs): + self.log.append(method.__name__) + return method(self, *args, **kwargs) + return log_and_call + + +class MockModule(object): + + """A mock module.""" + + def __init__(self, name=None, file_path=None, pkg_list=None, __all__=None): + if name is not None: + self.__name__ = name + if file_path is not None: + self.__file__ = file_path + if pkg_list is not None: + self.__path__ = pkg_list + if __all__ is not None: + self.__all__ = __all__ + + +# Mock Importers (with optional path_hooks support). + +class ErrorImporter(object): + + """Mock importer to have a guaranteed error point.""" + + def find_module(self, fullname, path=None): + self.find_request = fullname, path + raise ImportError + + @classmethod + def set_on_sys_path(cls): + error_entry = '' + sys.path.append(error_entry) + ins = cls() + sys.path_importer_cache[error_entry] = ins + return ins + + +class PassImporter(object): + + """Mock importer that always pass on importing a module.""" + + def __call__(self, path_entry): + """Always pass when asked to create an importer.""" + raise ImportError + + def find_module(self, fullname, path=None): + self.find_request = fullname, path + return None + + @classmethod + def set_on_sys_path(cls): + pass_entry = '' + sys.path.append(pass_entry) + ins = cls() + sys.path_importer_cache[pass_entry] = ins + return ins + + +class SucceedImporter(object): + + """Mock importer that always succeed by returning 'self'.""" + + def __init__(self): + self.path_entries = [] + self.loaded_modules = [] + + def __call__(self, path_entry): + self.path_entries.append(path_entry) + return self + + def find_module(self, fullname, path=None): + self.find_request = fullname, path + return self + + def load_module(self, fullname): + self.load_request = fullname + module = MockModule(fullname, '') + self.loaded_modules.append(module) + sys.modules[fullname] = module + return module + + @classmethod + def set_on_sys_path(cls): + succeed_entry = '' + sys.path.append(succeed_entry) + ins = cls() + sys.path_importer_cache[succeed_entry] = ins + return ins Added: sandbox/trunk/import_in_py/Py3K/tests/py_help.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/py_help.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,180 @@ +from __future__ import with_statement + +import marshal +import os.path +import py_compile +import shutil +import sys +import tempfile +import unittest + + +class TestPyPycFiles(unittest.TestCase): + + """Base class to help in generating a fresh source and bytecode file. + + Structure of created files: + * directory/ + + py_path [module_name + py_ext] + + pyc_path [module_name +pyc_ext] + + """ + + def setUp(self, faked_names=True): + """Generate the path to a temporary file to test with. + + If faked_names is true then all names are non-standard compared to + normal Python files. + + """ + # Set needed info for file paths. + if faked_names: + self.module_name = '' + self.py_ext = '.source' + self.pyc_ext = '.bytecode' + else: + self.module_name = '_test_module' + self.py_ext = '.py' + self.pyc_ext = '.pyc' if __debug__ else '.pyo' + try: + del sys.modules[self.module_name] + except KeyError: + pass + self.directory = tempfile.gettempdir() + self.test_attr = ('test_attr', None) + self.py_path = os.path.join(self.directory, + self.module_name+self.py_ext) + self.pyc_path = os.path.join(self.directory, + self.module_name+self.pyc_ext) + # Create source file. + self.source = '%s = %r' % self.test_attr + with open(self.py_path, 'w') as py_file: + py_file.write(self.source) + # Create bytecode file. + py_compile.compile(self.py_path, self.pyc_path, 'exec') + code = compile(self.source, self.pyc_path, 'exec') + self.bytecode = marshal.dumps(code) + sys.path.insert(0, self.directory) + + def tearDown(self): + """If the temporary path was used, make sure to clean up.""" + if self.directory in sys.path: + sys.path.remove(self.directory) + if os.path.exists(self.py_path): + os.remove(self.py_path) + if os.path.exists(self.pyc_path): + os.remove(self.pyc_path) + + def verify_module(self, module, file_path=None): + """Verify that the module is correct.""" + if file_path: + self.failUnlessEqual(module.__name__, self.module_name) + self.failUnlessEqual(module.__file__, file_path) + self.failUnless(hasattr(module, self.test_attr[0])) + self.failUnlessEqual(getattr(module, self.test_attr[0]), + self.test_attr[1]) + + +class TestPyPycPackages(TestPyPycFiles): + + """Create a testing package. + + Structure of created files (on top of files created in superclasses): + * self.directory/ + + top_level_module_path [top_level_module_name + py_ext] + + pkg_path/ [pkg_name] + - pkg_init_path [ '__init__' + py_ext] + - pkg_module_path [module_name + py_ext] + - sub_pkg_path/ [sub_pkg_name] + * sub_pkg_init_path ['__init__' + py_ext] + * sub_pkg_module_path [module_name + py_ext] + + """ + + def setUp(self, faked_names=True): + TestPyPycFiles.setUp(self, faked_names) + self.top_level_module_name = 'top_level_' + self.module_name + self.top_level_module_path = os.path.join(self.directory, + self.top_level_module_name+self.py_ext) + with open(self.top_level_module_path, 'w') as top_level_file: + top_level_file.write(self.source) + if faked_names: + self.pkg_name = '' + else: + self.pkg_name = '_test_pkg' + self.pkg_path = os.path.join(self.directory, self.pkg_name) + try: + os.mkdir(self.pkg_path) + except OSError: + self.tearDown() + os.mkdir(self.pkg_path) + self.pkg_init_path = os.path.join(self.pkg_path, + '__init__'+self.py_ext) + self.pkg_init_pyc_path = os.path.join(self.pkg_path, + '__init__'+self.pyc_ext) + with open(self.pkg_init_path, 'w') as pkg_file: + pkg_file.write(self.source) + self.pkg_module_name = '.'.join([self.pkg_name, self.module_name]) + self.pkg_module_path = os.path.join(self.pkg_path, + self.module_name+self.py_ext) + with open(self.pkg_module_path, 'w') as module_file: + module_file.write(self.source) + self.sub_pkg_tail_name = 'sub_pkg' + self.sub_pkg_name = '.'.join([self.pkg_name, self.sub_pkg_tail_name]) + self.sub_pkg_path = os.path.join(self.pkg_path, self.sub_pkg_tail_name) + os.mkdir(self.sub_pkg_path) + self.sub_pkg_init_path = os.path.join(self.sub_pkg_path, + '__init__'+self.py_ext) + with open(self.sub_pkg_init_path, 'w') as subpkg_file: + subpkg_file.write(self.source) + self.sub_pkg_module_name = '.'.join([self.sub_pkg_name, + self.module_name]) + self.sub_pkg_module_path = os.path.join(self.sub_pkg_path, + self.module_name+self.py_ext) + with open(self.sub_pkg_module_path, 'w') as submodule_file: + submodule_file.write(self.source) + + def tearDown(self): + TestPyPycFiles.tearDown(self) + os.remove(self.top_level_module_path) + pyc_path = (os.path.splitext(self.top_level_module_path)[0] + + self.pyc_ext) + if os.path.exists(pyc_path): + os.remove(pyc_path) + shutil.rmtree(self.pkg_path) + + def verify_package(self, module, actual_name=None): + self.failUnless(hasattr(module, self.test_attr[0])) + self.failUnlessEqual(getattr(module, self.test_attr[0]), + self.test_attr[1]) + if module.__name__ == self.pkg_name: + self.failUnless(module.__file__ in + [self.pkg_init_path, self.pkg_init_pyc_path]) + self.failUnlessEqual(module.__path__, [self.pkg_path]) + # Module in top-level package. + if actual_name and self.pkg_module_name in actual_name: + self.failUnless(hasattr(module, self.module_name)) + sub_module = getattr(module, self.module_name) + self.failUnlessEqual(sub_module.__name__, self.pkg_module_name) + self.failUnlessEqual(sub_module.__file__, self.pkg_module_path) + self.verify_module(sub_module) + # Package within top-level package. + if actual_name and self.sub_pkg_name in actual_name: + self.failUnless(hasattr(module, self.sub_pkg_tail_name)) + sub_pkg = getattr(module, self.sub_pkg_tail_name) + self.failUnlessEqual(sub_pkg.__name__, self.sub_pkg_name) + self.failUnlessEqual(sub_pkg.__file__, self.sub_pkg_init_path) + self.failUnlessEqual(sub_pkg.__path__, [self.sub_pkg_path]) + self.verify_module(sub_pkg) + if actual_name == self.sub_pkg_module_name: + self.failUnless(hasattr(sub_pkg, self.module_name)) + sub_module = getattr(sub_pkg, self.module_name) + self.failUnlessEqual(sub_module.__name__, + self.sub_pkg_module_name) + self.failUnlessEqual(sub_module.__file__, + self.sub_pkg_module_path) + self.verify_module(sub_module) + if module.__name__ == self.pkg_module_name: + self.failUnlessEqual(module.__file__, self.pkg_module_path) + + Added: sandbox/trunk/import_in_py/Py3K/tests/test_builtin_importer.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/test_builtin_importer.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,22 @@ +import importlib + +from tests.builtin_frozen_help import BuiltinFrozen_Tester + +from test.test_support import run_unittest + +class BuiltinImporterTests(BuiltinFrozen_Tester): + + """Test the built-in module importer.""" + + importer = importlib.BuiltinImporter() + module_name = 'sys' + bad_module_names = ('tokenize', 'time', '__hello__') + + +def test_main(): + run_unittest(BuiltinImporterTests) + + + +if __name__ == '__main__': + test_main() Added: sandbox/trunk/import_in_py/Py3K/tests/test_chained_importer.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/test_chained_importer.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,126 @@ +import importlib +from tests import mock_importlib + +import os +from test import test_support +import unittest + + +class ChainingPathHook(unittest.TestCase): + + """Tests for importlib.chaining_fs_path_hook.""" + + def test_single_hook(self): + # A single hook argument should work as expected. + # Also tests acceptance of a relative path. + hook = importlib.chaining_fs_path_hook(mock_importlib.SucceedImporter()) + self.assert_(hook('.')) + hook = importlib.chaining_fs_path_hook(mock_importlib.PassImporter()) + self.assertRaises(ImportError, hook, '.') + + def test_path_acceptance(self): + # Valid paths should be accepted, but non-existent paths should be + # rejected outright. + succeed_hook = mock_importlib.SucceedImporter() + hook = importlib.chaining_fs_path_hook(succeed_hook) + self.assert_(hook('.')) + self.assertRaises(ImportError, hook, '_nonexistentdirectory') + + def test_multiple_hooks(self): + # Multiple hooks should work. + succeed_hook = mock_importlib.SucceedImporter() + pass_hook = mock_importlib.PassImporter() + hook = importlib.chaining_fs_path_hook(pass_hook, succeed_hook) + self.assert_(hook('.')) + hook = importlib.chaining_fs_path_hook(succeed_hook, pass_hook) + self.assert_(hook('.')) + hook = importlib.chaining_fs_path_hook(pass_hook, pass_hook) + self.assertRaises(ImportError, hook, '.') + + def test_order_preservation(self): + # The order of importers to call should be maintained. + succeed1 = mock_importlib.SucceedImporter() + succeed2 = mock_importlib.SucceedImporter() + hook = importlib.chaining_fs_path_hook(succeed1, succeed2) + importer = hook('.') + self.assert_(importer._importers[0] is succeed1) + self.assert_(importer._importers[1] is succeed2) + + def test_absolute_path(self): + # The path hooks that are called should be passed an absolute path. + succeed = mock_importlib.SucceedImporter() + hook = importlib.chaining_fs_path_hook(succeed) + hook('.') + absolute_path = os.path.abspath('.') + self.assertEquals(os.path.normpath(succeed.path_entries[0]), absolute_path) + + def test_reject_file(self): + # A file should not be accepted. + succeed = mock_importlib.SucceedImporter() + hook = importlib.chaining_fs_path_hook(succeed) + with open(test_support.TESTFN, 'w') as test_file: + test_file.write('# For testing chained path hook.') + try: + self.assertRaises(ImportError, hook, test_support.TESTFN) + finally: + test_support.unlink(test_support.TESTFN) + + def test_reject_bad_dir(self): + # A non-existent directory should be rejected. + succeed = mock_importlib.SucceedImporter() + hook = importlib.chaining_fs_path_hook(succeed) + self.assertRaises(ImportError, hook, '_asdfasdfasdf') + + +class ChainedImporterTests(unittest.TestCase): + + """Tests for importlib.ChainedImporter.""" + + def test_single_importer(self): + # There should be no issue with a single importer. + succeed = mock_importlib.SucceedImporter() + importer = importlib.ChainedImporter(succeed) + self.assert_(importer.find_module('blah') is succeed) + self.assertEqual(succeed.find_request[0], 'blah') + pass_ = mock_importlib.PassImporter() + importer = importlib.ChainedImporter(pass_) + self.assert_(importer.find_module(pass_) is None) + + def test_multiple_importers(self): + # Test that multiple importers work. + succeed = mock_importlib.SucceedImporter() + pass_ = mock_importlib.PassImporter() + importer = importlib.ChainedImporter(succeed, pass_) + self.assert_(importer.find_module('blah') is succeed) + self.assert_(succeed.find_request[0], 'blah') + importer = importlib.ChainedImporter(pass_, succeed) + self.assert_(importer.find_module('blah') is succeed) + self.assert_(succeed.find_request[0], 'blah') + + def test_order(self): + # Make sure that the importers are called in the proper order. + succeed = mock_importlib.SucceedImporter() + pass_ = mock_importlib.PassImporter() + assert not hasattr(pass_, 'find_request') + assert not hasattr(succeed, 'find_request') + importer = importlib.ChainedImporter(pass_, succeed) + importer.find_module('blah') + self.assert_(hasattr(pass_, 'find_request')) + self.assertEqual(pass_.find_request[0], 'blah') + self.assert_(hasattr(succeed, 'find_request')) + self.assertEqual(succeed.find_request[0], 'blah') + succeed = mock_importlib.SucceedImporter() + succeed2 = mock_importlib.SucceedImporter() + importer = importlib.ChainedImporter(succeed, succeed2) + importer.find_module('blah') + self.assert_(hasattr(succeed, 'find_request')) + self.assertEqual(succeed.find_request[0], 'blah') + self.assert_(not hasattr(succeed2, 'find_request')) + + +def test_main(): + test_support.run_unittest(ChainingPathHook, ChainedImporterTests) + + +if __name__ == '__main__': + test_main() Added: sandbox/trunk/import_in_py/Py3K/tests/test_frozen_importer.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/test_frozen_importer.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,61 @@ +import importlib + +from tests.builtin_frozen_help import BuiltinFrozen_Tester + +import io +import sys +from test.test_support import run_unittest + + +class FrozenImporterTests(BuiltinFrozen_Tester): + + """Test the frozen module importer. + + Python include the __hello__ and __phello__ frozen modules (as defined in + Python/frozen.c). Both do output to the screen, though, which should be + suppressed during testing. + + """ + + importer = importlib.FrozenImporter() + module_name = '__hello__' + bad_module_names = ('tokenize', 'time', 'sys') + + def setUp(self): + """Importing the testing frozen modules outputs to stdout. Redirect + stdout to block that.""" + self._orig_stdout = sys.stdout + sys.stdout = io.StringIO() + + def tearDown(self): + """Reset stdout to what it is by default.""" + sys.stdout = self._orig_stdout + + +class FrozenPackageInitTests(FrozenImporterTests): + + """Tests the frozen module import for package __init__ modules.""" + + module_name = '__phello__' + + +class FrozenPackageModuleTests(FrozenImporterTests): + + """Tests the frozen module import for modules in packages.""" + + module_name = '__phello__.spam' + +class FrozenPackageInitTests(FrozenImporterTests): + + """Tests the frozen module import for package __init__ modules.""" + + module_name = '__phello__' + + +def test_main(): + run_unittest(FrozenImporterTests, FrozenPackageInitTests, FrozenPackageModuleTests) + + + +if __name__ == '__main__': + test_main() Added: sandbox/trunk/import_in_py/Py3K/tests/test_fs_importer.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/test_fs_importer.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,210 @@ +from __future__ import with_statement + +import importlib + +from tests import mock_importlib +from tests.ext_help import find_ext_location +from tests.py_help import TestPyPycPackages + +import imp +import os +import os.path +import py_compile +import sys +import tempfile +from test import test_support +import unittest +import warnings + + +class PyFileImporterTests(TestPyPycPackages): + + """Test the PyFileImporterTests (and thus also FileImporter). + + No need to check for searching any deeper than a package (e.g., don't need + to look for a sub-module or sub-package) since the import machinery will + always have an importer for the containing package directory. + + """ + + def setUp(self): + TestPyPycPackages.setUp(self, faked_names=False) + self.importer = importlib.PyFileImporter(self.directory) + self.importer._loader = lambda name, path, is_pkg: path + + def tearDown(self): + TestPyPycPackages.tearDown(self) + + def test_py_top_level(self): + # A top-level source module should work. + test_support.unlink(self.pyc_path) + found = self.importer.find_module(self.module_name) + self.assertEqual(found, self.py_path) + + def test_failure(self): + os.unlink(self.py_path) + os.unlink(self.pyc_path) + found = self.importer.find_module(self.module_name) + self.assert_(found is None) + + def test_pyc_top_level(self): + # A top-level bytecode module should work. + test_support.unlink(self.py_path) + found = self.importer.find_module(self.module_name) + self.assertEqual(found, self.pyc_path) + + def test_py_package(self): + # A Python source package should be found. + # TestPyPycPackages, by default, does not compile the __init__ file. + if self.pkg_init_path[-1] not in ('c', 'o'): + assert not os.path.exists(self.pkg_init_path + 'c') + assert not os.path.exists(self.pkg_init_path + 'o') + else: + assert False + found = self.importer.find_module(self.pkg_name) + self.assertEqual(found, self.pkg_init_path) + + def test_pyc_package(self): + # A bytecode package should be found. + py_compile.compile(self.pkg_init_path) + test_support.unlink(self.pkg_init_path) + expected = self.pkg_init_path + ('c' if __debug__ else 'o') + found = self.importer.find_module(self.pkg_name) + self.assertEqual(found, expected) + + def test_file_type_order(self): + # The order of the search should be preserved with source files being + # found first. + assert os.path.exists(self.py_path) + assert self.py_ext in self.importer._suffixes + assert os.path.exists(self.pyc_path) + assert self.pyc_ext in self.importer._suffixes + py_suffixes = importlib.suffix_list(imp.PY_SOURCE) + found = self.importer.find_module(self.module_name) + for suffix in py_suffixes: + if found.endswith(suffix): + break + else: + self.fail("Python source files not searched for before bytecode " + "files") + + def test_missing__init__warning(self): + # An ImportWarning should be raised if a directory matches a module + # name but no __init__ file exists. + test_support.unlink(self.pkg_init_path) + with test_support.catch_warning() as w: + warnings.simplefilter('always', ImportWarning) + found = self.importer.find_module(self.pkg_name) + self.assert_(found is None) + self.assert_(issubclass(w.category, ImportWarning)) + self.assert_(str(w.message).endswith("missing __init__")) + + def test_package_before_module(self): + # A package should always be found before a module with the same name. + # This should not vary based on whether one is source and another is + # bytecode, etc. + module_path = os.path.join(self.directory, self.pkg_name + self.py_ext) + with open(module_path, 'w') as module_file: + module_file.write('# Testing packcage over module import.') + try: + # Source/source. + found = self.importer.find_module(self.pkg_name) + self.assert_('__init__' in found) + # Source/bytecode. + py_compile.compile(self.pkg_init_path) + os.unlink(self.pkg_init_path) + found = self.importer.find_module(self.pkg_name) + self.assert_('__init__' in found) + # Bytecode/bytecode. + py_compile.compile(module_path) + os.unlink(module_path) + found = self.importer.find_module(self.pkg_name) + self.assert_('__init__' in found) + # Bytecode/source. + # tearDown will remove the package __init__ file. + with open(self.pkg_init_path, 'w') as pkg_file: + pkg_file.write('# testing package/module import preference.') + os.unlink(self.pkg_init_path + ('c' if __debug__ else 'o')) + found = self.importer.find_module(self.pkg_name) + self.assert_('__init__' in found) + finally: + test_support.unlink(module_path) + test_support.unlink(os.path.join(self.directory, + self.pkg_name + self.pyc_ext)) + + def test_module_case_sensitivity(self): + # Case-sensitivity should always matter as long as PYTHONCASEOK is not + # set. + name_len = len(self.top_level_module_name) + bad_case_name = (self.top_level_module_name[:name_len/2].upper() + + self.top_level_module_name[name_len/2:].lower()) + env_guard = test_support.EnvironmentVarGuard() + env_guard.unset('PYTHONCASEOK') + with env_guard: + self.failUnless(not self.importer.find_module(bad_case_name)) + if sys.platform not in ('win32', 'mac', 'darwin', 'cygwin', 'os2emx', + 'riscos'): + return + env_guard = test_support.EnvironmentVarGuard() + env_guard.set('PYTHONCASEOK', '1') + with env_guard: + assert os.environ['PYTHONCASEOK'] + self.failUnless(self.importer.find_module(bad_case_name)) + + def test_package_case_sensitivity(self): + # Case-sensitivity should always matter as long as PYTHONCASEOK is not + # set. + name_len = len(self.pkg_name) + bad_case_name = (self.pkg_name[:name_len/2].upper() + + self.pkg_name[name_len/2:].lower()) + bad_init_name = os.path.join(self.directory, self.pkg_name, + '__INit__.py') + env_guard = test_support.EnvironmentVarGuard() + env_guard.unset('PYTHONCASEOK') + with env_guard: + self.failUnless(not self.importer.find_module(bad_case_name)) + os.unlink(self.pkg_init_path) + with open(bad_init_name, 'w') as init_file: + init_file.write('# Test case-sensitivity of imports.') + self.failUnless(not self.importer.find_module(self.pkg_name)) + if sys.platform not in ('win32', 'mac', 'darwin', 'cygwin', 'os2emx', + 'riscos'): + return + os.unlink(bad_init_name) + with open(self.pkg_init_path, 'w') as init_file: + init_file.write('# Used for testing import.') + env_guard = test_support.EnvironmentVarGuard() + env_guard.set('PYTHONCASEOK', '1') + with env_guard: + assert os.environ['PYTHONCASEOK'] + self.failUnless(self.importer.find_module(bad_case_name)) + with open(bad_init_name, 'w') as init_file: + init_file.write('# Used to test case-insensitivity of import.') + self.failUnless(self.importer.find_module(self.pkg_name)) + + +class ExtensionFileImporterTests(unittest.TestCase): + + def test_basic(self): + # Finding an extension module should work. + search_for = 'datetime' + extension_dir, filename = find_ext_location(search_for) + importer = importlib.ExtensionFileImporter(extension_dir) + importer._loader = lambda name, path, is_pkg: path + found = importer.find_module(search_for) + self.assert_(found is not None) + self.assert_(search_for in found) + + def test_failure(self): + search_for = 'asdfsdfasdffd' + importer = importlib.ExtensionFileImporter('.') + found = importer.find_module(search_for) + self.assert_(found is None) + + +def test_main(): + test_support.run_unittest(PyFileImporterTests, ExtensionFileImporterTests) + + +if __name__ == '__main__': + test_main() Added: sandbox/trunk/import_in_py/Py3K/tests/test_fs_loader.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/test_fs_loader.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,403 @@ +import importlib + +from tests import mock_importlib +from tests.ext_help import find_ext_location +from tests.py_help import TestPyPycPackages + +import imp +import os +import py_compile +import sys +from test import test_support +import unittest + + +class LoaderBasics(unittest.TestCase): + + def reload_test(self, loader, name): + # If a module already exists in sys.modules then it should be reused + # and be re-initialized. + if name not in sys.modules: + loader.load_module(name) + cached = sys.modules[name] + loaded = loader.load_module(name) + self.assert_(cached is loaded) + + def basic_test(self, loader, name, path): + # A module, after being loaded, should appear in sys.modules. + if name in sys.modules: + del sys.modules[name] + loaded = loader.load_module(name) + self.assert_(loaded is sys.modules[name]) + self.assertEqual(loaded.__name__, name) + self.assert_(loaded.__file__.startswith(path), + "%s does not start with %s" % (loaded.__file__, path)) + self.assertEqual(loaded.__loader__, loader) + + def ImportError_on_bad_name(self, loader, bad_name, extra_methods=[]): + to_test = ['load_module', 'is_package', 'get_code', 'get_source'] + to_test += extra_methods + for method_name in to_test: + method = getattr(loader, method_name) + self.assertRaises(ImportError, method, bad_name) + + +class ExtensionFileLoaderTests(LoaderBasics): + + testing_module = '_testcapi' + testing_location = find_ext_location(testing_module) + testing_path = os.path.join(*testing_location) + + def setUp(self): + self.loader = importlib._ExtensionFileLoader(self.testing_module, + self.testing_path, False) + + def test_basic(self): + # Should be able to import an extension module. + self.basic_test(self.loader, self.testing_module, self.testing_path) + + def test_reload(self): + # A module that is already in sys.modules should be reused and be + # re-initialized. + self.reload_test(self.loader, self.testing_module) + + def test_ImportError_on_bad_name(self): + # ImportError should be raised when a method is called with a module + # name it cannot handle. + self.ImportError_on_bad_name(self.loader, self.testing_module + 'asdf') + + def test_is_package(self): + # Should always be False. + self.assert_(not self.loader.is_package(self.testing_module)) + + def test_get_code(self): + # Should always be None. + self.assert_(not self.loader.get_code(self.testing_module)) + + def test_get_source(self): + # Should always be None. + self.assert_(not self.loader.get_source(self.testing_module)) + + +class BasicPyFileLoaderTests(LoaderBasics, TestPyPycPackages): + + """Very basic tests for the source loader.""" + + def setUp(self): + TestPyPycPackages.setUp(self, faked_names=False) + + def test_basic(self): + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + self.basic_test(loader, self.module_name, self.py_path) + + def test_pkg_basic(self): + loader = importlib._PyFileLoader(self.pkg_name, self.pkg_init_path, + True) + self.basic_test(loader, self.pkg_name, self.pkg_init_path) + + def test_reload(self): + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + self.reload_test(loader, self.module_name) + + def test_ImportError_on_bad_name(self): + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + extra_methods = ['write_bytecode', 'get_bytecode', 'mod_time'] + self.ImportError_on_bad_name(loader, self.module_name + 'sdfasdf', + extra_methods) + + def test_no_stale_module_on_failure(self): + # A failure during loading should not leave a partially initialized + # module in sys.modules. + def fail_loading(loader, name, *args): + sys.modules[name] = 'Should not exist' + raise ImportError('initial failed load') + if self.module_name in sys.modules: + del sys.modules[self.module_name] + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + loader._handler = fail_loading + self.assertRaises(ImportError, loader.load_module, self.module_name) + self.assert_(self.module_name not in sys.modules) + + def test_file_deletion_post_init(self): + # Loading from source (with no bytecode), deleting the source (because + # bytecode was generated), and then loading again should work. + test_support.unlink(self.pyc_path) + if self.module_name in sys.modules: + del sys.modules[self.module_name] + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + found = loader.load_module(self.module_name) + self.verify_package(found, self.module_name) + del sys.modules[self.module_name] + os.unlink(self.py_path) + assert os.path.exists(self.pyc_path) + found = loader.load_module(self.module_name) + self.verify_package(found, self.module_name) + + def test_fails_with_no_files_post_init(self): + # The loader should fail gracefully if the files it would have used to + # load the module have been removed. + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + test_support.unlink(self.py_path) + test_support.unlink(self.pyc_path) + self.assertRaises(ImportError, loader.load_module, self.module_name) + + def test_reload_failure(self): + # If a module is reloaded and something happens during loading, the + # module should be left in place and not cleared out. + test_support.unlink(self.pyc_path) + with open(self.py_path, 'w') as source_file: + source_file.write('x = 42/0') + mock_module = mock_importlib.MockModule(self.module_name) + mock_module.__file__ = 'blah' + if hasattr(mock_module, '__loader__'): + delattr(mock_module, '__loader__') + sys.modules[self.module_name] = mock_module + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + self.assertRaises(ZeroDivisionError, loader.load_module, + self.module_name) + self.assert_(self.module_name in sys.modules) + self.assertEquals(mock_module.__file__, 'blah') + self.assert_(not hasattr(mock_module, '__loader__')) + + +def log_call(instance, method_name): + """Log a method call.""" + method = getattr(instance, method_name) + if not hasattr(instance, '_log'): + instance._log = [] + def logger(*args, **kwargs): + instance._log.append(method_name) + return method(*args, **kwargs) + setattr(instance, method_name, logger) + + +class PyFileLoaderLoadingTests(TestPyPycPackages): + + """Test that the source loader uses the proper file. + + Make sure all tests are run both against a top-level module and a package + where appropriate. + + """ + + def setUp(self): + TestPyPycPackages.setUp(self, faked_names=False) + + def test_pyc_over_py(self): + # If a bytecode file is good, don't even bother with the source + # (top-level or package). + for name, path, is_pkg in [(self.module_name, self.py_path, False), + (self.pkg_name, self.pkg_init_path, True)]: + if name in sys.modules: + del sys.modules[name] + py_compile.compile(path) + loader = importlib._PyFileLoader(name, path, is_pkg) + log_call(loader, 'get_source') + found = loader.load_module(name) + self.assert_('get_source' not in loader._log) + self.verify_package(found, name) + + def test_only_good_pyc(self): + # Should be able to load even if only bytecode is available (top-level + # or package). + to_test = [(self.module_name, self.py_path, self.pyc_path, False), + (self.pkg_name, self.pkg_init_path, self.pkg_init_pyc_path, + True)] + for name, source_path, bytecode_path, is_pkg in to_test: + if name in sys.modules: + del sys.modules[name] + py_compile.compile(source_path) + os.unlink(source_path) + loader = importlib._PyFileLoader(name, bytecode_path, is_pkg) + log_call(loader, 'mod_time') + log_call(loader, 'get_source') + found = loader.load_module(name) + self.assert_('mod_time' not in loader._log) + self.assert_('get_source' not in loader._log) + self.verify_package(found, name) + + def test_only_py(self): + # Having only source should be fine (top-level or package). + to_test = [(self.module_name, self.py_path, self.pyc_path, False), + (self.pkg_name, self.pkg_init_path, self.pkg_init_pyc_path, + True)] + for name, source_path, bytecode_path, is_pkg in to_test: + if name in sys.modules: + del sys.modules[name] + test_support.unlink(bytecode_path) + loader = importlib._PyFileLoader(name, source_path, is_pkg) + log_call(loader, 'get_bytecode') + log_call(loader, 'write_bytecode') + found = loader.load_module(name) + self.assert_('get_bytecode' not in loader._log) + self.assert_(os.path.exists(bytecode_path)) + self.verify_package(found, name) + # Make sure generated bytecode is good. + del sys.modules[name] + os.unlink(source_path) + assert os.path.exists(bytecode_path) + loader = importlib._PyFileLoader(name, bytecode_path, is_pkg) + log_call(loader, 'mod_time') + log_call(loader, 'get_bytecode') + found = loader.load_module(name) + self.assert_('mod_time' not in loader._log) + self.assert_('get_bytecode' in loader._log) + self.verify_package(found, name) + + def test_stale_pyc(self): + # If a bytecode file when compared to its source then regenerate the + # bytecode. + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + log_call(loader, 'write_bytecode') + with open(self.pyc_path, 'rb') as bytecode_file: + data = bytecode_file.read() + timestamp = importlib._r_long(data[4:8]) + with open(self.pyc_path, 'wb') as bytecode_file: + bytecode_file.write(data[:4]) + bytecode_file.write(importlib._w_long(timestamp-1)) + bytecode_file.write(data[8:]) + found = loader.load_module(self.module_name) + self.assert_('write_bytecode' in loader._log) + self.verify_package(found, self.module_name) + source_mtime = os.stat(self.py_path).st_mtime + bytecode_mtime = os.stat(self.pyc_path).st_mtime + self.assert_(bytecode_mtime >= source_mtime) + del sys.modules[self.module_name] + loader = importlib._PyFileLoader(self.module_name, self.pyc_path, + False) + log_call(loader, 'get_bytecode') + log_call(loader, 'get_source') + found = loader.load_module(self.module_name) + self.assert_('get_bytecode' in loader._log) + self.assert_('get_source' not in loader._log) + self.verify_package(found, self.module_name) + + def test_bad_magic(self): + # If the magic cookie for bytecode is bad then raise an exception (no + # source), or regenerate the bytecode. + def change_magic(): + with open(self.pyc_path, 'rb') as bytecode_file: + data = bytecode_file.read() + assert imp.get_magic() != '0' * 4 + with open(self.pyc_path, 'wb') as bytecode_file: + bytecode_file.write('0' * 4) + bytecode_file.write(data[4:]) + # With source. + change_magic() + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + log_call(loader, 'write_bytecode') + found = loader.load_module(self.module_name) + self.assert_('write_bytecode' in loader._log) + self.verify_package(found, self.module_name) + source_mtime = os.stat(self.py_path).st_mtime + bytecode_mtime = os.stat(self.pyc_path).st_mtime + self.assert_(source_mtime <= bytecode_mtime) + del sys.modules[self.module_name] + loader = importlib._PyFileLoader(self.module_name, self.pyc_path, + False) + log_call(loader, 'get_bytecode') + log_call(loader, 'get_source') + found = loader.load_module(self.module_name) + self.assert_('get_bytecode' in loader._log) + self.assert_('get_source' not in loader._log) + self.verify_package(found, self.module_name) + # Without source. + del sys.modules[self.module_name] + os.unlink(self.py_path) + change_magic() + loader = importlib._PyFileLoader(self.module_name, self.pyc_path, + False) + self.assertRaises(ImportError, loader.load_module, self.module_name) + + def test_malformed_bytecode(self): + # Invalid bytecode triggers an exception, source or not. + source_mtime = int(os.stat(self.py_path).st_mtime) + with open(self.pyc_path, 'wb') as bytecode_file: + bytecode_file.write(imp.get_magic()) + bytecode_file.write(importlib._w_long(source_mtime)) + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + self.assertRaises(Exception, loader.load_module, self.module_name) + + +class PEP302PyFileInterface(TestPyPycPackages): + + """Test the optional extensions from PEP 302.""" + + def setUp(self): + TestPyPycPackages.setUp(self, faked_names=False) + + def test_get_source(self): + # Return the source when available, None if there is at least bytecode, + # and raise ImportError if there is no change of loading the module. + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + source = loader.get_source(self.module_name) + self.assertEqual(source, self.source) + os.unlink(self.py_path) + self.assert_(loader.get_source(self.module_name) is None) + os.unlink(self.pyc_path) + self.assertRaises(ImportError, loader.get_source, self.module_name) + + def test_get_data(self): + loader = importlib._PyFileLoader(self.module_name, self.pyc_path, + False) + data = loader.get_data(self.pyc_path) + with open(self.pyc_path, 'rb') as bytecode_file: + original = bytecode_file.read() + self.assertEqual(data, original) + + def test_is_package(self): + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + self.assert_(not loader.is_package(self.module_name)) + loader = importlib._PyFileLoader(self.pkg_name, self.pkg_init_path, + True) + self.assert_(loader.is_package(self.pkg_name)) + + def get_code_test(self, loader): + attr_name, attr_value = self.test_attr + code_object = loader.get_code(loader._name) + ns = {} + exec(code_object, ns) + self.assert_(attr_name in ns) + self.assertEqual(ns[attr_name], attr_value) + + def test_get_code(self): + # Source and bytecode. + assert os.path.exists(self.py_path) and os.path.exists(self.pyc_path) + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + self.get_code_test(loader) + # Source only. + os.unlink(self.pyc_path) + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + self.get_code_test(loader) + # Bytecode only. + py_compile.compile(self.py_path, doraise=True) + os.unlink(self.py_path) + loader = importlib._PyFileLoader(self.module_name, self.pyc_path, + False) + self.get_code_test(loader) + # Bad magic number in bytecode. + with open(self.pyc_path, 'rb') as bytecode_file: + data = bytecode_file.read() + with open(self.pyc_path, 'wb') as bytecode_file: + bytecode_file.write('0' * 4) + bytecode_file.write('0' * 4) + bytecode_file.write(data[8:]) + loader = importlib._PyFileLoader(self.module_name, self.pyc_path, + False) + self.assertRaises(ImportError, loader.get_code, self.module_name) + # Nothing available. + os.unlink(self.pyc_path) + assert not os.path.exists(self.py_path) + assert not os.path.exists(self.pyc_path) + loader = importlib._PyFileLoader(self.module_name, self.py_path, False) + self.assertRaises(ImportError, loader.get_code, self.module_name) + + +def test_main(): + test_support.run_unittest(ExtensionFileLoaderTests, BasicPyFileLoaderTests, + PyFileLoaderLoadingTests, + PEP302PyFileInterface) + + +if __name__ == '__main__': + test_main() Added: sandbox/trunk/import_in_py/Py3K/tests/test_import_mechanics.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/test_import_mechanics.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,513 @@ +import importlib + +from tests import mock_importlib + +import sys +from test.test_support import run_unittest +import unittest + + +class ImportHelper(unittest.TestCase): + + """Common helper methods for testing the Importer class.""" + + def setUp(self): + """Store a copy of the 'sys' attribute pertaining to imports.""" + # Don't backup sys.modules since dict is cached. + # Don't clear sys.modules as it can wreak havoc + # (e.g., losing __builtin__). + self.old_sys_modules = sys.modules.copy() + self.old_meta_path = sys.meta_path[:] + sys.meta_path = [] + self.old_sys_path = sys.path[:] + sys.path = [] + self.old_path_hooks = sys.path_hooks[:] + sys.path_hooks = [] + self.old_path_importer_cache = sys.path_importer_cache.copy() + sys.path_importer_cache.clear() + self.default_importer = mock_importlib.PassImporter() + self.importer = importlib.Import(self.default_importer, tuple()) + + def tearDown(self): + """Restore backup of import-related attributes in 'sys'.""" + sys.modules.clear() + sys.modules.update(self.old_sys_modules) + sys.meta_path = self.old_meta_path + sys.path = self.old_sys_path + sys.path_hooks = self.old_path_hooks + sys.path_importer_cache = self.old_path_importer_cache + + def clear_sys_modules(*modules): + for module in modules: + try: + del sys.modules[module] + except KeyError: + pass + + +class ImportHelper2(ImportHelper): + + """Create mock modules.""" + + def setUp(self): + ImportHelper.setUp(self) + self.parent_name = '' + self.child_name = '' + self.full_child_name = '.'.join([self.parent_name, self.child_name]) + self.parent_module = mock_importlib.MockModule(self.parent_name) + self.child_module = mock_importlib.MockModule(self.full_child_name) + setattr(self.parent_module, self.child_name, self.child_module) + +class ImportNameResolutionTests(ImportHelper2): + + """Test the absolute name resolution for relative imports.""" + + def test_classic_relative_import_in_package(self): + # Importing from within a package's __init__ file should lead to a + # resolved import name of the package name tacked on to the name of the + # module being imported. + resolved_name = self.importer._classic_resolve_name(self.child_name, + self.parent_name, + True) + self.failUnlessEqual(resolved_name, self.full_child_name) + + def test_classic_relative_import_in_module(self): + # Importing within a module in a package should lead to the importer's + # module name being removed and replaced with the name of what is to be + # imported. + calling_from = self.parent_name + '.' + '' + resolved_name = self.importer._classic_resolve_name(self.child_name, + calling_from, + False) + self.failUnlessEqual(resolved_name, self.full_child_name) + + def test_relative_import_in_package_for_a_module(self): + # Trying to import a single level within a package within it's __init__ + # module should stay within the package. + # ``from .child_name import ...`` in a package. + resolved_name = self.importer._resolve_name(self.child_name, + self.parent_name, True, 1) + self.failUnlessEqual(resolved_name, self.full_child_name) + + def test_relative_import_in_module_for_a_module(self): + # Importing from within a module in a package should try to import from + # within the same directory as the module requesting the import. + # ``from .child_name import ...`` in a package module. + calling_from = self.parent_name + '.' + '' + resolved_name = self.importer._resolve_name(self.child_name, + calling_from, False, 1) + self.failUnlessEqual(resolved_name, self.full_child_name) + + def test_relative_import_deep_in_package(self): + # Calling from a deep point in the package should still work. + depth = 10 + name_extension = (str(x) for x in range(10)) + calling_from = self.parent_name + '.' + '.'.join(name_extension) + resolved_name = self.importer._resolve_name(self.child_name, + calling_from, False, depth) + self.failUnlessEqual(resolved_name, self.full_child_name) + + def test_attempt_to_escape_out_of_package_init(self): + # Attempting to go too high out of a package in its __init__ file + # should raise ImportError. + # ``from ..child_name import ...`` in a top-level package. + self.failUnlessRaises(ImportError, self.importer._resolve_name, + self.child_name, self.parent_name, True, 2) + + def test_attempt_to_escape_out_of_package_module(self): + # Attempting to go too high in the package from a module should raise + # ImportError. + # ``from ..child_name import ...`` in a top-level package module. + calling_from = self.parent_name + '.' + '' + self.failUnlessRaises(ImportError, self.importer._resolve_name, + self.child_name, calling_from, False, 2) + + def test_relative_import_in_top_level(self): + # Attempting a relative import in a top-level location should raise + # ImportError. + # ``from .child_name import ...`` outside of a package. + self.failUnlessRaises(ImportError, self.importer._resolve_name, + self.child_name, self.parent_name, False, 1) + + def test_relative_import_in_package_init(self): + # ``from . import ...`` in a package. + resolved_name = self.importer._resolve_name('', self.parent_name, True, + 1) + self.failUnlessEqual(resolved_name, self.parent_name) + + def test_relative_import_in_package_module(self): + # ``from . import ...`` in a package module. + resolved_name = self.importer._resolve_name('', self.full_child_name, + False, 1) + self.failUnlessEqual(resolved_name, self.parent_name) + + def test_relative_import_redirection(self): + # Having a relative module name resolve to a name that has a value of + # None in sys.modules should redirect to import an absolute import for + # the specified name. + module_name = '' + pkg_name = '' + resolved_relative_name = module_name + '.' + pkg_name + expected_module = mock_importlib.MockModule(module_name) + sys.modules[resolved_relative_name] = None + sys.modules[module_name] = expected_module + importing_globals = {'__name__':pkg_name, '__path__':['some path']} + imported = self.importer(module_name, importing_globals, level=-1) + self.failUnless(imported is expected_module) + + +class ImportFromListTests(ImportHelper2): + + """Test conditions based on fromlist.""" + + def test_fromlist_relative_import(self): + # Any items specified in fromlist while importing a package needs to be + # checked as to whether it is a pre-existing attribute or should be + # considered a declaration for a relative import. + module_name = '' + pkg_name = '' + full_module_name = pkg_name + '.' + module_name + # Already have package imported. + pkg_module = mock_importlib.MockModule(pkg_name, pkg_list=['some path']) + sys.modules[pkg_name] = pkg_module + # Make sure implicit import succeeds. + succeed = mock_importlib.SucceedImporter() + sys.meta_path.append(succeed) + # Import the package with a fromlist of the module. + module = self.importer._return_module(pkg_name, '', + fromlist=[module_name]) + self.failUnless(hasattr(module, module_name)) + fromlist_module = getattr(module, module_name) + self.failUnlessEqual(fromlist_module.__name__, full_module_name) + + def test_fromlist_nonexistent(self): + # If something listed in a fromlist does not exist the import + # should still succeed. + pkg_name = '' + pkg_module = mock_importlib.MockModule(pkg_name, pkg_list=['some path']) + sys.modules[pkg_name] = pkg_module + nonexistent_attr = 'asdfsdfd' + module = self.importer._return_module(pkg_name, '', + fromlist=[nonexistent_attr]) + self.failUnless(not hasattr(module, nonexistent_attr)) + + def test_fromlist_existing(self): + # A value in fromlist that already exists should not lead to a relative + # import. + pkg_name = '' + pkg_module = mock_importlib.MockModule(pkg_name, pkg_list=['some path']) + attr = 'some_attr' + setattr(pkg_module, attr, None) + sys.modules[pkg_name] = pkg_module + failing_import = mock_importlib.ErrorImporter() + sys.meta_path.append(failing_import) + module = self.importer(pkg_name, fromlist=[attr]) + self.failUnless(hasattr(module, attr)) + self.failUnless(not hasattr(failing_import, 'find_request')) + + def test_fromlist_nonpackage(self): + # No implicit imports of values in fromlist should be done if a module + # is what is being imported specifically. + module_name = '' + module = mock_importlib.MockModule(module_name) + sys.modules[module_name] = module + failing_import = mock_importlib.ErrorImporter() + sys.meta_path.append(failing_import) + imported_module = self.importer(module_name, fromlist=['sadfsdd']) + self.failUnless(not hasattr(failing_import, 'find_request')) + + def test_fromlist_relative_import_all(self): + # When '*' is passed in for fromlist, __all__ should be used for the + # possibility of a relative import. + module_name = '' + pkg_name = '' + full_module_name = pkg_name + '.' + module_name + pkg_module = mock_importlib.MockModule(pkg_name, pkg_list=['some path'], + __all__=[module_name]) + sys.modules[pkg_name] = pkg_module + succeed = mock_importlib.SucceedImporter() + sys.meta_path.append(succeed) + # Also tests that fromlist can be a tuple and still work. + module = self.importer(pkg_name, fromlist=('*',)) + self.failUnless(hasattr(module, module_name)) + relative_module = getattr(module, module_name) + self.failUnlessEqual(relative_module.__name__, full_module_name) + + def test_empty_fromlist(self): + # An empty fromlist means that the root module is returned. + sys.modules[self.parent_name] = self.parent_module + sys.modules[self.full_child_name] = self.child_module + module = self.importer._return_module(self.full_child_name, '', []) + self.failUnless(module is self.parent_module) + + def test_nonempty_fromlist(self): + # A fromlist with values should return the specified module. + sys.modules[self.parent_name] = self.parent_module + sys.modules[self.full_child_name] = self.child_module + test_attr_name = 'test_attr' + setattr(self.child_module, test_attr_name, None) + module = self.importer._return_module(self.full_child_name, '', + [test_attr_name]) + self.failUnless(module is self.child_module) + + def test_relative_import_empty_fromlist(self): + # If a relative import (with no dot) is performed with an empty fromlist + # then the module specified in the relative name is returned. + sys.modules[self.full_child_name] = self.child_module + sys.modules[self.parent_name] = self.parent_module + module = self.importer._return_module(self.full_child_name, + self.child_name, []) + self.failUnless(module is self.child_module) + + def test_deep_relative_import_empty_fromlist(self): + # If the relative name of a module has a dot, return the module that + # resolves to the absolute name of the module up to the first dot. + sys.modules[self.full_child_name] = self.child_module + sys.modules[self.parent_name] = self.parent_module + extra_depth = '.baz' + absolute_name = self.full_child_name + extra_depth + relative_name = self.child_name + extra_depth + module = self.importer._return_module(absolute_name, relative_name, []) + self.failUnless(module is self.child_module) + + +class ImportMiscTests(ImportHelper2): + + """Test miscellaneous parts of the Import class. + + Tests of the default values for __init__ are handled in the integration + tests. + + """ + + def test_sys_module_return(self): + # A module found in sys.modules should be returned immediately. + sys.modules[self.parent_name] = self.parent_module + module = self.importer._import_module(self.parent_name) + self.failUnless(module is self.parent_module) + + def test_sys_module_None(self): + # If sys.modules contains None for a module name, then raise ImportError. + module_name = '' + sys.modules[module_name] = None + self.failUnlessRaises(ImportError, self.importer._import_module, + module_name) + + def test_parent_missing(self): + # An import should fail if a parent module cannot be found. + sys.modules[self.full_child_name] = self.child_module + self.failUnlessRaises(ImportError, self.importer, self.full_child_name) + + def test_parent_imported(self): + # If a parent module is already imported, importing a child module + # should work (along with setting the attribute on the parent for the + # child module). + delattr(self.parent_module, self.child_name) + succeed_importer = mock_importlib.SucceedImporter() + sys.meta_path.append(succeed_importer) + sys.modules[self.parent_name] = self.parent_module + self.importer(self.full_child_name) + self.failUnless(hasattr(self.parent_module, self.child_name)) + self.failUnlessEqual(getattr(self.parent_module, self.child_name), + sys.modules[self.full_child_name]) + + def test_parent_not_imported(self): + # If a parent module is not imported yet, it should be imported. + # The attribute on the parent module for the child module should also + # be set. + delattr(self.parent_module, self.child_name) + succeed_importer = mock_importlib.SucceedImporter() + sys.meta_path.append(succeed_importer) + self.importer(self.full_child_name) + self.failUnless(self.parent_name in sys.modules) + self.failUnless(self.full_child_name in sys.modules) + self.failUnless(hasattr(sys.modules[self.parent_name], self.child_name)) + self.failUnlessEqual(getattr(sys.modules[self.parent_name], + self.child_name), + sys.modules[self.full_child_name]) + + def test_None_not_set_for_import_failure(self): + # If an import that is tried both relative and absolute fails there + # should not be an entry of None for the resolved relative name. + module_name = '' + pkg_name = '' + resolved_name = module_name + '.' + pkg_name + importing_globals = {'__name__':pkg_name, '__path__':['path']} + self.failUnlessRaises(ImportError, self.importer, module_name, + importing_globals, {}, [], -1) + self.failUnless(resolved_name not in sys.modules) + + def test_empty_string(self): + # An empty string should raise ValueError if level is not > 0. + for level in (-1, 0): + self.failUnlessRaises(ValueError, self.importer, '', {}, {}, level) + + def test_module_from_cache(self): + # If a value is in sys.modules it should be returned (no matter the + # object type), else return False. + value = "a 'module'" + mod_name = "module name" + sys.modules[mod_name] = value + returned = self.importer.module_from_cache(mod_name) + self.failUnless(returned is value) + returned = self.importer.module_from_cache(mod_name + 'asdfeddf') + self.failUnless(returned is False) + + def test_post_import(self): + # Post-import processing should do nothing but return the module + # unscathed. + module = "mod" + self.failUnless(self.importer.post_import(module) is module) + + +class ImportMetaPathTests(ImportHelper): + + """Test meta_path usage.""" + + def test_search_meta_path(self): + # Test search method of sys.meta_path. + # Should raise ImportError on error. + self.clear_sys_modules('sys') + self.failUnlessRaises(ImportError, self.importer._search_meta_path, + 'sys') + # Verify call order. + meta_path = (mock_importlib.PassImporter(), + mock_importlib.SucceedImporter()) + sys.meta_path = meta_path + loader = self.importer._search_meta_path('sys') + for entry in meta_path: + self.failUnlessEqual(entry.find_request, ('sys', None)) + self.failUnless(loader is meta_path[-1]) + + def test_extended_meta_path(self): + # Default meta_path entries set during initialization should be + # queried after sys.meta_path. + self.clear_sys_modules('sys') + pass_importer = mock_importlib.PassImporter() + sys.meta_path = [pass_importer] + succeed_importer = mock_importlib.SucceedImporter() + importer_ = importlib.Import(extended_meta_path=(succeed_importer,)) + module = importer_._import_module('sys') + for meta_importer in (pass_importer, succeed_importer): + self.failUnlessEqual(meta_importer.find_request, ('sys', None)) + self.failUnless(module in succeed_importer.loaded_modules) + + def test_parent_path(self): + # If a parent module has __path__ defined it should be passed as an + # argument during importing. + pkg_name = '' + module_name = '' + test_path = [''] + pkg_module = mock_importlib.MockModule(pkg_name) + pkg_module.__path__ = test_path + sys.modules[pkg_name] = pkg_module + succeed_importer = mock_importlib.SucceedImporter() + sys.meta_path.append(succeed_importer) + full_module_name = '.'.join([pkg_name, module_name]) + lookup_args = (full_module_name, test_path) + self.importer(full_module_name) + self.failUnless(full_module_name in sys.modules) + self.failUnlessEqual(succeed_importer.find_request, lookup_args) + self.failUnlessEqual(succeed_importer.load_request, lookup_args[0]) + + +class ImportStdPathTests(ImportHelper): + + """Test sys.path usage.""" + + def test_default_importer_factory(self): + # Make sure that the object passed in during initialization is used + # when sys.path_importer_cache has a value of None. + module_name = '' + self.clear_sys_modules(module_name) + succeed_importer = mock_importlib.SucceedImporter() + importer_ = importlib.Import(succeed_importer, tuple()) + sys.meta_path = [] + sys.path = [''] + sys.path_importer_cache[''] = None + module = importer_._import_module(module_name) + self.failUnlessEqual(succeed_importer.find_request, + (module_name, None)) + self.failUnless(module in succeed_importer.loaded_modules) + + def test_search_std_path(self): + # Test sys.path searching for a loader. + module_name = '' + self.clear_sys_modules(module_name) + importer_ = importlib.Import(extended_meta_path=()) + sys.path = [] + pass_importer = mock_importlib.PassImporter.set_on_sys_path() + succeed_importer = mock_importlib.SucceedImporter.set_on_sys_path() + sys_path = (pass_importer, succeed_importer) + module = importer_._import_module(module_name) + for entry in sys_path: + self.failUnlessEqual(entry.find_request, (module_name, None)) + self.failUnless(module in succeed_importer.loaded_modules) + + def test_importer_cache_preexisting(self): + # A pre-existing importer should be returned if it exists in + # sys.path_importer_cache. + module_name = '' + self.clear_sys_modules(module_name) + sys.path = [] + succeed_importer = mock_importlib.SucceedImporter.set_on_sys_path() + loader = self.importer._search_std_path(module_name) + self.failUnless(loader is succeed_importer) + + def test_importer_cache_from_path_hooks(self): + # If an entry does not exist for a sys.path entry in the importer cache + # then sys.path_hooks should be searched and if one is found then cache + # it. + module_name = '' + self.clear_sys_modules(module_name) + path_entry = '' + succeed_importer = mock_importlib.SucceedImporter() + sys.path = [path_entry] + sys.path_importer_cache.clear() + sys.path_hooks = [succeed_importer] + loader = self.importer._search_std_path(module_name) + self.failUnless(loader is succeed_importer) + self.failUnless(sys.path_importer_cache[path_entry] is + succeed_importer) + + def test_importer_cache_no_path_hooks(self): + # If an entry does not exist for a sys.path entry in the importer cache + # and sys.path_hooks has nothing for the entry, None should be set. + module_name = '' + self.clear_sys_modules(module_name) + path_entry = '' + sys.path = [path_entry] + sys.path_hooks = [] + sys.path_importer_cache.clear() + self.failUnlessRaises(ImportError, self.importer._search_std_path, + module_name) + self.failUnless(sys.path_importer_cache[path_entry] is None) + + def test_searching_package_path(self): + # If importing in a package then search path is the package's __path__ + # value; otherwise it is sys.path. + succeed_importer = mock_importlib.SucceedImporter() + sys.path_hooks.append(succeed_importer) + search_paths = ['test path'] + module_name = '.' + loader = self.importer._search_std_path(module_name, search_paths) + self.failUnless(loader is succeed_importer) + self.failUnless(search_paths[0] in succeed_importer.path_entries) + self.failUnlessEqual(succeed_importer.find_request, + (module_name, None)) + self.failUnless(search_paths[0] in sys.path_importer_cache) + self.clear_sys_modules(module_name) + del sys.path_importer_cache[search_paths[0]] + succeed_importer.path_entries = [] + self.importer._import_module(module_name, search_paths) + self.failUnless(search_paths[0] in succeed_importer.path_entries) + + +def test_main(): + run_unittest(ImportNameResolutionTests, ImportFromListTests, + ImportMiscTests, ImportMetaPathTests, ImportStdPathTests) + + + +if __name__ == '__main__': + test_main() Added: sandbox/trunk/import_in_py/Py3K/tests/test_regression.py ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/tests/test_regression.py Mon Sep 17 00:20:58 2007 @@ -0,0 +1,251 @@ +import importlib + +from tests import mock_importlib +from tests.py_help import TestPyPycPackages +from importlib import _r_long + +import imp +import marshal +import os +import io +import sys +from test.test_support import run_unittest + + +class IntegrationTests(TestPyPycPackages): + + """Tests that verify the default semantics are what is expected. + + Tests should verify that: + * The proper module was returned. + * All expected modules were added to sys.modules. + * All modules imported by the call have the proper attributes. + + There are currently no tests for the import lock. + + Need to test (both relative and absolute imports as needed): + * import module + * import package + * import package.module + * from module import attribute + * from package import module + * from package import attribute + * from package.module import attribute + * from package import * + + With __all__ + + """ + + def setUp(self): + TestPyPycPackages.setUp(self, False) + self.import_ = importlib.Import() + self.cached_modules = [] + if self.module_name in sys.modules: + del sys.modules[self.module_name] + if self.pkg_name in sys.modules: + del sys.modules[self.pkg_name] + if self.pkg_module_name in sys.modules: + del sys.modules[self.pkg_module_name] + + def tearDown(self): + TestPyPycPackages.tearDown(self) + for module_name, module in self.cached_modules: + sys.modules[module_name] = module + + def clear_sys_modules(self, *modules): + """Remove specified modules from sys.modules for a test and put back + during teardown.""" + for module_name in modules: + try: + self.cached_modules.append((module_name, + sys.modules[module_name])) + del sys.modules[module_name] + except KeyError: + pass + + def test_builtin(self): + # Test importing a built-in module. + # ``import sys`` + self.clear_sys_modules('sys') + module = self.import_('sys') + self.failUnlessEqual(module.__name__, 'sys') + # Only test for attributes that are not set during interpreter + # creation! + self.failUnless(hasattr(module, 'exc_info')) + self.failUnless(hasattr(module, 'version')) + + def test_frozen(self): + # Importing a frozen module should work. + # ``import __hello__`` + self.clear_sys_modules('__hello__') + faked_stdout = io.StringIO() + sys.stdout = faked_stdout + try: + module = self.import_('__hello__') + self.failUnlessEqual(module.__name__, '__hello__') + self.failUnless('frozen' in module.__file__) + finally: + sys.stdout = sys.__stdout__ + + def test_extension(self): + # Should be able to import extension modules. + # ``import time`` + module = self.import_('time') + self.failUnlessEqual(module.__name__, 'time') + self.failUnless(hasattr(module, 'time')) + + def test_pyc_w_py(self): + # Should be able to import a .pyc file when a .py is also present. + # ``import pyc`` with a corresponding .py . + module = self.import_(self.module_name) + self.verify_module(module, self.pyc_path) + + def test_pyc_wo_py(self): + # Importing just a .pyc file (w/ no .py) should be okay. + # ``import pyc`` from a .pyc . + os.remove(self.py_path) + assert os.path.exists(self.pyc_path) + module = self.import_(self.module_name) + self.verify_module(module, self.pyc_path) + + def test_sys_modules(self): + # Should be able to pull from sys.modules even if a file does not exist + # for the module. + # ``import module`` from sys.modules. + test_module_name = '<' + self.module_name + '>' + test_module = mock_importlib.MockModule(test_module_name) + sys.modules[test_module_name] = test_module + try: + module = self.import_(test_module_name) + self.failUnless(module is test_module) + finally: + del sys.modules[test_module_name] + + def test_py_creating_pyc(self): + # Importing a .py file should work and generate a .pyc file. + # ``import py`` creating a .pyc . + os.remove(self.pyc_path) + module = self.import_(self.module_name) + self.verify_module(module) + self.failUnless(os.path.exists(self.pyc_path)) + with open(self.pyc_path, 'rb') as pyc_file: + data = pyc_file.read() + self.failUnlessEqual(data[:4], imp.get_magic()) + py_mod = int(os.stat(self.py_path).st_mtime) + # XXX Using importer's _r_long. + pyc_mod = _r_long(data[4:8]) + self.failUnlessEqual(py_mod, pyc_mod) + code = marshal.loads(data[8:]) + module = mock_importlib.MockModule(self.module_name) + exec(code, module.__dict__) + self.verify_module(module) + + def test_top_level_package(self): + # Should be able to import a top-level package. + # ``import package`` + module = self.import_(self.pkg_name) + self.verify_package(module) + + def test_package_module(self): + # A module within a top-level package should work with the package not + # already imported. + # ``import package.module`` + assert '.' in self.pkg_module_name + module = self.import_(self.pkg_module_name) + self.verify_package(module, self.pkg_module_name) + + def test_sub_package(self): + # A package within a package should work. + # ``import package.subpackage`` + module = self.import_(self.sub_pkg_name) + self.verify_package(module, self.sub_pkg_name) + + def test_sub_package_module(self): + # A module contained within a sub-package should work. + # ``import package.subpackage.module`` + module = self.import_(self.sub_pkg_module_name) + self.verify_package(module, self.sub_pkg_module_name) + + def test_classic_relative_import_in_package_init(self): + # Importing within a package's __init__ file using a relative name + # should work properly. + # ``import module`` for 'package' where 'module' is 'package.module'. + package_globals = {'__name__':self.pkg_name, '__path__':['some_path']} + module = self.import_(self.module_name, package_globals, level=-1) + self.verify_package(module, self.pkg_module_name) + + def test_classic_relative_import_in_module(self): + # Importing using a relative name in a module in a package should work. + # ``import module`` for 'package.some_module' where 'module' is + # 'package.module'. + module_globals = {'__name__':self.pkg_name + '.' + 'another_module'} + module = self.import_(self.module_name, module_globals, level=-1) + self.verify_package(module, self.pkg_module_name) + + def test_absolute_name_in_classic_relative_context(self): + # Importing a module that happens to be ambiguous in terms of being + # relative or absolute, but only exists in an absolute name context, + # should work. It should also lead to a value for None in sys.modules + # for the resolved relative name. + # ``import module`` for 'package' where 'module' is 'module'. + package_module_globals = {'__name__':self.pkg_module_name} + module = self.import_(self.top_level_module_name, + package_module_globals, level=-1) + resolved_name = self.pkg_name + '.' + self.top_level_module_name + self.verify_package(module) + self.failUnlessEqual(module.__name__, self.top_level_module_name) + self.failUnless(sys.modules[resolved_name] is None) + + def test_relative_import_in_package_init(self): + # Importing a module with a relative name in a package's __init__ file + # should work. + # ``from . import module`` for 'package'. + caller_globals = {'__name__':self.pkg_name, '__path__':[self.pkg_path]} + module = self.import_('', caller_globals, fromlist=[self.module_name], + level=1) + self.verify_package(module, self.pkg_name) + + def test_relative_import_in_package(self): + # Importing a module with a relative name in another module should + # work. + # ``from . import module`` for 'package.module'. + caller_globals = {'__name__':self.pkg_module_name} + module = self.import_('', caller_globals, fromlist=[self.module_name], + level=1) + self.verify_package(module, self.pkg_name) + + def test_relative_import_in_subpackages(self): + # ``from .. import module`` in 'package.subpackage'. + caller_globals = {'__name__':self.sub_pkg_name, + '__path__':[self.sub_pkg_path]} + module = self.import_('', caller_globals, fromlist=[self.module_name], + level=2) + self.verify_package(module, self.pkg_name) + + def test_relative_import_of_package(self): + # ``from ..subpackage import module`` in 'package.subpackage'. + # XXX + caller_globals = {'__name__':self.sub_pkg_name, + '__path__':[self.sub_pkg_path]} + module = self.import_(self.sub_pkg_tail_name, caller_globals, + fromlist=[self.module_name], level=2) + self.verify_package(module, self.sub_pkg_name) + + def test_relative_import_return(self): + # When importing from a relative name, the module up to the first dot + # of that relative name (made absolute) should be returned. + # ``import subpackage.module`` for 'package.module'. + module_globals = {'__name__':self.pkg_module_name} + relative_name = self.sub_pkg_tail_name + '.' + self.module_name + module = self.import_(relative_name, module_globals) + self.verify_package(module, self.sub_pkg_name) + + +def test_main(): + run_unittest(IntegrationTests) + + + +if __name__ == '__main__': + test_main() + Deleted: /sandbox/trunk/import_in_py/Py3K_TODO ============================================================================== --- /sandbox/trunk/import_in_py/Py3K_TODO Mon Sep 17 00:20:58 2007 +++ (empty file) @@ -1,14 +0,0 @@ -This doc lists what is left to do before importlib can become the -"One True Import". The items in the list must be done in order! - -- 2.6-specific - * Rewrite (as a whitebox re-engineering job) zipimport. - + Pass 2.6 unit tests for the module. - * Put into 2.6 stdlib. -- Py3K-specific - * Port to Py3K. - + Consider it a fork of code as semantics can change compared to 2.6 code. - * Bootstrap in as default import implementation. - * Fix C API to call importlib. - * Remove C implementation. - * Tune performance. From python-checkins at python.org Mon Sep 17 00:26:29 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 00:26:29 +0200 (CEST) Subject: [Python-checkins] r58167 - sandbox/trunk/import_in_py/tests/test_fs_importer.py Message-ID: <20070916222629.05DF01E4002@bag.python.org> Author: brett.cannon Date: Mon Sep 17 00:26:28 2007 New Revision: 58167 Modified: sandbox/trunk/import_in_py/tests/test_fs_importer.py Log: Use floor division. Modified: sandbox/trunk/import_in_py/tests/test_fs_importer.py ============================================================================== --- sandbox/trunk/import_in_py/tests/test_fs_importer.py (original) +++ sandbox/trunk/import_in_py/tests/test_fs_importer.py Mon Sep 17 00:26:28 2007 @@ -136,8 +136,8 @@ # Case-sensitivity should always matter as long as PYTHONCASEOK is not # set. name_len = len(self.top_level_module_name) - bad_case_name = (self.top_level_module_name[:name_len/2].upper() + - self.top_level_module_name[name_len/2:].lower()) + bad_case_name = (self.top_level_module_name[:name_len//2].upper() + + self.top_level_module_name[name_len//2:].lower()) env_guard = test_support.EnvironmentVarGuard() env_guard.unset('PYTHONCASEOK') with env_guard: From python-checkins at python.org Mon Sep 17 00:28:09 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 00:28:09 +0200 (CEST) Subject: [Python-checkins] r58168 - in sandbox/trunk/import_in_py: Py3K/tests/test_fs_importer.py tests/test_fs_importer.py Message-ID: <20070916222809.5E9DA1E400E@bag.python.org> Author: brett.cannon Date: Mon Sep 17 00:28:08 2007 New Revision: 58168 Modified: sandbox/trunk/import_in_py/Py3K/tests/test_fs_importer.py sandbox/trunk/import_in_py/tests/test_fs_importer.py Log: Fix another place to use floor division. Modified: sandbox/trunk/import_in_py/Py3K/tests/test_fs_importer.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/tests/test_fs_importer.py (original) +++ sandbox/trunk/import_in_py/Py3K/tests/test_fs_importer.py Mon Sep 17 00:28:08 2007 @@ -136,8 +136,8 @@ # Case-sensitivity should always matter as long as PYTHONCASEOK is not # set. name_len = len(self.top_level_module_name) - bad_case_name = (self.top_level_module_name[:name_len/2].upper() + - self.top_level_module_name[name_len/2:].lower()) + bad_case_name = (self.top_level_module_name[:name_len//2].upper() + + self.top_level_module_name[name_len//2:].lower()) env_guard = test_support.EnvironmentVarGuard() env_guard.unset('PYTHONCASEOK') with env_guard: @@ -155,8 +155,8 @@ # Case-sensitivity should always matter as long as PYTHONCASEOK is not # set. name_len = len(self.pkg_name) - bad_case_name = (self.pkg_name[:name_len/2].upper() + - self.pkg_name[name_len/2:].lower()) + bad_case_name = (self.pkg_name[:name_len//2].upper() + + self.pkg_name[name_len//2:].lower()) bad_init_name = os.path.join(self.directory, self.pkg_name, '__INit__.py') env_guard = test_support.EnvironmentVarGuard() Modified: sandbox/trunk/import_in_py/tests/test_fs_importer.py ============================================================================== --- sandbox/trunk/import_in_py/tests/test_fs_importer.py (original) +++ sandbox/trunk/import_in_py/tests/test_fs_importer.py Mon Sep 17 00:28:08 2007 @@ -155,8 +155,8 @@ # Case-sensitivity should always matter as long as PYTHONCASEOK is not # set. name_len = len(self.pkg_name) - bad_case_name = (self.pkg_name[:name_len/2].upper() + - self.pkg_name[name_len/2:].lower()) + bad_case_name = (self.pkg_name[:name_len//2].upper() + + self.pkg_name[name_len//2:].lower()) bad_init_name = os.path.join(self.directory, self.pkg_name, '__INit__.py') env_guard = test_support.EnvironmentVarGuard() From python-checkins at python.org Mon Sep 17 00:33:44 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 00:33:44 +0200 (CEST) Subject: [Python-checkins] r58169 - sandbox/trunk/import_in_py/importlib.py Message-ID: <20070916223345.B29E81E400C@bag.python.org> Author: brett.cannon Date: Mon Sep 17 00:33:44 2007 New Revision: 58169 Modified: sandbox/trunk/import_in_py/importlib.py Log: Rename a local variable to not shadow the bytes type in Py3K. Modified: sandbox/trunk/import_in_py/importlib.py ============================================================================== --- sandbox/trunk/import_in_py/importlib.py (original) +++ sandbox/trunk/import_in_py/importlib.py Mon Sep 17 00:33:44 2007 @@ -53,24 +53,24 @@ """ x = int(x) - bytes = [] - bytes.append(x & 0xFF) - bytes.append((x >> 8) & 0xFF) - bytes.append((x >> 16) & 0xFF) - bytes.append((x >> 24) & 0xFF) - return ''.join(chr(x) for x in bytes) + int_bytes = [] + int_bytes.append(x & 0xFF) + int_bytes.append((x >> 8) & 0xFF) + int_bytes.append((x >> 16) & 0xFF) + int_bytes.append((x >> 24) & 0xFF) + return ''.join(chr(x) for x in int_bytes) -def _r_long(bytes): +def _r_long(int_bytes): """Convert 4 bytes in little-endian to an integer. XXX Temporary until marshal's long function are exposed. """ - x = ord(bytes[0]) - x |= ord(bytes[1]) << 8 - x |= ord(bytes[2]) << 16 - x |= ord(bytes[3]) << 24 + x = ord(int_bytes[0]) + x |= ord(int_bytes[1]) << 8 + x |= ord(int_bytes[2]) << 16 + x |= ord(int_bytes[3]) << 24 return x From python-checkins at python.org Mon Sep 17 00:35:09 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 00:35:09 +0200 (CEST) Subject: [Python-checkins] r58170 - sandbox/trunk/import_in_py/Py3K/importlib.py Message-ID: <20070916223509.388A21E401A@bag.python.org> Author: brett.cannon Date: Mon Sep 17 00:35:08 2007 New Revision: 58170 Modified: sandbox/trunk/import_in_py/Py3K/importlib.py Log: Propagate last checkin into Py3K work. Modified: sandbox/trunk/import_in_py/Py3K/importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/importlib.py Mon Sep 17 00:35:08 2007 @@ -53,24 +53,24 @@ """ x = int(x) - bytes = [] - bytes.append(x & 0xFF) - bytes.append((x >> 8) & 0xFF) - bytes.append((x >> 16) & 0xFF) - bytes.append((x >> 24) & 0xFF) - return ''.join(chr(x) for x in bytes) + int_bytes = [] + int_bytes.append(x & 0xFF) + int_bytes.append((x >> 8) & 0xFF) + int_bytes.append((x >> 16) & 0xFF) + int_bytes.append((x >> 24) & 0xFF) + return ''.join(chr(x) for x in int_bytes) -def _r_long(bytes): +def _r_long(int_bytes): """Convert 4 bytes in little-endian to an integer. XXX Temporary until marshal's long function are exposed. """ - x = ord(bytes[0]) - x |= ord(bytes[1]) << 8 - x |= ord(bytes[2]) << 16 - x |= ord(bytes[3]) << 24 + x = ord(int_bytes[0]) + x |= ord(int_bytes[1]) << 8 + x |= ord(int_bytes[2]) << 16 + x |= ord(int_bytes[3]) << 24 return x From buildbot at python.org Mon Sep 17 00:49:27 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 16 Sep 2007 22:49:27 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 trunk Message-ID: <20070916224927.A95001E4002@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%20trunk/builds/50 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen,facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_ssl ====================================================================== ERROR: testAsyncore (test.test_ssl.ConnectedTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_ssl.py", line 828, in testAsyncore "Couldn't fetch data from HTTPS server") TestFailed: Couldn't fetch data from HTTPS server sincerely, -The Buildbot From buildbot at python.org Mon Sep 17 00:51:32 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 16 Sep 2007 22:51:32 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20070916225132.A36AD1E4019@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/249 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen,facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_ssl ====================================================================== ERROR: testAsyncore (test.test_ssl.ConnectedTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_ssl.py", line 828, in testAsyncore "Couldn't fetch data from HTTPS server") TestFailed: Couldn't fetch data from HTTPS server sincerely, -The Buildbot From buildbot at python.org Mon Sep 17 00:54:21 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 16 Sep 2007 22:54:21 +0000 Subject: [Python-checkins] buildbot failure in x86 XP trunk Message-ID: <20070916225421.C6C891E4002@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/650 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: mcintyre-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: bill.janssen,facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_ssl ====================================================================== ERROR: testAsyncore (test.test_ssl.ConnectedTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_ssl.py", line 828, in testAsyncore "Couldn't fetch data from HTTPS server") TestFailed: Couldn't fetch data from HTTPS server sincerely, -The Buildbot From python-checkins at python.org Mon Sep 17 01:12:49 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 01:12:49 +0200 (CEST) Subject: [Python-checkins] r58171 - sandbox/trunk/import_in_py/Py3K/importlib.py Message-ID: <20070916231249.58E3B1E4002@bag.python.org> Author: brett.cannon Date: Mon Sep 17 01:12:49 2007 New Revision: 58171 Modified: sandbox/trunk/import_in_py/Py3K/importlib.py Log: Update _r_long and _w_long to work with bytes instead of strings. Modified: sandbox/trunk/import_in_py/Py3K/importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/importlib.py Mon Sep 17 01:12:49 2007 @@ -53,12 +53,12 @@ """ x = int(x) - int_bytes = [] + int_bytes = bytes() int_bytes.append(x & 0xFF) int_bytes.append((x >> 8) & 0xFF) int_bytes.append((x >> 16) & 0xFF) int_bytes.append((x >> 24) & 0xFF) - return ''.join(chr(x) for x in int_bytes) + return int_bytes def _r_long(int_bytes): @@ -67,10 +67,10 @@ XXX Temporary until marshal's long function are exposed. """ - x = ord(int_bytes[0]) - x |= ord(int_bytes[1]) << 8 - x |= ord(int_bytes[2]) << 16 - x |= ord(int_bytes[3]) << 24 + x = int_bytes[0] + x |= int_bytes[1] << 8 + x |= int_bytes[2] << 16 + x |= int_bytes[3] << 24 return x From python-checkins at python.org Mon Sep 17 01:13:16 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 01:13:16 +0200 (CEST) Subject: [Python-checkins] r58172 - sandbox/trunk/import_in_py/Py3K/tests/test_fs_loader.py Message-ID: <20070916231316.E9B551E4002@bag.python.org> Author: brett.cannon Date: Mon Sep 17 01:13:16 2007 New Revision: 58172 Modified: sandbox/trunk/import_in_py/Py3K/tests/test_fs_loader.py Log: Move over to using bytes literals. Modified: sandbox/trunk/import_in_py/Py3K/tests/test_fs_loader.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/tests/test_fs_loader.py (original) +++ sandbox/trunk/import_in_py/Py3K/tests/test_fs_loader.py Mon Sep 17 01:13:16 2007 @@ -278,9 +278,9 @@ def change_magic(): with open(self.pyc_path, 'rb') as bytecode_file: data = bytecode_file.read() - assert imp.get_magic() != '0' * 4 + assert imp.get_magic() != b'0000' with open(self.pyc_path, 'wb') as bytecode_file: - bytecode_file.write('0' * 4) + bytecode_file.write(b'0000') bytecode_file.write(data[4:]) # With source. change_magic() @@ -379,8 +379,8 @@ with open(self.pyc_path, 'rb') as bytecode_file: data = bytecode_file.read() with open(self.pyc_path, 'wb') as bytecode_file: - bytecode_file.write('0' * 4) - bytecode_file.write('0' * 4) + bytecode_file.write(b'0000') + bytecode_file.write(b'0000') bytecode_file.write(data[8:]) loader = importlib._PyFileLoader(self.module_name, self.pyc_path, False) From python-checkins at python.org Mon Sep 17 01:16:46 2007 From: python-checkins at python.org (bill.janssen) Date: Mon, 17 Sep 2007 01:16:46 +0200 (CEST) Subject: [Python-checkins] r58173 - python/trunk/Lib/test/test_ssl.py Message-ID: <20070916231646.5D4561E4003@bag.python.org> Author: bill.janssen Date: Mon Sep 17 01:16:46 2007 New Revision: 58173 Modified: python/trunk/Lib/test/test_ssl.py Log: use binary mode when reading files for testAsyncore to make Windows happy Modified: python/trunk/Lib/test/test_ssl.py ============================================================================== --- python/trunk/Lib/test/test_ssl.py (original) +++ python/trunk/Lib/test/test_ssl.py Mon Sep 17 01:16:46 2007 @@ -803,7 +803,7 @@ try: if test_support.verbose: sys.stdout.write('\n') - d1 = open(CERTFILE, 'r').read() + d1 = open(CERTFILE, 'rb').read() d2 = '' # now fetch the same data from the HTTPS server url = 'https://127.0.0.1:%d/%s' % ( From python-checkins at python.org Mon Sep 17 01:17:17 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 01:17:17 +0200 (CEST) Subject: [Python-checkins] r58174 - in sandbox/trunk/import_in_py: Py3K/Py3K_TODO TODO Message-ID: <20070916231717.C5FC51E4003@bag.python.org> Author: brett.cannon Date: Mon Sep 17 01:17:17 2007 New Revision: 58174 Added: sandbox/trunk/import_in_py/TODO (contents, props changed) Modified: sandbox/trunk/import_in_py/Py3K/Py3K_TODO Log: Update TODOs based on the fact that importlib has now been converted to Py3K. Modified: sandbox/trunk/import_in_py/Py3K/Py3K_TODO ============================================================================== --- sandbox/trunk/import_in_py/Py3K/Py3K_TODO (original) +++ sandbox/trunk/import_in_py/Py3K/Py3K_TODO Mon Sep 17 01:17:17 2007 @@ -1,15 +1,7 @@ This doc lists what is left to do before importlib can become the "One True Import". The items in the list must be done in order! -- 2.6-specific - * Rewrite (as a whitebox re-engineering job) zipimport. - + Pass 2.6 unit tests for the module. - * Put into 2.6 stdlib. -- Py3K-specific - * Port to Py3K. - + Write script that will copy certain files (i.e., all files that have - no Py3K-specific modifications beyond 2to3) and pass through 2to3. - * Bootstrap in as default import implementation. - * Fix C API to call importlib. - * Remove C implementation. - * Tune performance. +* Bootstrap in as default import implementation. +* Fix C API to call importlib. +* Remove C implementation. +* Tune performance. Added: sandbox/trunk/import_in_py/TODO ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/TODO Mon Sep 17 01:17:17 2007 @@ -0,0 +1,2 @@ +* Get zipimport passing 2.6's unit tests. +* Put importlib into 2.6 stdlib. From python-checkins at python.org Mon Sep 17 02:55:01 2007 From: python-checkins at python.org (raymond.hettinger) Date: Mon, 17 Sep 2007 02:55:01 +0200 (CEST) Subject: [Python-checkins] r58175 - in python/trunk: Doc/library/collections.rst Lib/collections.py Lib/test/test_collections.py Message-ID: <20070917005501.28DA31E4003@bag.python.org> Author: raymond.hettinger Date: Mon Sep 17 02:55:00 2007 New Revision: 58175 Modified: python/trunk/Doc/library/collections.rst python/trunk/Lib/collections.py python/trunk/Lib/test/test_collections.py Log: Sync-up named tuples with the latest version of the ASPN recipe. Allows optional commas in the field-name spec (help when named tuples are used in conjuction with sql queries). Adds the __fields__ attribute for introspection and to support conversion to dictionary form. Adds a __replace__() method similar to str.replace() but using a named field as a target. Clean-up spelling and presentation in doc-strings. Modified: python/trunk/Doc/library/collections.rst ============================================================================== --- python/trunk/Doc/library/collections.rst (original) +++ python/trunk/Doc/library/collections.rst Mon Sep 17 02:55:00 2007 @@ -374,8 +374,8 @@ .. versionadded:: 2.6 - The *fieldnames* are specified in a single string and are separated by spaces. - Any valid Python identifier may be used for a field name. + The *fieldnames* are specified in a single string and are separated by spaces + and/or commas. Any valid Python identifier may be used for a field name. Example:: @@ -395,7 +395,7 @@ The use cases are the same as those for tuples. The named factories assign meaning to each tuple position and allow for more readable, self-documenting - code. Named tuples can also be used to assign field names to tuples returned + code. Named tuples can also be used to assign field names to tuples returned by the :mod:`csv` or :mod:`sqlite3` modules. For example:: from itertools import starmap @@ -412,6 +412,38 @@ >>> print Color(*m.popitem()) Color(name='blue', code=3) +In addition to the methods inherited from tuples, named tuples support +an additonal method and an informational read-only attribute. + +.. method:: somenamedtuple.replace(field, value) + + Return a new instance of the named tuple with *field* replaced with *value*. + + Examples:: + + >>> p = Point(x=11, y=22) + >>> p.__replace__('x', 33) + Point(x=33, y=22) + + >>> for recordnum, record in inventory: + ... inventory[recordnum] = record.replace('total', record.price * record.quantity) + + +.. attribute:: somenamedtuple.__fields__ + + Return a tuple of strings listing the field names. This is useful for introspection, + for converting a named tuple instance to a dictionary, and for creating new named tuple + types from existing types. + + Examples:: + + >>> dict(zip(p.__fields__, p)) # make a dictionary from a named tuple instance + {'y': 20, 'x': 10} + + >>> ColorPoint = NamedTuple('ColorPoint', ' '.join(Point.__fields__) + ' color') + >>> ColorPoint(10, 20, 'red') + ColorPoint(x=10, y=20, color='red') + .. rubric:: Footnotes .. [#] For information on the star-operator see Modified: python/trunk/Lib/collections.py ============================================================================== --- python/trunk/Lib/collections.py (original) +++ python/trunk/Lib/collections.py Mon Sep 17 02:55:00 2007 @@ -8,33 +8,42 @@ """Returns a new subclass of tuple with named fields. >>> Point = NamedTuple('Point', 'x y') - >>> Point.__doc__ # docstring for the new class + >>> Point.__doc__ # docstring for the new class 'Point(x, y)' - >>> p = Point(11, y=22) # instantiate with positional args or keywords - >>> p[0] + p[1] # works just like the tuple (11, 22) + >>> p = Point(11, y=22) # instantiate with positional args or keywords + >>> p[0] + p[1] # works just like the tuple (11, 22) 33 - >>> x, y = p # unpacks just like a tuple + >>> x, y = p # unpacks just like a tuple >>> x, y (11, 22) - >>> p.x + p.y # fields also accessable by name + >>> p.x + p.y # fields also accessable by name 33 - >>> p # readable __repr__ with name=value style + >>> p # readable __repr__ with name=value style Point(x=11, y=22) + >>> p.__replace__('x', 100) # __replace__() is like str.replace() but targets a named field + Point(x=100, y=22) + >>> d = dict(zip(p.__fields__, p)) # use __fields__ to make a dictionary + >>> d['x'] + 11 """ - field_names = s.split() - if not ''.join([typename] + field_names).replace('_', '').isalnum(): + field_names = tuple(s.replace(',', ' ').split()) # names separated by spaces and/or commas + if not ''.join((typename,) + field_names).replace('_', '').isalnum(): raise ValueError('Type names and field names can only contain alphanumeric characters and underscores') argtxt = ', '.join(field_names) reprtxt = ', '.join('%s=%%r' % name for name in field_names) template = '''class %(typename)s(tuple): '%(typename)s(%(argtxt)s)' __slots__ = () + __fields__ = %(field_names)r def __new__(cls, %(argtxt)s): return tuple.__new__(cls, (%(argtxt)s,)) def __repr__(self): return '%(typename)s(%(reprtxt)s)' %% self + def __replace__(self, field, value): + 'Return a new %(typename)s object replacing one field with a new value' + return %(typename)s(**dict(zip(%(field_names)r, self) + [(field, value)])) ''' % locals() for i, name in enumerate(field_names): template += '\n %s = property(itemgetter(%d))\n' % (name, i) @@ -51,9 +60,9 @@ if __name__ == '__main__': - # verify that instances are pickable + # verify that instances can be pickled from cPickle import loads, dumps - Point = NamedTuple('Point', 'x y') + Point = NamedTuple('Point', 'x, y') p = Point(x=10, y=20) assert p == loads(dumps(p)) Modified: python/trunk/Lib/test/test_collections.py ============================================================================== --- python/trunk/Lib/test/test_collections.py (original) +++ python/trunk/Lib/test/test_collections.py Mon Sep 17 02:55:00 2007 @@ -30,6 +30,13 @@ self.assertEqual(repr(p), 'Point(x=11, y=22)') self.assert_('__dict__' not in dir(p)) # verify instance has no dict self.assert_('__weakref__' not in dir(p)) + self.assertEqual(p.__fields__, ('x', 'y')) # test __fields__ attribute + self.assertEqual(p.__replace__('x', 1), (1, 22)) # test __replace__ method + + # verify that field string can have commas + Point = NamedTuple('Point', 'x, y') + p = Point(x=11, y=22) + self.assertEqual(repr(p), 'Point(x=11, y=22)') def test_tupleness(self): Point = NamedTuple('Point', 'x y') From python-checkins at python.org Mon Sep 17 05:28:35 2007 From: python-checkins at python.org (brett.cannon) Date: Mon, 17 Sep 2007 05:28:35 +0200 (CEST) Subject: [Python-checkins] r58176 - in python/trunk: Misc/NEWS Modules/_collectionsmodule.c Objects/boolobject.c Objects/complexobject.c Objects/dictobject.c Objects/fileobject.c Objects/floatobject.c Objects/intobject.c Objects/listobject.c Objects/object.c Objects/setobject.c Objects/stringobject.c Objects/tupleobject.c Message-ID: <20070917032835.1ACAB1E4002@bag.python.org> Author: brett.cannon Date: Mon Sep 17 05:28:34 2007 New Revision: 58176 Modified: python/trunk/Misc/NEWS python/trunk/Modules/_collectionsmodule.c python/trunk/Objects/boolobject.c python/trunk/Objects/complexobject.c python/trunk/Objects/dictobject.c python/trunk/Objects/fileobject.c python/trunk/Objects/floatobject.c python/trunk/Objects/intobject.c python/trunk/Objects/listobject.c python/trunk/Objects/object.c python/trunk/Objects/setobject.c python/trunk/Objects/stringobject.c python/trunk/Objects/tupleobject.c Log: Add a bunch of GIL release/acquire points in tp_print implementations and for PyObject_Print(). Closes issue #1164. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Sep 17 05:28:34 2007 @@ -12,6 +12,11 @@ Core and builtins ----------------- +- Issue #1164: It was possible to trigger deadlock when using the 'print' + statement to write to a file since the GIL was not released as needed. Now + PyObject_Print() does the right thing along with various tp_print + implementations of the built-in types and those in the collections module. + - Issue #1147: Exceptions were directly allowing string exceptions in their throw() method even though string exceptions no longer allowed. Modified: python/trunk/Modules/_collectionsmodule.c ============================================================================== --- python/trunk/Modules/_collectionsmodule.c (original) +++ python/trunk/Modules/_collectionsmodule.c Mon Sep 17 05:28:34 2007 @@ -652,7 +652,9 @@ if (i != 0) { if (i < 0) return i; + Py_BEGIN_ALLOW_THREADS fputs("[...]", fp); + Py_END_ALLOW_THREADS return 0; } @@ -660,9 +662,13 @@ if (it == NULL) return -1; + Py_BEGIN_ALLOW_THREADS fputs("deque([", fp); + Py_END_ALLOW_THREADS while ((item = PyIter_Next(it)) != NULL) { + Py_BEGIN_ALLOW_THREADS fputs(emit, fp); + Py_END_ALLOW_THREADS emit = separator; if (PyObject_Print(item, fp, 0) != 0) { Py_DECREF(item); @@ -676,7 +682,9 @@ Py_DECREF(it); if (PyErr_Occurred()) return -1; + Py_BEGIN_ALLOW_THREADS fputs("])", fp); + Py_END_ALLOW_THREADS return 0; } @@ -1190,15 +1198,24 @@ defdict_print(defdictobject *dd, FILE *fp, int flags) { int sts; + Py_BEGIN_ALLOW_THREADS fprintf(fp, "defaultdict("); - if (dd->default_factory == NULL) + Py_END_ALLOW_THREADS + if (dd->default_factory == NULL) { + Py_BEGIN_ALLOW_THREADS fprintf(fp, "None"); + Py_END_ALLOW_THREADS + } else { PyObject_Print(dd->default_factory, fp, 0); } + Py_BEGIN_ALLOW_THREADS fprintf(fp, ", "); + Py_END_ALLOW_THREADS sts = PyDict_Type.tp_print((PyObject *)dd, fp, 0); + Py_BEGIN_ALLOW_THREADS fprintf(fp, ")"); + Py_END_ALLOW_THREADS return sts; } Modified: python/trunk/Objects/boolobject.c ============================================================================== --- python/trunk/Objects/boolobject.c (original) +++ python/trunk/Objects/boolobject.c Mon Sep 17 05:28:34 2007 @@ -7,7 +7,9 @@ static int bool_print(PyBoolObject *self, FILE *fp, int flags) { + Py_BEGIN_ALLOW_THREADS fputs(self->ob_ival == 0 ? "False" : "True", fp); + Py_END_ALLOW_THREADS return 0; } Modified: python/trunk/Objects/complexobject.c ============================================================================== --- python/trunk/Objects/complexobject.c (original) +++ python/trunk/Objects/complexobject.c Mon Sep 17 05:28:34 2007 @@ -341,7 +341,9 @@ char buf[100]; complex_to_buf(buf, sizeof(buf), v, (flags & Py_PRINT_RAW) ? PREC_STR : PREC_REPR); + Py_BEGIN_ALLOW_THREADS fputs(buf, fp); + Py_END_ALLOW_THREADS return 0; } Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Mon Sep 17 05:28:34 2007 @@ -867,11 +867,15 @@ if (status != 0) { if (status < 0) return status; + Py_BEGIN_ALLOW_THREADS fprintf(fp, "{...}"); + Py_END_ALLOW_THREADS return 0; } + Py_BEGIN_ALLOW_THREADS fprintf(fp, "{"); + Py_END_ALLOW_THREADS any = 0; for (i = 0; i <= mp->ma_mask; i++) { dictentry *ep = mp->ma_table + i; @@ -880,14 +884,19 @@ /* Prevent PyObject_Repr from deleting value during key format */ Py_INCREF(pvalue); - if (any++ > 0) + if (any++ > 0) { + Py_BEGIN_ALLOW_THREADS fprintf(fp, ", "); + Py_END_ALLOW_THREADS + } if (PyObject_Print((PyObject *)ep->me_key, fp, 0)!=0) { Py_DECREF(pvalue); Py_ReprLeave((PyObject*)mp); return -1; } + Py_BEGIN_ALLOW_THREADS fprintf(fp, ": "); + Py_END_ALLOW_THREADS if (PyObject_Print(pvalue, fp, 0) != 0) { Py_DECREF(pvalue); Py_ReprLeave((PyObject*)mp); @@ -896,7 +905,9 @@ Py_DECREF(pvalue); } } + Py_BEGIN_ALLOW_THREADS fprintf(fp, "}"); + Py_END_ALLOW_THREADS Py_ReprLeave((PyObject*)mp); return 0; } Modified: python/trunk/Objects/fileobject.c ============================================================================== --- python/trunk/Objects/fileobject.c (original) +++ python/trunk/Objects/fileobject.c Mon Sep 17 05:28:34 2007 @@ -2241,7 +2241,9 @@ err_closed(); return -1; } + Py_BEGIN_ALLOW_THREADS fputs(s, fp); + Py_END_ALLOW_THREADS return 0; } else if (!PyErr_Occurred()) { Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Mon Sep 17 05:28:34 2007 @@ -334,7 +334,9 @@ char buf[100]; format_float(buf, sizeof(buf), v, (flags & Py_PRINT_RAW) ? PREC_STR : PREC_REPR); + Py_BEGIN_ALLOW_THREADS fputs(buf, fp); + Py_END_ALLOW_THREADS return 0; } Modified: python/trunk/Objects/intobject.c ============================================================================== --- python/trunk/Objects/intobject.c (original) +++ python/trunk/Objects/intobject.c Mon Sep 17 05:28:34 2007 @@ -425,7 +425,10 @@ int_print(PyIntObject *v, FILE *fp, int flags) /* flags -- not used but required by interface */ { - fprintf(fp, "%ld", v->ob_ival); + long int_val = v->ob_ival; + Py_BEGIN_ALLOW_THREADS + fprintf(fp, "%ld", int_val); + Py_END_ALLOW_THREADS return 0; } Modified: python/trunk/Objects/listobject.c ============================================================================== --- python/trunk/Objects/listobject.c (original) +++ python/trunk/Objects/listobject.c Mon Sep 17 05:28:34 2007 @@ -282,19 +282,28 @@ if (rc != 0) { if (rc < 0) return rc; + Py_BEGIN_ALLOW_THREADS fprintf(fp, "[...]"); + Py_END_ALLOW_THREADS return 0; } + Py_BEGIN_ALLOW_THREADS fprintf(fp, "["); + Py_END_ALLOW_THREADS for (i = 0; i < Py_Size(op); i++) { - if (i > 0) + if (i > 0) { + Py_BEGIN_ALLOW_THREADS fprintf(fp, ", "); + Py_END_ALLOW_THREADS + } if (PyObject_Print(op->ob_item[i], fp, 0) != 0) { Py_ReprLeave((PyObject *)op); return -1; } } + Py_BEGIN_ALLOW_THREADS fprintf(fp, "]"); + Py_END_ALLOW_THREADS Py_ReprLeave((PyObject *)op); return 0; } Modified: python/trunk/Objects/object.c ============================================================================== --- python/trunk/Objects/object.c (original) +++ python/trunk/Objects/object.c Mon Sep 17 05:28:34 2007 @@ -279,14 +279,18 @@ #endif clearerr(fp); /* Clear any previous error condition */ if (op == NULL) { + Py_BEGIN_ALLOW_THREADS fprintf(fp, ""); + Py_END_ALLOW_THREADS } else { if (op->ob_refcnt <= 0) /* XXX(twouters) cast refcount to long until %zd is universally available */ + Py_BEGIN_ALLOW_THREADS fprintf(fp, "", (long)op->ob_refcnt, op); + Py_END_ALLOW_THREADS else if (Py_Type(op)->tp_print == NULL) { PyObject *s; if (flags & Py_PRINT_RAW) Modified: python/trunk/Objects/setobject.c ============================================================================== --- python/trunk/Objects/setobject.c (original) +++ python/trunk/Objects/setobject.c Mon Sep 17 05:28:34 2007 @@ -577,20 +577,28 @@ if (status != 0) { if (status < 0) return status; + Py_BEGIN_ALLOW_THREADS fprintf(fp, "%s(...)", so->ob_type->tp_name); + Py_END_ALLOW_THREADS return 0; } + Py_BEGIN_ALLOW_THREADS fprintf(fp, "%s([", so->ob_type->tp_name); + Py_END_ALLOW_THREADS while (set_next(so, &pos, &entry)) { + Py_BEGIN_ALLOW_THREADS fputs(emit, fp); + Py_END_ALLOW_THREADS emit = separator; if (PyObject_Print(entry->key, fp, 0) != 0) { Py_ReprLeave((PyObject*)so); return -1; } } + Py_BEGIN_ALLOW_THREADS fputs("])", fp); + Py_END_ALLOW_THREADS Py_ReprLeave((PyObject*)so); return 0; } Modified: python/trunk/Objects/stringobject.c ============================================================================== --- python/trunk/Objects/stringobject.c (original) +++ python/trunk/Objects/stringobject.c Mon Sep 17 05:28:34 2007 @@ -788,7 +788,7 @@ static int string_print(PyStringObject *op, FILE *fp, int flags) { - Py_ssize_t i; + Py_ssize_t i, str_len; char c; int quote; @@ -806,6 +806,7 @@ if (flags & Py_PRINT_RAW) { char *data = op->ob_sval; Py_ssize_t size = Py_Size(op); + Py_BEGIN_ALLOW_THREADS while (size > INT_MAX) { /* Very long strings cannot be written atomically. * But don't write exactly INT_MAX bytes at a time @@ -821,6 +822,7 @@ #else fwrite(data, 1, (int)size, fp); #endif + Py_END_ALLOW_THREADS return 0; } @@ -830,8 +832,13 @@ !memchr(op->ob_sval, '"', Py_Size(op))) quote = '"'; + str_len = Py_Size(op); + Py_BEGIN_ALLOW_THREADS fputc(quote, fp); - for (i = 0; i < Py_Size(op); i++) { + for (i = 0; i < str_len; i++) { + /* Since strings are immutable and the caller should have a + reference, accessing the interal buffer should not be an issue + with the GIL released. */ c = op->ob_sval[i]; if (c == quote || c == '\\') fprintf(fp, "\\%c", c); @@ -847,6 +854,7 @@ fputc(c, fp); } fputc(quote, fp); + Py_END_ALLOW_THREADS return 0; } Modified: python/trunk/Objects/tupleobject.c ============================================================================== --- python/trunk/Objects/tupleobject.c (original) +++ python/trunk/Objects/tupleobject.c Mon Sep 17 05:28:34 2007 @@ -188,16 +188,24 @@ tupleprint(PyTupleObject *op, FILE *fp, int flags) { Py_ssize_t i; + Py_BEGIN_ALLOW_THREADS fprintf(fp, "("); + Py_END_ALLOW_THREADS for (i = 0; i < Py_Size(op); i++) { - if (i > 0) + if (i > 0) { + Py_BEGIN_ALLOW_THREADS fprintf(fp, ", "); + Py_END_ALLOW_THREADS + } if (PyObject_Print(op->ob_item[i], fp, 0) != 0) return -1; } - if (Py_Size(op) == 1) + i = Py_Size(op); + Py_BEGIN_ALLOW_THREADS + if (i == 1) fprintf(fp, ","); fprintf(fp, ")"); + Py_END_ALLOW_THREADS return 0; } From buildbot at python.org Mon Sep 17 07:14:20 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 17 Sep 2007 05:14:20 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20070917051420.780391E4002@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/161 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_urllib2net make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Mon Sep 17 07:45:04 2007 From: python-checkins at python.org (sean.reifschneider) Date: Mon, 17 Sep 2007 07:45:04 +0200 (CEST) Subject: [Python-checkins] r58177 - python/trunk/Modules/bz2module.c Message-ID: <20070917054504.DF59B1E4002@bag.python.org> Author: sean.reifschneider Date: Mon Sep 17 07:45:04 2007 New Revision: 58177 Modified: python/trunk/Modules/bz2module.c Log: issue1597011: Fix for bz2 module corner-case error due to error checking bug. Modified: python/trunk/Modules/bz2module.c ============================================================================== --- python/trunk/Modules/bz2module.c (original) +++ python/trunk/Modules/bz2module.c Mon Sep 17 07:45:04 2007 @@ -235,6 +235,7 @@ size_t increment; /* amount to increment the buffer */ PyObject *v; int bzerror; + int bytes_read; int newlinetypes = f->f_newlinetypes; int skipnextlf = f->f_skipnextlf; int univ_newline = f->f_univ_newline; @@ -249,24 +250,22 @@ for (;;) { Py_BEGIN_ALLOW_THREADS - if (univ_newline) { - while (1) { - BZ2_bzRead(&bzerror, f->fp, &c, 1); - f->pos++; - if (bzerror != BZ_OK || buf == end) - break; + while (buf != end) { + bytes_read = BZ2_bzRead(&bzerror, f->fp, &c, 1); + f->pos++; + if (bytes_read == 0) break; + if (univ_newline) { if (skipnextlf) { skipnextlf = 0; if (c == '\n') { - /* Seeing a \n here with - * skipnextlf true means we + /* Seeing a \n here with skipnextlf true means we * saw a \r before. */ newlinetypes |= NEWLINE_CRLF; - BZ2_bzRead(&bzerror, f->fp, - &c, 1); - if (bzerror != BZ_OK) - break; + if (bzerror != BZ_OK) break; + bytes_read = BZ2_bzRead(&bzerror, f->fp, &c, 1); + f->pos++; + if (bytes_read == 0) break; } else { newlinetypes |= NEWLINE_CR; } @@ -274,19 +273,14 @@ if (c == '\r') { skipnextlf = 1; c = '\n'; - } else if ( c == '\n') + } else if (c == '\n') newlinetypes |= NEWLINE_LF; - *buf++ = c; - if (c == '\n') break; } - if (bzerror == BZ_STREAM_END && skipnextlf) - newlinetypes |= NEWLINE_CR; - } else /* If not universal newlines use the normal loop */ - do { - BZ2_bzRead(&bzerror, f->fp, &c, 1); - f->pos++; - *buf++ = c; - } while (bzerror == BZ_OK && c != '\n' && buf != end); + *buf++ = c; + if (bzerror != BZ_OK || c == '\n') break; + } + if (univ_newline && bzerror == BZ_STREAM_END && skipnextlf) + newlinetypes |= NEWLINE_CR; Py_END_ALLOW_THREADS f->f_newlinetypes = newlinetypes; f->f_skipnextlf = skipnextlf; From python-checkins at python.org Mon Sep 17 07:45:20 2007 From: python-checkins at python.org (sean.reifschneider) Date: Mon, 17 Sep 2007 07:45:20 +0200 (CEST) Subject: [Python-checkins] r58178 - python/branches/release25-maint/Modules/bz2module.c Message-ID: <20070917054520.D05401E4002@bag.python.org> Author: sean.reifschneider Date: Mon Sep 17 07:45:20 2007 New Revision: 58178 Modified: python/branches/release25-maint/Modules/bz2module.c Log: issue1597011: Fix for bz2 module corner-case error due to error checking bug. Modified: python/branches/release25-maint/Modules/bz2module.c ============================================================================== --- python/branches/release25-maint/Modules/bz2module.c (original) +++ python/branches/release25-maint/Modules/bz2module.c Mon Sep 17 07:45:20 2007 @@ -235,6 +235,7 @@ size_t increment; /* amount to increment the buffer */ PyObject *v; int bzerror; + int bytes_read; int newlinetypes = f->f_newlinetypes; int skipnextlf = f->f_skipnextlf; int univ_newline = f->f_univ_newline; @@ -249,24 +250,22 @@ for (;;) { Py_BEGIN_ALLOW_THREADS - if (univ_newline) { - while (1) { - BZ2_bzRead(&bzerror, f->fp, &c, 1); - f->pos++; - if (bzerror != BZ_OK || buf == end) - break; + while (buf != end) { + bytes_read = BZ2_bzRead(&bzerror, f->fp, &c, 1); + f->pos++; + if (bytes_read == 0) break; + if (univ_newline) { if (skipnextlf) { skipnextlf = 0; if (c == '\n') { - /* Seeing a \n here with - * skipnextlf true means we + /* Seeing a \n here with skipnextlf true means we * saw a \r before. */ newlinetypes |= NEWLINE_CRLF; - BZ2_bzRead(&bzerror, f->fp, - &c, 1); - if (bzerror != BZ_OK) - break; + if (bzerror != BZ_OK) break; + bytes_read = BZ2_bzRead(&bzerror, f->fp, &c, 1); + f->pos++; + if (bytes_read == 0) break; } else { newlinetypes |= NEWLINE_CR; } @@ -274,19 +273,14 @@ if (c == '\r') { skipnextlf = 1; c = '\n'; - } else if ( c == '\n') + } else if (c == '\n') newlinetypes |= NEWLINE_LF; - *buf++ = c; - if (c == '\n') break; } - if (bzerror == BZ_STREAM_END && skipnextlf) - newlinetypes |= NEWLINE_CR; - } else /* If not universal newlines use the normal loop */ - do { - BZ2_bzRead(&bzerror, f->fp, &c, 1); - f->pos++; - *buf++ = c; - } while (bzerror == BZ_OK && c != '\n' && buf != end); + *buf++ = c; + if (bzerror != BZ_OK || c == '\n') break; + } + if (univ_newline && bzerror == BZ_STREAM_END && skipnextlf) + newlinetypes |= NEWLINE_CR; Py_END_ALLOW_THREADS f->f_newlinetypes = newlinetypes; f->f_skipnextlf = skipnextlf; From buildbot at python.org Mon Sep 17 07:52:00 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 17 Sep 2007 05:52:00 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD trunk Message-ID: <20070917055200.6A6551E4002@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%20trunk/builds/29 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Mon Sep 17 08:46:56 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 17 Sep 2007 06:46:56 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070917064656.BDE791E4002@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/55 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_threading sincerely, -The Buildbot From python-checkins at python.org Mon Sep 17 11:43:12 2007 From: python-checkins at python.org (sean.reifschneider) Date: Mon, 17 Sep 2007 11:43:12 +0200 (CEST) Subject: [Python-checkins] r58179 - in python/branches/release25-maint: Lib/test/test_re.py Modules/_sre.c Message-ID: <20070917094312.126D71E4002@bag.python.org> Author: sean.reifschneider Date: Mon Sep 17 11:43:11 2007 New Revision: 58179 Modified: python/branches/release25-maint/Lib/test/test_re.py python/branches/release25-maint/Modules/_sre.c Log: issue1140: Guido's patch from revision 58098 (2.6) applied to 2.5. Modified: python/branches/release25-maint/Lib/test/test_re.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_re.py (original) +++ python/branches/release25-maint/Lib/test/test_re.py Mon Sep 17 11:43:11 2007 @@ -83,6 +83,31 @@ self.assertEqual(re.sub('\r\n', '\n', 'abc\r\ndef\r\n'), 'abc\ndef\n') + def test_bug_1140(self): + # re.sub(x, y, u'') should return u'', not '', and + # re.sub(x, y, '') should return '', not u''. + # Also: + # re.sub(x, y, unicode(x)) should return unicode(y), and + # re.sub(x, y, str(x)) should return + # str(y) if isinstance(y, str) else unicode(y). + for x in 'x', u'x': + for y in 'y', u'y': + z = re.sub(x, y, u'') + self.assertEqual(z, u'') + self.assertEqual(type(z), unicode) + # + z = re.sub(x, y, '') + self.assertEqual(z, '') + self.assertEqual(type(z), str) + # + z = re.sub(x, y, unicode(x)) + self.assertEqual(z, y) + self.assertEqual(type(z), unicode) + # + z = re.sub(x, y, str(x)) + self.assertEqual(z, y) + self.assertEqual(type(z), type(y)) + def test_sub_template_numeric_escape(self): # bug 776311 and friends self.assertEqual(re.sub('x', r'\0', 'x'), '\0') Modified: python/branches/release25-maint/Modules/_sre.c ============================================================================== --- python/branches/release25-maint/Modules/_sre.c (original) +++ python/branches/release25-maint/Modules/_sre.c Mon Sep 17 11:43:11 2007 @@ -1979,7 +1979,7 @@ #endif static PyObject* -join_list(PyObject* list, PyObject* pattern) +join_list(PyObject* list, PyObject* string) { /* join list elements */ @@ -1990,24 +1990,15 @@ #endif PyObject* result; - switch (PyList_GET_SIZE(list)) { - case 0: - Py_DECREF(list); - return PySequence_GetSlice(pattern, 0, 0); - case 1: - result = PyList_GET_ITEM(list, 0); - Py_INCREF(result); - Py_DECREF(list); - return result; - } - - /* two or more elements: slice out a suitable separator from the - first member, and use that to join the entire list */ - - joiner = PySequence_GetSlice(pattern, 0, 0); + joiner = PySequence_GetSlice(string, 0, 0); if (!joiner) return NULL; + if (PyList_GET_SIZE(list) == 0) { + Py_DECREF(list); + return joiner; + } + #if PY_VERSION_HEX >= 0x01060000 function = PyObject_GetAttrString(joiner, "join"); if (!function) { @@ -2443,7 +2434,7 @@ Py_DECREF(filter); /* convert list to single string (also removes list) */ - item = join_list(list, self->pattern); + item = join_list(list, string); if (!item) return NULL; From buildbot at python.org Mon Sep 17 12:11:49 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 17 Sep 2007 10:11:49 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 2.5 Message-ID: <20070917101149.EDA7A1E4002@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%202.5/builds/13 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_urllib2net sincerely, -The Buildbot From buildbot at python.org Mon Sep 17 13:15:15 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 17 Sep 2007 11:15:15 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 2.5 Message-ID: <20070917111515.F2D7F1E400E@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/319 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Mon Sep 17 18:26:50 2007 From: python-checkins at python.org (facundo.batista) Date: Mon, 17 Sep 2007 18:26:50 +0200 (CEST) Subject: [Python-checkins] r58180 - python/trunk/Misc/NEWS Message-ID: <20070917162650.D6D521E4002@bag.python.org> Author: facundo.batista Date: Mon Sep 17 18:26:50 2007 New Revision: 58180 Modified: python/trunk/Misc/NEWS Log: Decimal is updated, :) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Sep 17 18:26:50 2007 @@ -260,6 +260,8 @@ Library ------- +- Decimal is fully updated to the latest Decimal Specification (v1.66). + - Bug #1153: repr.repr() now doesn't require set and dictionary items to be orderable to properly represent them. From python-checkins at python.org Mon Sep 17 19:30:13 2007 From: python-checkins at python.org (facundo.batista) Date: Mon, 17 Sep 2007 19:30:13 +0200 (CEST) Subject: [Python-checkins] r58181 - in python/trunk/Lib: decimal.py test/test_decimal.py Message-ID: <20070917173013.61AC91E4002@bag.python.org> Author: facundo.batista Date: Mon Sep 17 19:30:13 2007 New Revision: 58181 Modified: python/trunk/Lib/decimal.py python/trunk/Lib/test/test_decimal.py Log: The methods always return Decimal classes, even if they're executed through a subclass (thanks Mark Dickinson). Added a bit of testing for this. Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Mon Sep 17 19:30:13 2007 @@ -1473,7 +1473,7 @@ pos += 1 payload = payload[pos:] return Decimal((self._sign, payload, self._exp)) - return self + return Decimal(self) def _fix(self, context): """Round if it is necessary to keep self within prec precision. @@ -1494,7 +1494,7 @@ return self._fix_nan(context) else: # self is +/-Infinity; return unaltered - return self + return Decimal(self) # if self is zero then exponent should be between Etiny and # Emax if _clamp==0, and between Etiny and Etop if _clamp==1. @@ -1507,7 +1507,7 @@ context._raise_error(Clamped) return Decimal((self._sign, (0,), new_exp)) else: - return self + return Decimal(self) # exp_min is the smallest allowable exponent of the result, # equal to max(self.adjusted()-context.prec+1, Etiny) @@ -1551,7 +1551,7 @@ return Decimal((self._sign, self_padded, Etop)) # here self was representable to begin with; return unchanged - return self + return Decimal(self) _pick_rounding_function = {} @@ -1678,10 +1678,10 @@ return context._raise_error(InvalidOperation, 'sNaN', 1, modulo) if self_is_nan: - return self + return self._fix_nan(context) if other_is_nan: - return other - return modulo + return other._fix_nan(context) + return modulo._fix_nan(context) # check inputs: we apply same restrictions as Python's pow() if not (self._isinteger() and @@ -2179,7 +2179,7 @@ if exp._isinfinity() or self._isinfinity(): if exp._isinfinity() and self._isinfinity(): - return self # if both are inf, it is OK + return Decimal(self) # if both are inf, it is OK return context._raise_error(InvalidOperation, 'quantize with one INF') @@ -2254,7 +2254,7 @@ rounding = rounding mode """ if self._is_special: - return self + return Decimal(self) if not self: return Decimal((self._sign, (0,), exp)) @@ -2285,9 +2285,9 @@ ans = self._check_nans(context=context) if ans: return ans - return self + return Decimal(self) if self._exp >= 0: - return self + return Decimal(self) if not self: return Decimal((self._sign, (0,), 0)) if context is None: @@ -2310,9 +2310,9 @@ ans = self._check_nans(context=context) if ans: return ans - return self + return Decimal(self) if self._exp >= 0: - return self + return Decimal(self) else: return self._rescale(0, rounding) @@ -2426,6 +2426,9 @@ """ other = _convert_other(other, raiseit=True) + if context is None: + context = getcontext() + if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the # number is always returned @@ -2433,9 +2436,9 @@ on = other._isnan() if sn or on: if on == 1 and sn != 2: - return self + return self._fix_nan(context) if sn == 1 and on != 2: - return other + return other._fix_nan(context) return self._check_nans(other, context) c = self.__cmp__(other) @@ -2455,8 +2458,6 @@ else: ans = self - if context is None: - context = getcontext() if context._rounding_decision == ALWAYS_ROUND: return ans._fix(context) return ans @@ -2469,6 +2470,9 @@ """ other = _convert_other(other, raiseit=True) + if context is None: + context = getcontext() + if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the # number is always returned @@ -2476,9 +2480,9 @@ on = other._isnan() if sn or on: if on == 1 and sn != 2: - return self + return self._fix_nan(context) if sn == 1 and on != 2: - return other + return other._fix_nan(context) return self._check_nans(other, context) c = self.__cmp__(other) @@ -2490,8 +2494,6 @@ else: ans = other - if context is None: - context = getcontext() if context._rounding_decision == ALWAYS_ROUND: return ans._fix(context) return ans @@ -3087,6 +3089,9 @@ """Compares the values numerically with their sign ignored.""" other = _convert_other(other, raiseit=True) + if context is None: + context = getcontext() + if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the # number is always returned @@ -3094,9 +3099,9 @@ on = other._isnan() if sn or on: if on == 1 and sn != 2: - return self + return self._fix_nan(context) if sn == 1 and on != 2: - return other + return other._fix_nan(context) return self._check_nans(other, context) c = self.copy_abs().__cmp__(other.copy_abs()) @@ -3108,8 +3113,6 @@ else: ans = self - if context is None: - context = getcontext() if context._rounding_decision == ALWAYS_ROUND: return ans._fix(context) return ans @@ -3118,6 +3121,9 @@ """Compares the values numerically with their sign ignored.""" other = _convert_other(other, raiseit=True) + if context is None: + context = getcontext() + if self._is_special or other._is_special: # If one operand is a quiet NaN and the other is number, then the # number is always returned @@ -3125,9 +3131,9 @@ on = other._isnan() if sn or on: if on == 1 and sn != 2: - return self + return self._fix_nan(context) if sn == 1 and on != 2: - return other + return other._fix_nan(context) return self._check_nans(other, context) c = self.copy_abs().__cmp__(other.copy_abs()) @@ -3139,8 +3145,6 @@ else: ans = other - if context is None: - context = getcontext() if context._rounding_decision == ALWAYS_ROUND: return ans._fix(context) return ans @@ -3296,7 +3300,7 @@ return context._raise_error(InvalidOperation) if self._isinfinity(): - return self + return Decimal(self) # get values, pad if necessary torot = int(other) @@ -3334,7 +3338,7 @@ return context._raise_error(InvalidOperation) if self._isinfinity(): - return self + return Decimal(self) d = Decimal((self._sign, self._int, self._exp + int(other))) d = d._fix(context) @@ -3355,12 +3359,12 @@ return context._raise_error(InvalidOperation) if self._isinfinity(): - return self + return Decimal(self) # get values, pad if necessary torot = int(other) if not torot: - return self + return Decimal(self) rotdig = self._int topad = context.prec - len(rotdig) if topad: @@ -3751,7 +3755,7 @@ >>> ExtendedContext.copy_decimal(Decimal('-1.00')) Decimal("-1.00") """ - return a + return Decimal(a) def copy_negate(self, a): """Returns a copy of the operand with the sign inverted. Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Mon Sep 17 19:30:13 2007 @@ -1072,6 +1072,21 @@ checkSameDec("to_eng_string") checkSameDec("to_integral") + def test_subclassing(self): + # Different behaviours when subclassing Decimal + + class MyDecimal(Decimal): + pass + + d1 = MyDecimal(1) + d2 = MyDecimal(2) + d = d1 + d2 + self.assertTrue(type(d) is Decimal) + + d = d1.max(d2) + self.assertTrue(type(d) is Decimal) + + class DecimalPythonAPItests(unittest.TestCase): def test_pickle(self): From buildbot at python.org Mon Sep 17 20:00:48 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 17 Sep 2007 18:00:48 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 trunk Message-ID: <20070917180049.186801E4019@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%20trunk/builds/55 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Mon Sep 17 21:46:28 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 17 Sep 2007 19:46:28 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 3.0 Message-ID: <20070917194628.D88B81E4002@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%203.0/builds/70 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Unknown signal 37 sincerely, -The Buildbot From python-checkins at python.org Mon Sep 17 22:53:21 2007 From: python-checkins at python.org (sean.reifschneider) Date: Mon, 17 Sep 2007 22:53:21 +0200 (CEST) Subject: [Python-checkins] r58183 - python/trunk/Lib/platform.py Message-ID: <20070917205321.CF4251E408E@bag.python.org> Author: sean.reifschneider Date: Mon Sep 17 22:53:21 2007 New Revision: 58183 Modified: python/trunk/Lib/platform.py Log: issue1082: Fixing platform and system for Vista. Modified: python/trunk/Lib/platform.py ============================================================================== --- python/trunk/Lib/platform.py (original) +++ python/trunk/Lib/platform.py Mon Sep 17 22:53:21 2007 @@ -1146,6 +1146,12 @@ machine = '' if processor == 'unknown': processor = '' + + # normalize name + if system == 'Microsoft' and release == 'Windows': + system = 'Windows' + release = 'Vista' + _uname_cache = system,node,release,version,machine,processor return _uname_cache From python-checkins at python.org Mon Sep 17 22:58:46 2007 From: python-checkins at python.org (sean.reifschneider) Date: Mon, 17 Sep 2007 22:58:46 +0200 (CEST) Subject: [Python-checkins] r58184 - python/branches/release25-maint/Lib/platform.py Message-ID: <20070917205846.BA4F41E4002@bag.python.org> Author: sean.reifschneider Date: Mon Sep 17 22:58:46 2007 New Revision: 58184 Modified: python/branches/release25-maint/Lib/platform.py Log: issue1082: Fixing system and platform names for Vista. Modified: python/branches/release25-maint/Lib/platform.py ============================================================================== --- python/branches/release25-maint/Lib/platform.py (original) +++ python/branches/release25-maint/Lib/platform.py Mon Sep 17 22:58:46 2007 @@ -1027,6 +1027,12 @@ machine = '' if processor == 'unknown': processor = '' + + # normalize name + if system == 'Microsoft' and release == 'Windows': + system = 'Windows' + release = 'Vista' + _uname_cache = system,node,release,version,machine,processor return _uname_cache From buildbot at python.org Mon Sep 17 23:34:27 2007 From: buildbot at python.org (buildbot at python.org) Date: Mon, 17 Sep 2007 21:34:27 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20070917213428.486331E4002@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/255 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_bufio sincerely, -The Buildbot From python-checkins at python.org Tue Sep 18 03:36:17 2007 From: python-checkins at python.org (andrew.kuchling) Date: Tue, 18 Sep 2007 03:36:17 +0200 (CEST) Subject: [Python-checkins] r58185 - python/trunk/Doc/whatsnew/2.6.rst Message-ID: <20070918013617.060911E4002@bag.python.org> Author: andrew.kuchling Date: Tue Sep 18 03:36:16 2007 New Revision: 58185 Modified: python/trunk/Doc/whatsnew/2.6.rst Log: Add item; sort properly Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Tue Sep 18 03:36:16 2007 @@ -604,6 +604,59 @@ .. % Patch #957003 +* The :mod:`tarfile` module now supports POSIX.1-2001 (pax) and + POSIX.1-1988 (ustar) format tarfiles, in addition to the GNU tar + format that was already supported. The default format + is GNU tar; specify the ``format`` parameter to open a file + using a different format:: + + tar = tarfile.open("output.tar", "w", format=tarfile.PAX_FORMAT) + + The new ``errors`` parameter lets you specify an error handling + scheme for character conversions: the three standard ways Python can + handle errors ``'strict'``, ``'ignore'``, ``'replace'`` , or the + special value ``'utf-8'``, which replaces bad characters with their + UTF-8 representation. Character conversions occur because the PAX + format supports Unicode filenames, defaulting to UTF-8 encoding. + + The :meth:`TarFile.add` method now accepts a ``exclude`` argument that's + a function that can be used to exclude certain filenames from + an archive. + The function must take a filename and return true if the file + should be excluded or false if it should be archived. + The function is applied to both the name initially passed to :meth:`add` + and to the names of files in recursively-added directories. + + (All changes contributed by Lars Gust?bel). + +* An optional ``timeout`` parameter was added to the + :class:`telnetlib.Telnet` class constructor, specifying a timeout + measured in seconds. (Added by Facundo Batista.) + +* The :class:`tempfile.NamedTemporaryFile` class usually deletes + the temporary file it created when the file is closed. This + behaviour can now be changed by passing ``delete=False`` to the + constructor. (Contributed by Damien Miller.) + + .. % Patch #1537850 + +* The :mod:`test.test_support` module now contains a + :func:`EnvironmentVarGuard` + context manager that supports temporarily changing environment variables and + automatically restores them to their old values. + + Another context manager, :class:`TransientResource`, can surround calls + to resources that may or may not be available; it will catch and + ignore a specified list of exceptions. For example, + a network test may ignore certain failures when connecting to an + external web site:: + + with test_support.TransientResource(IOError, errno=errno.ETIMEDOUT): + f = urllib.urlopen('https://sf.net') + ... + + (Contributed by Brett Cannon.) + * The :mod:`textwrap` module can now preserve existing whitespace at the beginnings and ends of the newly-created lines by specifying ``drop_whitespace=False`` @@ -624,21 +677,6 @@ .. % Patch #1581073 -* An optional ``timeout`` parameter was added to the - :class:`telnetlib.Telnet` class constructor, specifying a timeout - measured in seconds. (Added by Facundo Batista.) - -* The :class:`tempfile.NamedTemporaryFile` class usually deletes - the temporary file it created when the file is closed. This - behaviour can now be changed by passing ``delete=False`` to the - constructor. (Contributed by Damien Miller.) - - .. % Patch #1537850 - -* The :mod:`test.test_support` module now contains a :func:`EnvironmentVarGuard` - context manager that supports temporarily changing environment variables and - automatically restores them to their old values. (Contributed by Brett Cannon.) - * The :mod:`timeit` module now accepts callables as well as strings for the statement being timed and for the setup code. Two convenience functions were added for creating From python-checkins at python.org Tue Sep 18 05:33:19 2007 From: python-checkins at python.org (raymond.hettinger) Date: Tue, 18 Sep 2007 05:33:19 +0200 (CEST) Subject: [Python-checkins] r58186 - in python/trunk: Doc/library/collections.rst Lib/collections.py Lib/test/test_collections.py Message-ID: <20070918033319.DB6E01E4002@bag.python.org> Author: raymond.hettinger Date: Tue Sep 18 05:33:19 2007 New Revision: 58186 Modified: python/trunk/Doc/library/collections.rst python/trunk/Lib/collections.py python/trunk/Lib/test/test_collections.py Log: Handle corner cased on 0-tuples and 1-tuples. Add verbose option so people can see how it works. Modified: python/trunk/Doc/library/collections.rst ============================================================================== --- python/trunk/Doc/library/collections.rst (original) +++ python/trunk/Doc/library/collections.rst Tue Sep 18 05:33:19 2007 @@ -364,7 +364,7 @@ -------------------------------------------- -.. function:: NamedTuple(typename, fieldnames) +.. function:: NamedTuple(typename, fieldnames, [verbose]) Returns a new tuple subclass named *typename*. The new subclass is used to create tuple-like objects that have fields accessable by attribute lookup as @@ -412,6 +412,23 @@ >>> print Color(*m.popitem()) Color(name='blue', code=3) + If *verbose* is true, the *NamedTuple* call will print the class definition:: + + >>> Point = NamedTuple('Point', 'x y', verbose=True) + class Point(tuple): + 'Point(x, y)' + __slots__ = () + __fields__ = ('x', 'y') + def __new__(cls, x, y): + return tuple.__new__(cls, (x, y)) + def __repr__(self): + return 'Point(x=%r, y=%r)' % self + def __replace__(self, field, value): + 'Return a new Point object replacing one field with a new value' + return Point(**dict(zip(('x', 'y'), self) + [(field, value)])) + x = property(itemgetter(0)) + y = property(itemgetter(1)) + In addition to the methods inherited from tuples, named tuples support an additonal method and an informational read-only attribute. Modified: python/trunk/Lib/collections.py ============================================================================== --- python/trunk/Lib/collections.py (original) +++ python/trunk/Lib/collections.py Tue Sep 18 05:33:19 2007 @@ -4,7 +4,7 @@ from operator import itemgetter as _itemgetter import sys as _sys -def NamedTuple(typename, s): +def NamedTuple(typename, s, verbose=False): """Returns a new subclass of tuple with named fields. >>> Point = NamedTuple('Point', 'x y') @@ -28,25 +28,26 @@ """ - field_names = tuple(s.replace(',', ' ').split()) # names separated by spaces and/or commas + field_names = tuple(s.replace(',', ' ').split()) # names separated by spaces and/or commas if not ''.join((typename,) + field_names).replace('_', '').isalnum(): raise ValueError('Type names and field names can only contain alphanumeric characters and underscores') - argtxt = ', '.join(field_names) + argtxt = repr(field_names).replace("'", "")[1:-1] # tuple repr without parens or quotes reprtxt = ', '.join('%s=%%r' % name for name in field_names) template = '''class %(typename)s(tuple): '%(typename)s(%(argtxt)s)' __slots__ = () __fields__ = %(field_names)r def __new__(cls, %(argtxt)s): - return tuple.__new__(cls, (%(argtxt)s,)) + return tuple.__new__(cls, (%(argtxt)s)) def __repr__(self): return '%(typename)s(%(reprtxt)s)' %% self def __replace__(self, field, value): 'Return a new %(typename)s object replacing one field with a new value' - return %(typename)s(**dict(zip(%(field_names)r, self) + [(field, value)])) - ''' % locals() + return %(typename)s(**dict(zip(%(field_names)r, self) + [(field, value)])) \n''' % locals() for i, name in enumerate(field_names): - template += '\n %s = property(itemgetter(%d))\n' % (name, i) + template += ' %s = property(itemgetter(%d))\n' % (name, i) + if verbose: + print template m = dict(itemgetter=_itemgetter) exec template in m result = m[typename] @@ -62,7 +63,7 @@ if __name__ == '__main__': # verify that instances can be pickled from cPickle import loads, dumps - Point = NamedTuple('Point', 'x, y') + Point = NamedTuple('Point', 'x, y', True) p = Point(x=10, y=20) assert p == loads(dumps(p)) Modified: python/trunk/Lib/test/test_collections.py ============================================================================== --- python/trunk/Lib/test/test_collections.py (original) +++ python/trunk/Lib/test/test_collections.py Tue Sep 18 05:33:19 2007 @@ -58,6 +58,12 @@ self.assertRaises(AttributeError, eval, 'p.z', locals()) + def test_odd_sizes(self): + Zero = NamedTuple('Zero', '') + self.assertEqual(Zero(), ()) + Dot = NamedTuple('Dot', 'd') + self.assertEqual(Dot(1), (1,)) + def test_main(verbose=None): import collections as CollectionsModule test_classes = [TestNamedTuple] From buildbot at python.org Tue Sep 18 06:32:08 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 18 Sep 2007 04:32:08 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20070918043208.B04C41E4002@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/219 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_timeout make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Tue Sep 18 09:24:41 2007 From: python-checkins at python.org (georg.brandl) Date: Tue, 18 Sep 2007 09:24:41 +0200 (CEST) Subject: [Python-checkins] r58192 - python/trunk/Doc/reference/index.rst python/trunk/Doc/reference/simple_stmts.rst Message-ID: <20070918072441.4E5FE1E4010@bag.python.org> Author: georg.brandl Date: Tue Sep 18 09:24:40 2007 New Revision: 58192 Modified: python/trunk/Doc/reference/index.rst python/trunk/Doc/reference/simple_stmts.rst Log: A bit of reordering, also show more subheadings in the lang ref index. Modified: python/trunk/Doc/reference/index.rst ============================================================================== --- python/trunk/Doc/reference/index.rst (original) +++ python/trunk/Doc/reference/index.rst Tue Sep 18 09:24:40 2007 @@ -17,7 +17,7 @@ interfaces available to C/C++ programmers in detail. .. toctree:: - :maxdepth: 2 + :maxdepth: 3 introduction.rst lexical_analysis.rst Modified: python/trunk/Doc/reference/simple_stmts.rst ============================================================================== --- python/trunk/Doc/reference/simple_stmts.rst (original) +++ python/trunk/Doc/reference/simple_stmts.rst Tue Sep 18 09:24:40 2007 @@ -66,48 +66,6 @@ cause any output.) -.. _assert: - -Assert statements -================= - -.. index:: - statement: assert - pair: debugging; assertions - -Assert statements are a convenient way to insert debugging assertions into a -program: - -.. productionlist:: - assert_stmt: "assert" `expression` ["," `expression`] - -The simple form, ``assert expression``, is equivalent to :: - - if __debug__: - if not expression: raise AssertionError - -The extended form, ``assert expression1, expression2``, is equivalent to :: - - if __debug__: - if not expression1: raise AssertionError, expression2 - -.. index:: - single: __debug__ - exception: AssertionError - -These equivalences assume that ``__debug__`` and :exc:`AssertionError` refer to -the built-in variables with those names. In the current implementation, the -built-in variable ``__debug__`` is ``True`` under normal circumstances, -``False`` when optimization is requested (command line option -O). The current -code generator emits no code for an assert statement when optimization is -requested at compile time. Note that it is unnecessary to include the source -code for the expression that failed in the error message; it will be displayed -as part of the stack trace. - -Assignments to ``__debug__`` are illegal. The value for the built-in variable -is determined when the interpreter starts. - - .. _assignment: Assignment statements @@ -308,6 +266,48 @@ a.x += 1 # writes a.x as 4 leaving A.x as 3 +.. _assert: + +The :keyword:`assert` statement +=============================== + +.. index:: + statement: assert + pair: debugging; assertions + +Assert statements are a convenient way to insert debugging assertions into a +program: + +.. productionlist:: + assert_stmt: "assert" `expression` ["," `expression`] + +The simple form, ``assert expression``, is equivalent to :: + + if __debug__: + if not expression: raise AssertionError + +The extended form, ``assert expression1, expression2``, is equivalent to :: + + if __debug__: + if not expression1: raise AssertionError, expression2 + +.. index:: + single: __debug__ + exception: AssertionError + +These equivalences assume that ``__debug__`` and :exc:`AssertionError` refer to +the built-in variables with those names. In the current implementation, the +built-in variable ``__debug__`` is ``True`` under normal circumstances, +``False`` when optimization is requested (command line option -O). The current +code generator emits no code for an assert statement when optimization is +requested at compile time. Note that it is unnecessary to include the source +code for the expression that failed in the error message; it will be displayed +as part of the stack trace. + +Assignments to ``__debug__`` are illegal. The value for the built-in variable +is determined when the interpreter starts. + + .. _pass: The :keyword:`pass` statement From python-checkins at python.org Tue Sep 18 18:53:19 2007 From: python-checkins at python.org (facundo.batista) Date: Tue, 18 Sep 2007 18:53:19 +0200 (CEST) Subject: [Python-checkins] r58193 - python/trunk/Lib/decimal.py Message-ID: <20070918165319.667DE1E4004@bag.python.org> Author: facundo.batista Date: Tue Sep 18 18:53:18 2007 New Revision: 58193 Modified: python/trunk/Lib/decimal.py Log: Speed up of the various division operations (remainder, divide, divideint and divmod). Thanks Mark Dickinson. Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Tue Sep 18 18:53:18 2007 @@ -244,9 +244,7 @@ -0, for power. """ - def handle(self, context, sign, double = None, *args): - if double is not None: - return (Infsign[sign],)*2 + def handle(self, context, sign, *args): return Infsign[sign] class DivisionImpossible(InvalidOperation): @@ -258,7 +256,7 @@ """ def handle(self, context, *args): - return (NaN, NaN) + return NaN class DivisionUndefined(InvalidOperation, ZeroDivisionError): """Undefined result of division. @@ -268,9 +266,7 @@ the dividend is also zero. The result is [0,qNaN]. """ - def handle(self, context, tup=None, *args): - if tup is not None: - return (NaN, NaN) # for 0 %0, 0 // 0 + def handle(self, context, *args): return NaN class Inexact(DecimalException): @@ -1151,157 +1147,97 @@ def __div__(self, other, context=None): """Return self / other.""" - return self._divide(other, context=context) - __truediv__ = __div__ - - def _divide(self, other, divmod = 0, context=None): - """Return a / b, to context.prec precision. - - divmod: - 0 => true division - 1 => (a //b, a%b) - 2 => a //b - 3 => a%b - - Actually, if divmod is 2 or 3 a tuple is returned, but errors for - computing the other value are not raised. - """ other = _convert_other(other) if other is NotImplemented: - if divmod in (0, 1): - return NotImplemented - return (NotImplemented, NotImplemented) + return NotImplemented if context is None: context = getcontext() - shouldround = context._rounding_decision == ALWAYS_ROUND - sign = self._sign ^ other._sign if self._is_special or other._is_special: ans = self._check_nans(other, context) if ans: - if divmod: - return (ans, ans) return ans if self._isinfinity() and other._isinfinity(): - if divmod: - reloco = (context._raise_error(InvalidOperation, - '(+-)INF // (+-)INF'), - context._raise_error(InvalidOperation, - '(+-)INF % (+-)INF')) - return reloco return context._raise_error(InvalidOperation, '(+-)INF/(+-)INF') if self._isinfinity(): - if divmod == 1: - return (Infsign[sign], - context._raise_error(InvalidOperation, 'INF % x')) - elif divmod == 2: - return (Infsign[sign], NaN) - elif divmod == 3: - return (Infsign[sign], - context._raise_error(InvalidOperation, 'INF % x')) return Infsign[sign] if other._isinfinity(): - if divmod: - otherside = Decimal(self) - if shouldround and (divmod == 1 or divmod == 3): - otherside = otherside._fix(context) - return (Decimal((sign, (0,), 0)), otherside) context._raise_error(Clamped, 'Division by infinity') return Decimal((sign, (0,), context.Etiny())) # Special cases for zeroes - if not self and not other: - if divmod: - return context._raise_error(DivisionUndefined, '0 / 0', 1) - return context._raise_error(DivisionUndefined, '0 / 0') - - if not self: - if divmod: - otherside = Decimal((self._sign, (0,), min(self._exp, other._exp))) - if shouldround and (divmod == 1 or divmod == 3): - otherside = otherside._fix(context) - return (Decimal((sign, (0,), 0)), otherside) - exp = self._exp - other._exp - ans = Decimal((sign, (0,), exp)) - ans = ans._fix(context) - return ans - if not other: - if divmod: - return context._raise_error(DivisionByZero, 'divmod(x,0)', - sign, 1) + if not self: + return context._raise_error(DivisionUndefined, '0 / 0') return context._raise_error(DivisionByZero, 'x / 0', sign) - # OK, so neither = 0, INF or NaN - - # If we're dividing into ints, and self < other, stop. - # self.__abs__(0) does not round. - if divmod and (self.__abs__(0, context) < other.__abs__(0, context)): - - if divmod == 1 or divmod == 3: - exp = min(self._exp, other._exp) - ans2 = self._rescale(exp, context.rounding) - if shouldround: - ans2 = ans2._fix(context) - return (Decimal( (sign, (0,), 0) ), - ans2) - - elif divmod == 2: - # Don't round the mod part, if we don't need it. - return (Decimal( (sign, (0,), 0) ), Decimal(self)) + if not self: + exp = self._exp - other._exp + coeff = 0 + else: + # OK, so neither = 0, INF or NaN + shift = len(other._int) - len(self._int) + context.prec + 1 + exp = self._exp - other._exp - shift + op1 = _WorkRep(self) + op2 = _WorkRep(other) + if shift >= 0: + coeff, remainder = divmod(op1.int * 10**shift, op2.int) + else: + coeff, remainder = divmod(op1.int, op2.int * 10**-shift) + if remainder: + # result is not exact; adjust to ensure correct rounding + if coeff % 5 == 0: + coeff += 1 + else: + # result is exact; get as close to ideal exponent as possible + ideal_exp = self._exp - other._exp + while exp < ideal_exp and coeff % 10 == 0: + coeff //= 10 + exp += 1 - op1 = _WorkRep(self) - op2 = _WorkRep(other) - op1, op2, adjust = _adjust_coefficients(op1, op2) - res = _WorkRep( (sign, 0, (op1.exp - op2.exp)) ) - if divmod and res.exp > context.prec + 1: - return context._raise_error(DivisionImpossible) + ans = Decimal((sign, map(int, str(coeff)), exp)) + return ans._fix(context) - prec_limit = 10 ** context.prec - while 1: - while op2.int <= op1.int: - res.int += 1 - op1.int -= op2.int - if res.exp == 0 and divmod: - if res.int >= prec_limit and shouldround: - return context._raise_error(DivisionImpossible) - otherside = Decimal(op1) - exp = min(self._exp, other._exp) - otherside = otherside._rescale(exp, context.rounding) - if shouldround and (divmod == 1 or divmod == 3): - otherside = otherside._fix(context) - return (Decimal(res), otherside) + __truediv__ = __div__ - if op1.int == 0 and adjust >= 0 and not divmod: - break - if res.int >= prec_limit and shouldround: - if divmod: - return context._raise_error(DivisionImpossible) - shouldround=1 - # Really, the answer is a bit higher, so adding a one to - # the end will make sure the rounding is right. - if op1.int != 0: - res.int *= 10 - res.int += 1 - res.exp -= 1 + def _divide(self, other, context): + """Return (self // other, self % other), to context.prec precision. - break - res.int *= 10 - res.exp -= 1 - adjust += 1 - op1.int *= 10 - op1.exp -= 1 + Assumes that neither self nor other is a NaN, that self is not + infinite and that other is nonzero. + """ + sign = self._sign ^ other._sign + if other._isinfinity(): + ideal_exp = self._exp + else: + ideal_exp = min(self._exp, other._exp) - ans = Decimal(res) - if shouldround: - ans = ans._fix(context) - return ans + expdiff = self.adjusted() - other.adjusted() + if not self or other._isinfinity() or expdiff <= -2: + return (Decimal((sign, (0,), 0)), + self._rescale(ideal_exp, context.rounding)) + if expdiff <= context.prec: + op1 = _WorkRep(self) + op2 = _WorkRep(other) + if op1.exp >= op2.exp: + op1.int *= 10**(op1.exp - op2.exp) + else: + op2.int *= 10**(op2.exp - op1.exp) + q, r = divmod(op1.int, op2.int) + if q < 10**context.prec: + return (Decimal((sign, map(int, str(q)), 0)), + Decimal((self._sign, map(int, str(r)), ideal_exp))) + + # Here the quotient is too large to be representable + ans = context._raise_error(DivisionImpossible, + 'quotient too large in //, % or divmod') + return ans, ans def __rdiv__(self, other, context=None): """Swaps self/other and returns __div__.""" @@ -1313,9 +1249,40 @@ def __divmod__(self, other, context=None): """ - (self // other, self % other) + Return (self // other, self % other) """ - return self._divide(other, 1, context) + other = _convert_other(other) + if other is NotImplemented: + return other + + if context is None: + context = getcontext() + + ans = self._check_nans(other, context) + if ans: + return (ans, ans) + + sign = self._sign ^ other._sign + if self._isinfinity(): + if other._isinfinity(): + ans = context._raise_error(InvalidOperation, 'divmod(INF, INF)') + return ans, ans + else: + return (Infsign[sign], + context._raise_error(InvalidOperation, 'INF % x')) + + if not other: + if not self: + ans = context._raise_error(DivisionUndefined, 'divmod(0, 0)') + return ans, ans + else: + return (context._raise_error(DivisionByZero, 'x // 0', sign), + context._raise_error(InvalidOperation, 'x % 0')) + + quotient, remainder = self._divide(other, context) + if context._rounding_decision == ALWAYS_ROUND: + remainder = remainder._fix(context) + return quotient, remainder def __rdivmod__(self, other, context=None): """Swaps self/other and returns __divmod__.""" @@ -1332,15 +1299,25 @@ if other is NotImplemented: return other - if self._is_special or other._is_special: - ans = self._check_nans(other, context) - if ans: - return ans + if context is None: + context = getcontext() - if self and not other: - return context._raise_error(InvalidOperation, 'x % 0') + ans = self._check_nans(other, context) + if ans: + return ans - return self._divide(other, 3, context)[1] + if self._isinfinity(): + return context._raise_error(InvalidOperation, 'INF % x') + elif not other: + if self: + return context._raise_error(InvalidOperation, 'x % 0') + else: + return context._raise_error(DivisionUndefined, '0 % 0') + + remainder = self._divide(other, context)[1] + if context._rounding_decision == ALWAYS_ROUND: + remainder = remainder._fix(context) + return remainder def __rmod__(self, other, context=None): """Swaps self/other and returns __mod__.""" @@ -1391,7 +1368,7 @@ expdiff = self.adjusted() - other.adjusted() if expdiff >= context.prec + 1: # expdiff >= prec+1 => abs(self/other) > 10**prec - return context._raise_error(DivisionImpossible)[0] + return context._raise_error(DivisionImpossible) if expdiff <= -2: # expdiff <= -2 => abs(self/other) < 0.1 ans = self._rescale(ideal_exponent, context.rounding) @@ -1413,7 +1390,7 @@ q += 1 if q >= 10**context.prec: - return context._raise_error(DivisionImpossible)[0] + return context._raise_error(DivisionImpossible) # result has same sign as self unless r is negative sign = self._sign @@ -1426,7 +1403,31 @@ def __floordiv__(self, other, context=None): """self // other""" - return self._divide(other, 2, context)[0] + other = _convert_other(other) + if other is NotImplemented: + return other + + if context is None: + context = getcontext() + + ans = self._check_nans(other, context) + if ans: + return ans + + if self._isinfinity(): + if other._isinfinity(): + return context._raise_error(InvalidOperation, 'INF // INF') + else: + return Infsign[self._sign ^ other._sign] + + if not other: + if self: + return context._raise_error(DivisionByZero, 'x // 0', + self._sign ^ other._sign) + else: + return context._raise_error(DivisionUndefined, '0 // 0') + + return self._divide(other, context)[0] def __rfloordiv__(self, other, context=None): """Swaps self/other and returns __floordiv__.""" @@ -2979,7 +2980,7 @@ # logb(0) = -Inf, DivisionByZero if not self: - return context._raise_error(DivisionByZero, 'logb(0)', -1) + return context._raise_error(DivisionByZero, 'logb(0)', 1) # otherwise, simply return the adjusted exponent of self, as a # Decimal. Note that no attempt is made to fit the result @@ -4793,29 +4794,6 @@ tmp.exp = other.exp return op1, op2 -def _adjust_coefficients(op1, op2): - """Adjust op1, op2 so that op2.int * 10 > op1.int >= op2.int. - - Returns the adjusted op1, op2 as well as the change in op1.exp-op2.exp. - - Used on _WorkRep instances during division. - """ - adjust = 0 - # If op1 is smaller, make it larger - while op2.int > op1.int: - op1.int *= 10 - op1.exp -= 1 - adjust += 1 - - # If op2 is too small, make it larger - while op1.int >= (10 * op2.int): - op2.int *= 10 - op2.exp -= 1 - adjust -= 1 - - return op1, op2, adjust - - ##### Integer arithmetic functions used by ln, log10, exp and __pow__ ##### # This function from Tim Peters was taken from here: From buildbot at python.org Tue Sep 18 19:22:37 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 18 Sep 2007 17:22:37 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20070918172238.08ADF1E401B@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/828 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Wed Sep 19 00:18:02 2007 From: python-checkins at python.org (raymond.hettinger) Date: Wed, 19 Sep 2007 00:18:02 +0200 (CEST) Subject: [Python-checkins] r58197 - python/trunk/Doc/library/collections.rst Message-ID: <20070918221802.8DB031E4004@bag.python.org> Author: raymond.hettinger Date: Wed Sep 19 00:18:02 2007 New Revision: 58197 Modified: python/trunk/Doc/library/collections.rst Log: Cleanup docs for NamedTuple. Modified: python/trunk/Doc/library/collections.rst ============================================================================== --- python/trunk/Doc/library/collections.rst (original) +++ python/trunk/Doc/library/collections.rst Wed Sep 19 00:18:02 2007 @@ -360,9 +360,12 @@ .. _named-tuple-factory: -:func:`NamedTuple` datatype factory function --------------------------------------------- +:func:`NamedTuple` factory function +----------------------------------- +Named tuples assign meaning to each position in a tuple and allow for more readable, +self-documenting code. They can be used wherever regular tuples are used, and +they add the ability to access fields by name instead of position index. .. function:: NamedTuple(typename, fieldnames, [verbose]) @@ -372,94 +375,90 @@ helpful docstring (with typename and fieldnames) and a helpful :meth:`__repr__` method which lists the tuple contents in a ``name=value`` format. - .. versionadded:: 2.6 + The *fieldnames* are specified in a single string with each fieldname separated by + a space and/or comma. Any valid Python identifier may be used for a field name. + + If *verbose* is true, the *NamedTuple* call will print the class definition. - The *fieldnames* are specified in a single string and are separated by spaces - and/or commas. Any valid Python identifier may be used for a field name. + *NamedTuple* instances do not have per-instance dictionaries, so they are + lightweight, requiring no more memory than regular tuples. + + .. versionadded:: 2.6 - Example:: +Example:: - >>> Point = NamedTuple('Point', 'x y') - >>> Point.__doc__ # docstring for the new datatype - 'Point(x, y)' - >>> p = Point(11, y=22) # instantiate with positional or keyword arguments - >>> p[0] + p[1] # works just like the tuple (11, 22) - 33 - >>> x, y = p # unpacks just like a tuple - >>> x, y - (11, 22) - >>> p.x + p.y # fields also accessable by name - 33 - >>> p # readable __repr__ with name=value style - Point(x=11, y=22) - - The use cases are the same as those for tuples. The named factories assign - meaning to each tuple position and allow for more readable, self-documenting - code. Named tuples can also be used to assign field names to tuples returned - by the :mod:`csv` or :mod:`sqlite3` modules. For example:: - - from itertools import starmap - import csv - EmployeeRecord = NamedTuple('EmployeeRecord', 'name age title department paygrade') - for record in starmap(EmployeeRecord, csv.reader(open("employees.csv", "rb"))): - print record - - To cast an individual record stored as :class:`list`, :class:`tuple`, or some - other iterable type, use the star-operator [#]_ to unpack the values:: - - >>> Color = NamedTuple('Color', 'name code') - >>> m = dict(red=1, green=2, blue=3) - >>> print Color(*m.popitem()) - Color(name='blue', code=3) - - If *verbose* is true, the *NamedTuple* call will print the class definition:: - - >>> Point = NamedTuple('Point', 'x y', verbose=True) - class Point(tuple): - 'Point(x, y)' - __slots__ = () - __fields__ = ('x', 'y') - def __new__(cls, x, y): - return tuple.__new__(cls, (x, y)) - def __repr__(self): - return 'Point(x=%r, y=%r)' % self - def __replace__(self, field, value): - 'Return a new Point object replacing one field with a new value' - return Point(**dict(zip(('x', 'y'), self) + [(field, value)])) - x = property(itemgetter(0)) - y = property(itemgetter(1)) + >>> Point = NamedTuple('Point', 'x y', True) + class Point(tuple): + 'Point(x, y)' + __slots__ = () + __fields__ = ('x', 'y') + def __new__(cls, x, y): + return tuple.__new__(cls, (x, y)) + def __repr__(self): + return 'Point(x=%r, y=%r)' % self + def __replace__(self, field, value): + 'Return a new Point object replacing one field with a new value' + return Point(**dict(zip(('x', 'y'), self) + [(field, value)])) + x = property(itemgetter(0)) + y = property(itemgetter(1)) + + >>> p = Point(11, y=22) # instantiate with positional or keyword arguments + >>> p[0] + p[1] # indexable like the regular tuple (11, 22) + 33 + >>> x, y = p # unpack like a regular tuple + >>> x, y + (11, 22) + >>> p.x + p.y # fields also accessable by name + 33 + >>> p # readable __repr__ with a name=value style + Point(x=11, y=22) + +Named tuples are especially useful for assigning field names to result tuples returned +by the :mod:`csv` or :mod:`sqlite3` modules:: + + from itertools import starmap + import csv + EmployeeRecord = NamedTuple('EmployeeRecord', 'name age title department paygrade') + for emp in starmap(EmployeeRecord, csv.reader(open("employees.csv", "rb"))): + print emp.name, emp.title + +When casting a single record to a *NamedTuple*, use the star-operator [#]_ to unpack +the values:: + + >>> t = [11, 22] + >>> Point(*t) # the star-operator unpacks any iterable object + Point(x=11, y=22) In addition to the methods inherited from tuples, named tuples support an additonal method and an informational read-only attribute. .. method:: somenamedtuple.replace(field, value) - Return a new instance of the named tuple with *field* replaced with *value*. + Return a new instance of the named tuple replacing the named *field* with a new *value*:: - Examples:: - - >>> p = Point(x=11, y=22) + >>> p = Point(x=11, y=22) >>> p.__replace__('x', 33) Point(x=33, y=22) >>> for recordnum, record in inventory: ... inventory[recordnum] = record.replace('total', record.price * record.quantity) - .. attribute:: somenamedtuple.__fields__ Return a tuple of strings listing the field names. This is useful for introspection, - for converting a named tuple instance to a dictionary, and for creating new named tuple - types from existing types. - - Examples:: - - >>> dict(zip(p.__fields__, p)) # make a dictionary from a named tuple instance - {'y': 20, 'x': 10} + for converting a named tuple instance to a dictionary, and for combining named tuple + types to create new named tuple types:: - >>> ColorPoint = NamedTuple('ColorPoint', ' '.join(Point.__fields__) + ' color') - >>> ColorPoint(10, 20, 'red') - ColorPoint(x=10, y=20, color='red') + >>> p.__fields__ # view the field names + ('x', 'y') + >>> dict(zip(p.__fields__, p)) # convert to a dictionary + {'y': 22, 'x': 11} + + >>> Color = NamedTuple('Color', 'red green blue') + >>> pixel_fields = ' '.join(Point.__fields__ + Color.__fields__) # combine fields + >>> Pixel = NamedTuple('Pixel', pixel_fields) + >>> Pixel(11, 22, 128, 255, 0) + Pixel(x=11, y=22, red=128, green=255, blue=0)' .. rubric:: Footnotes From python-checkins at python.org Wed Sep 19 01:27:30 2007 From: python-checkins at python.org (thomas.wouters) Date: Wed, 19 Sep 2007 01:27:30 +0200 (CEST) Subject: [Python-checkins] r58198 - python/trunk/Objects/abstract.c Message-ID: <20070918232730.7334A1E400B@bag.python.org> Author: thomas.wouters Date: Wed Sep 19 01:27:30 2007 New Revision: 58198 Modified: python/trunk/Objects/abstract.c Log: Properly indent two lines. (Spotted because it caused merge conflicts in the py3k branch ;) Modified: python/trunk/Objects/abstract.c ============================================================================== --- python/trunk/Objects/abstract.c (original) +++ python/trunk/Objects/abstract.c Wed Sep 19 01:27:30 2007 @@ -2300,7 +2300,7 @@ } return ok; } - return recursive_isinstance(inst, cls, Py_GetRecursionLimit()); + return recursive_isinstance(inst, cls, Py_GetRecursionLimit()); } static int @@ -2374,7 +2374,7 @@ } return ok; } - return recursive_issubclass(derived, cls, Py_GetRecursionLimit()); + return recursive_issubclass(derived, cls, Py_GetRecursionLimit()); } From python-checkins at python.org Wed Sep 19 01:34:45 2007 From: python-checkins at python.org (sean.reifschneider) Date: Wed, 19 Sep 2007 01:34:45 +0200 (CEST) Subject: [Python-checkins] r58199 - python/trunk/Doc/library/cgi.rst Message-ID: <20070918233445.492AB1E4018@bag.python.org> Author: sean.reifschneider Date: Wed Sep 19 01:34:44 2007 New Revision: 58199 Modified: python/trunk/Doc/library/cgi.rst Log: issue1172: Documentation of "done" attribute in cgi module. Modified: python/trunk/Doc/library/cgi.rst ============================================================================== --- python/trunk/Doc/library/cgi.rst (original) +++ python/trunk/Doc/library/cgi.rst Wed Sep 19 01:34:44 2007 @@ -147,6 +147,11 @@ if not line: break linecount = linecount + 1 +If an error is encountered when obtaining the contents of an uploaded file +(for example, when the user interrupts the form submission by clicking on +a Back or Cancel button) the :attr:`done` attribute of the object for the +field will be set to the value -1. + The file upload draft standard entertains the possibility of uploading multiple files from one field (using a recursive :mimetype:`multipart/\*` encoding). When this occurs, the item will be a dictionary-like :class:`FieldStorage` item. From python-checkins at python.org Wed Sep 19 01:38:15 2007 From: python-checkins at python.org (sean.reifschneider) Date: Wed, 19 Sep 2007 01:38:15 +0200 (CEST) Subject: [Python-checkins] r58200 - python/branches/release25-maint/Doc/lib/libcgi.tex Message-ID: <20070918233815.E5A071E4004@bag.python.org> Author: sean.reifschneider Date: Wed Sep 19 01:38:15 2007 New Revision: 58200 Modified: python/branches/release25-maint/Doc/lib/libcgi.tex Log: issue1172: Documentation of "done" attribute in cgi module. Modified: python/branches/release25-maint/Doc/lib/libcgi.tex ============================================================================== --- python/branches/release25-maint/Doc/lib/libcgi.tex (original) +++ python/branches/release25-maint/Doc/lib/libcgi.tex Wed Sep 19 01:38:15 2007 @@ -162,6 +162,11 @@ linecount = linecount + 1 \end{verbatim} +If an error is encountered when obtaining the contents of an uploaded file +(for example, when the user interrupts the form submission by clicking on +a Back or Cancel button) the \member{done} attribute of the object for the +field will be set to the value -1. + The file upload draft standard entertains the possibility of uploading multiple files from one field (using a recursive \mimetype{multipart/*} encoding). When this occurs, the item will be From python-checkins at python.org Wed Sep 19 08:37:19 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 19 Sep 2007 08:37:19 +0200 (CEST) Subject: [Python-checkins] r58204 - python/trunk/Python/compile.c Message-ID: <20070919063720.1AEA01E50B1@bag.python.org> Author: georg.brandl Date: Wed Sep 19 08:37:19 2007 New Revision: 58204 Modified: python/trunk/Python/compile.c Log: Fix #1169: remove docstrings in functions for -OO. Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Wed Sep 19 08:37:19 2007 @@ -1336,7 +1336,7 @@ st = (stmt_ty)asdl_seq_GET(s->v.FunctionDef.body, 0); docstring = compiler_isdocstring(st); - if (docstring) + if (docstring && Py_OptimizeFlag < 2) first_const = st->v.Expr.value->v.Str.s; if (compiler_add_o(c, c->u->u_consts, first_const) < 0) { compiler_exit_scope(c); From python-checkins at python.org Wed Sep 19 08:37:27 2007 From: python-checkins at python.org (georg.brandl) Date: Wed, 19 Sep 2007 08:37:27 +0200 (CEST) Subject: [Python-checkins] r58205 - python/branches/release25-maint/Python/compile.c Message-ID: <20070919063727.94CA81E50B0@bag.python.org> Author: georg.brandl Date: Wed Sep 19 08:37:26 2007 New Revision: 58205 Modified: python/branches/release25-maint/Python/compile.c Log: Fix #1169: remove docstrings in functions for -OO. (backport from rev. 58204) Modified: python/branches/release25-maint/Python/compile.c ============================================================================== --- python/branches/release25-maint/Python/compile.c (original) +++ python/branches/release25-maint/Python/compile.c Wed Sep 19 08:37:26 2007 @@ -1983,7 +1983,7 @@ st = (stmt_ty)asdl_seq_GET(s->v.FunctionDef.body, 0); docstring = compiler_isdocstring(st); - if (docstring) + if (docstring && Py_OptimizeFlag < 2) first_const = st->v.Expr.value->v.Str.s; if (compiler_add_o(c, c->u->u_consts, first_const) < 0) { compiler_exit_scope(c); From buildbot at python.org Wed Sep 19 09:10:54 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 19 Sep 2007 07:10:54 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD 2.5 Message-ID: <20070919071054.B2C101E4005@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%202.5/builds/4 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: georg.brandl,sean.reifschneider BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Wed Sep 19 09:39:18 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 19 Sep 2007 07:39:18 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 2.5 Message-ID: <20070919073918.8AEBA1E4018@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%202.5/builds/66 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: georg.brandl,sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_timeout sincerely, -The Buildbot From python-checkins at python.org Wed Sep 19 09:52:56 2007 From: python-checkins at python.org (sean.reifschneider) Date: Wed, 19 Sep 2007 09:52:56 +0200 (CEST) Subject: [Python-checkins] r58206 - python/trunk/Lib/urllib.py Message-ID: <20070919075256.EB40C1E4006@bag.python.org> Author: sean.reifschneider Date: Wed Sep 19 09:52:56 2007 New Revision: 58206 Modified: python/trunk/Lib/urllib.py Log: issue1177: Ported Facundo's from urllib2 to urllib, accepting 2xx responses. Modified: python/trunk/Lib/urllib.py ============================================================================== --- python/trunk/Lib/urllib.py (original) +++ python/trunk/Lib/urllib.py Wed Sep 19 09:52:56 2007 @@ -340,7 +340,9 @@ # something went wrong with the HTTP status line raise IOError, ('http protocol error', 0, 'got a bad status line', None) - if errcode == 200: + # According to RFC 2616, "2xx" code indicates that the client's + # request was successfully received, understood, and accepted. + if not (200 <= errcode < 300): return addinfourl(fp, headers, "http:" + url) else: if data is None: From buildbot at python.org Wed Sep 19 10:13:43 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 19 Sep 2007 08:13:43 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 2.5 Message-ID: <20070919081343.A85931E400D@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/321 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: georg.brandl,sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/2.5.norwitz-tru64/build/Lib/test/test_socket.py", line 879, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place sincerely, -The Buildbot From buildbot at python.org Wed Sep 19 11:12:16 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 19 Sep 2007 09:12:16 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 2.5 Message-ID: <20070919091217.11BF11E401E@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%202.5/builds/44 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: georg.brandl,sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_resource.py", line 42, in f.close() IOError: [Errno 27] File too large make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Wed Sep 19 11:37:20 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 19 Sep 2007 09:37:20 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20070919093720.C276D1E400E@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/223 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 378, in writerThread self.doWrite(d, name, x, min(stop, x+step)) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 366, in doWrite txn.abort() DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: DB_NOTFOUND: No matching key/data pair found') Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 378, in writerThread self.doWrite(d, name, x, min(stop, x+step)) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 358, in doWrite d.put(key, self.makeData(key), txn) DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: fatal region error detected; run recovery') Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 426, in readerThread rec = c.next() DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: fatal region error detected; run recovery') Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 426, in readerThread rec = c.next() DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: fatal region error detected; run recovery') Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 426, in readerThread rec = c.next() DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run database recovery') Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 426, in readerThread rec = c.next() DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run database recovery') Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 426, in readerThread rec = c.next() DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: fatal region error detected; run recovery') Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 378, in writerThread self.doWrite(d, name, x, min(stop, x+step)) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/bsddb/test/test_thread.py", line 358, in doWrite d.put(key, self.makeData(key), txn) DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: fatal region error detected; run recovery') 1 test failed: test_bsddb3 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Wed Sep 19 16:02:04 2007 From: python-checkins at python.org (facundo.batista) Date: Wed, 19 Sep 2007 16:02:04 +0200 (CEST) Subject: [Python-checkins] r58207 - python/trunk/Misc/NEWS Message-ID: <20070919140204.3023A1E400B@bag.python.org> Author: facundo.batista Date: Wed Sep 19 16:02:03 2007 New Revision: 58207 Modified: python/trunk/Misc/NEWS Log: Annotated the correction to urllib.py, issue #1177 Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Sep 19 16:02:03 2007 @@ -373,7 +373,7 @@ - As specified in RFC 2616, an HTTP response like 2xx indicates that the client's request was successfully received, understood, and accepted. - Now in these cases no error is raised in urllib2. + Now in these cases no error is raised in urllib (issue #1177) and urllib2. - Bug #1290505: time.strptime's internal cache of locale information is now properly recreated when the locale is changed. From python-checkins at python.org Wed Sep 19 17:10:06 2007 From: python-checkins at python.org (facundo.batista) Date: Wed, 19 Sep 2007 17:10:06 +0200 (CEST) Subject: [Python-checkins] r58208 - in python/trunk: Lib/test/test_hash.py Objects/longobject.c Message-ID: <20070919151006.E66981E4014@bag.python.org> Author: facundo.batista Date: Wed Sep 19 17:10:06 2007 New Revision: 58208 Modified: python/trunk/Lib/test/test_hash.py python/trunk/Objects/longobject.c Log: Issue #1772851. Alters long.__hash__ from being *almost* completely predictable to being completely predictable. The value of hash(n) is unchanged for any n that's small enough to be representable as an int, and also unchanged for the vast majority of long integers n of reasonable size. Modified: python/trunk/Lib/test/test_hash.py ============================================================================== --- python/trunk/Lib/test/test_hash.py (original) +++ python/trunk/Lib/test/test_hash.py Wed Sep 19 17:10:06 2007 @@ -18,10 +18,21 @@ def test_numeric_literals(self): self.same_hash(1, 1L, 1.0, 1.0+0.0j) + self.same_hash(0, 0L, 0.0, 0.0+0.0j) + self.same_hash(-1, -1L, -1.0, -1.0+0.0j) + self.same_hash(-2, -2L, -2.0, -2.0+0.0j) def test_coerced_integers(self): self.same_hash(int(1), long(1), float(1), complex(1), int('1'), float('1.0')) + self.same_hash(int(-2**31), long(-2**31), float(-2**31)) + self.same_hash(int(1-2**31), long(1-2**31), float(1-2**31)) + self.same_hash(int(2**31-1), long(2**31-1), float(2**31-1)) + # for 64-bit platforms + self.same_hash(int(2**31), long(2**31), float(2**31)) + self.same_hash(int(-2**63), long(-2**63), float(-2**63)) + self.same_hash(int(1-2**63), long(1-2**63)) + self.same_hash(int(2**63-1), long(2**63-1)) def test_coerced_floats(self): self.same_hash(long(1.23e300), float(1.23e300)) Modified: python/trunk/Objects/longobject.c ============================================================================== --- python/trunk/Objects/longobject.c (original) +++ python/trunk/Objects/longobject.c Wed Sep 19 17:10:06 2007 @@ -1937,10 +1937,18 @@ i = -(i); } #define LONG_BIT_SHIFT (8*sizeof(long) - SHIFT) + /* The following loop produces a C long x such that (unsigned long)x + is congruent to the absolute value of v modulo ULONG_MAX. The + resulting x is nonzero if and only if v is. */ while (--i >= 0) { /* Force a native long #-bits (32 or 64) circular shift */ x = ((x << SHIFT) & ~MASK) | ((x >> LONG_BIT_SHIFT) & MASK); x += v->ob_digit[i]; + /* If the addition above overflowed (thinking of x as + unsigned), we compensate by incrementing. This preserves + the value modulo ULONG_MAX. */ + if ((unsigned long)x < v->ob_digit[i]) + x++; } #undef LONG_BIT_SHIFT x = x * sign; From buildbot at python.org Wed Sep 19 18:28:05 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 19 Sep 2007 16:28:05 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20070919162806.2B9621E4019@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/170 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Wed Sep 19 19:27:30 2007 From: python-checkins at python.org (thomas.wouters) Date: Wed, 19 Sep 2007 19:27:30 +0200 (CEST) Subject: [Python-checkins] r58209 - python/trunk/Lib/test/test_decimal.py Message-ID: <20070919172730.14F941E400B@bag.python.org> Author: thomas.wouters Date: Wed Sep 19 19:27:29 2007 New Revision: 58209 Modified: python/trunk/Lib/test/test_decimal.py Log: Fix obvious typo in threaded test. Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Wed Sep 19 19:27:29 2007 @@ -846,7 +846,7 @@ th2.start() self.finish1.wait() - self.finish1.wait() + self.finish2.wait() return if threading is None: From python-checkins at python.org Wed Sep 19 19:27:43 2007 From: python-checkins at python.org (thomas.wouters) Date: Wed, 19 Sep 2007 19:27:43 +0200 (CEST) Subject: [Python-checkins] r58210 - python/trunk/Python/ceval.c Message-ID: <20070919172743.E35FE1E400B@bag.python.org> Author: thomas.wouters Date: Wed Sep 19 19:27:43 2007 New Revision: 58210 Modified: python/trunk/Python/ceval.c Log: Whitespace cleanup. Modified: python/trunk/Python/ceval.c ============================================================================== --- python/trunk/Python/ceval.c (original) +++ python/trunk/Python/ceval.c Wed Sep 19 19:27:43 2007 @@ -437,7 +437,7 @@ Py_SetRecursionLimit(int new_limit) { recursion_limit = new_limit; - _Py_CheckRecursionLimit = recursion_limit; + _Py_CheckRecursionLimit = recursion_limit; } /* the macro Py_EnterRecursiveCall() only calls _Py_CheckRecursiveCall() @@ -464,7 +464,7 @@ where); return -1; } - _Py_CheckRecursionLimit = recursion_limit; + _Py_CheckRecursionLimit = recursion_limit; return 0; } @@ -802,11 +802,11 @@ Py_MakePendingCalls() above. */ if (--_Py_Ticker < 0) { - if (*next_instr == SETUP_FINALLY) { - /* Make the last opcode before - a try: finally: block uninterruptable. */ - goto fast_next_opcode; - } + if (*next_instr == SETUP_FINALLY) { + /* Make the last opcode before + a try: finally: block uninterruptable. */ + goto fast_next_opcode; + } _Py_Ticker = _Py_CheckInterval; tstate->tick_counter++; #ifdef WITH_TSC @@ -2602,7 +2602,7 @@ } /* pop frame */ - exit_eval_frame: +exit_eval_frame: Py_LeaveRecursiveCall(); tstate->frame = f->f_back; @@ -2837,9 +2837,9 @@ return PyGen_New(f); } - retval = PyEval_EvalFrameEx(f,0); + retval = PyEval_EvalFrameEx(f,0); - fail: /* Jump here from prelude on failure */ +fail: /* Jump here from prelude on failure */ /* decref'ing the frame can cause __del__ methods to get invoked, which can call back into Python. While we're done with the @@ -2848,7 +2848,7 @@ */ assert(tstate != NULL); ++tstate->recursion_depth; - Py_DECREF(f); + Py_DECREF(f); --tstate->recursion_depth; return retval; } @@ -3257,18 +3257,18 @@ represents a jump backwards, call the trace function. */ if ((frame->f_lasti < *instr_lb || frame->f_lasti >= *instr_ub)) { - int line; - PyAddrPair bounds; + int line; + PyAddrPair bounds; - line = PyCode_CheckLineNumber(frame->f_code, frame->f_lasti, - &bounds); - if (line >= 0) { + line = PyCode_CheckLineNumber(frame->f_code, frame->f_lasti, + &bounds); + if (line >= 0) { frame->f_lineno = line; result = call_trace(func, obj, frame, PyTrace_LINE, Py_None); - } - *instr_lb = bounds.ap_lower; - *instr_ub = bounds.ap_upper; + } + *instr_lb = bounds.ap_lower; + *instr_ub = bounds.ap_upper; } else if (frame->f_lasti <= *instr_prev) { result = call_trace(func, obj, frame, PyTrace_LINE, Py_None); @@ -3681,9 +3681,9 @@ PyObject *value = EXT_POP(*pp_stack); PyObject *key = EXT_POP(*pp_stack); if (PyDict_GetItem(kwdict, key) != NULL) { - PyErr_Format(PyExc_TypeError, - "%.200s%s got multiple values " - "for keyword argument '%.200s'", + PyErr_Format(PyExc_TypeError, + "%.200s%s got multiple values " + "for keyword argument '%.200s'", PyEval_GetFuncName(func), PyEval_GetFuncDesc(func), PyString_AsString(key)); @@ -3861,7 +3861,7 @@ PCALL(PCALL_OTHER); #endif result = PyObject_Call(func, callargs, kwdict); - ext_call_fail: +ext_call_fail: Py_XDECREF(callargs); Py_XDECREF(kwdict); Py_XDECREF(stararg); @@ -4132,7 +4132,7 @@ Py_INCREF(metaclass); } result = PyObject_CallFunctionObjArgs(metaclass, name, bases, methods, - NULL); + NULL); Py_DECREF(metaclass); if (result == NULL && PyErr_ExceptionMatches(PyExc_TypeError)) { /* A type error here likely means that the user passed @@ -4147,7 +4147,7 @@ PyObject *newmsg; newmsg = PyString_FromFormat( "Error when calling the metaclass bases\n" - " %s", + " %s", PyString_AS_STRING(pvalue)); if (newmsg != NULL) { Py_DECREF(pvalue); @@ -4221,8 +4221,8 @@ FILE *fp = PyFile_AsFile(prog); char *name = PyString_AsString(PyFile_Name(prog)); PyCompilerFlags cf; - if (name == NULL) - return -1; + if (name == NULL) + return -1; cf.cf_flags = 0; if (PyEval_MergeCompilerFlags(&cf)) v = PyRun_FileFlags(fp, name, Py_file_input, globals, From python-checkins at python.org Wed Sep 19 19:53:25 2007 From: python-checkins at python.org (facundo.batista) Date: Wed, 19 Sep 2007 19:53:25 +0200 (CEST) Subject: [Python-checkins] r58211 - in python/trunk/Lib: decimal.py test/test_decimal.py Message-ID: <20070919175325.543251E400B@bag.python.org> Author: facundo.batista Date: Wed Sep 19 19:53:25 2007 New Revision: 58211 Modified: python/trunk/Lib/decimal.py python/trunk/Lib/test/test_decimal.py Log: Issue #1772851. Optimization of __hash__ to behave better for big big numbers. Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Wed Sep 19 19:53:25 2007 @@ -766,10 +766,17 @@ if self._isnan(): raise TypeError('Cannot hash a NaN value.') return hash(str(self)) - i = int(self) - if self == Decimal(i): - return hash(i) - assert self.__nonzero__() # '-0' handled by integer case + if not self: + return 0 + if self._isinteger(): + op = _WorkRep(self.to_integral_value()) + # to make computation feasible for Decimals with large + # exponent, we use the fact that hash(n) == hash(m) for + # any two nonzero integers n and m such that (i) n and m + # have the same sign, and (ii) n is congruent to m modulo + # 2**64-1. So we can replace hash((-1)**s*c*10**e) with + # hash((-1)**s*c*pow(10, e, 2**64-1). + return hash((-1)**op.sign*op.int*pow(10, op.exp, 2**64-1)) return hash(str(self.normalize())) def as_tuple(self): Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Wed Sep 19 19:53:25 2007 @@ -910,6 +910,38 @@ def test_hash_method(self): #just that it's hashable hash(Decimal(23)) + + test_values = [Decimal(sign*(2**m + n)) + for m in [0, 14, 15, 16, 17, 30, 31, + 32, 33, 62, 63, 64, 65, 66] + for n in range(-10, 10) + for sign in [-1, 1]] + test_values.extend([ + Decimal("-0"), # zeros + Decimal("0.00"), + Decimal("-0.000"), + Decimal("0E10"), + Decimal("-0E12"), + Decimal("10.0"), # negative exponent + Decimal("-23.00000"), + Decimal("1230E100"), # positive exponent + Decimal("-4.5678E50"), + # a value for which hash(n) != hash(n % (2**64-1)) + # in Python pre-2.6 + Decimal(2**64 + 2**32 - 1), + # selection of values which fail with the old (before + # version 2.6) long.__hash__ + Decimal("1.634E100"), + Decimal("90.697E100"), + Decimal("188.83E100"), + Decimal("1652.9E100"), + Decimal("56531E100"), + ]) + + # check that hash(d) == hash(int(d)) for integral values + for value in test_values: + self.assertEqual(hash(value), hash(int(value))) + #the same hash that to an int self.assertEqual(hash(Decimal(23)), hash(23)) self.assertRaises(TypeError, hash, Decimal('NaN')) From python-checkins at python.org Wed Sep 19 20:09:19 2007 From: python-checkins at python.org (paul.dubois) Date: Wed, 19 Sep 2007 20:09:19 +0200 (CEST) Subject: [Python-checkins] r58212 - tracker/instances/python-dev/scripts/roundup-summary Message-ID: <20070919180919.08D6A1E400B@bag.python.org> Author: paul.dubois Date: Wed Sep 19 20:09:18 2007 New Revision: 58212 Modified: tracker/instances/python-dev/scripts/roundup-summary Log: Added patch count, detail. Modified: tracker/instances/python-dev/scripts/roundup-summary ============================================================================== --- tracker/instances/python-dev/scripts/roundup-summary (original) +++ tracker/instances/python-dev/scripts/roundup-summary Wed Sep 19 20:09:18 2007 @@ -40,6 +40,7 @@ usage = """%prog trackerHome [--mail mailTo] [--dates 'date1;date2'] [--brief] + [--text] # less likely [--resolved 'status1,status2'] [--status 'status1,status2'] @@ -112,8 +113,9 @@ db = instance.open('admin') # CUSTOMIZATION +columnWidth = 72 #for text report dateWidth = len(roundup.date.Date('2006-09-30').pretty(format=dateFormat)) -titleWidth = 72 #zero means no limit +titleWidth = columnWidth - dateWidth #zero means no limit durationWidth = len('9999 days') tableStyle = 'border="1" cellspacing="0" cellpadding="3"' @@ -128,21 +130,8 @@ else: return "" -# Additional filter(s) to use in picking out issues. -# Depends on the schema. -notThese = ('notices', 'faq', 'todo', 'feature', 'wish') -try: - priorityIDS = db.priority.getnodeids(None, retired=None) - priorityNames = [db.priority.get(p, 'name') for p in priorityIDS] - acceptablePriorities = [priorityIDS[i] for i in range(len(priorityIDS)) if \ - priorityNames[i] not in notThese] -except: #for example, priority is not in the schema - acceptablePriorities = [] - def F(**args): "args is the dictionary to return, with additions if desired." - if acceptablePriorities: - args['priority'] = acceptablePriorities return args @@ -160,13 +149,15 @@ # The 'Created or Repopened' table, text mode. createdTable = """ titles: - 'Title', titleWidth - dateWidth + 'Title', titleWidth 'Date', dateWidth '
', 0 'Status', len('CLOSED') 'Link', linkWidth 'Action', actionWidth 'By', userNameWidth + '
', len('CLOSED') + 'Keywords', columnWidth records: title (reopenedDate or creation).pretty(format=dateFormat) @@ -174,26 +165,30 @@ link(issueNumber) reopened or 'created' reopener or creator + keywords """ # The table of closed issues, text mode. closedTable = """ titles: - 'Title', titleWidth - durationWidth + 'Title', titleWidth 'Duration', durationWidth '
', len('CLOSED') 'Link', linkWidth 'By', userNameWidth + '
', len('CLOSED') + 'Keywords', columnWidth records: title formatDuration(duration) link(issueNumber) actor + keywords """ # The table of most discussed issues, text mode. discussedTable = """ titles: 'N', -3 - 'Title', titleWidth - durationWidth + 'Title', columnWidth - durationWidth 'Duration', durationWidth '
', 0 'Status', statusWidth @@ -216,12 +211,14 @@ 'Date', dateWidth 'Action', actionWidth 'By', userNameWidth + 'Keywords', 15 records: hlink(issueNumber, title) closedOrBlank(statusID) (reopenedDate or creation).pretty(format=dateFormat) reopened or 'created' reopener or creator + keywords """ # The table of closed issues, html mode. htmlClosedTable = """ @@ -229,10 +226,12 @@ 'Title', 0 'By', userNameWidth 'Duration', durationWidth + 'Keywords', 15 records: hlink(issueNumber, title) actor formatDuration(duration) + keywords """ # The table of most discussed issues, text mode. htmlDiscussedTable = """ @@ -248,8 +247,31 @@ formatDuration(duration) """ ### END CUSTOMIZATION -# well, except you might want to add to this...locals in this -# routine are usable in the 'records' section of tables. +# well, except you might want to add to this...locals in getIssueAttributes +# are usable in the 'records' section of tables. +# Keywords +patchID = db.keyword.lookup('patch') +keywordIDS = db.keyword.getnodeids(False) +keywordsDict = {} +for id in keywordIDS: + keywordsDict[id] = db.keyword.get(id, 'name') + +def isPatch(issueID): + keywordIDS = db.issue.get(issueID, 'keywords') + return patchID in keywordIDS + +def getKeywordString (issueID): + keywordIDS = db.issue.get(issueID, 'keywords') + sep = '' + keywords = '' + for id in keywordIDS: + try: + k = keywordsDict[id] + keywords += (sep + k) + sep = ', ' + except KeyError: #retired kw + pass + return keywords def getIssueAttributes (issueID): """Return dictionaries with the issue's title, etc. @@ -267,6 +289,7 @@ statusID = None actorID = None activity = None + keywords = getKeywordString(issueID) # programming note: # the journal records the OLD value of the status in the data field @@ -589,7 +612,9 @@ (nOpen+nClosed)-(nOpenOld+nClosedOld)) print >>body, '

' print >>body, "

" - print >>body, '

' + print >>body, "Open issues with patches: %5d" % nPatch + print >>body, '

' + print >>body, '

' print >>body, "Average duration of open issues:", "%3.0f" % averageDuration, "days." print >>body, '

' print >>body, "

" @@ -627,6 +652,8 @@ (nOpen, nOpen-nOpenOld, nClosed, nClosed-nClosedOld, (nOpen+nClosed), (nOpen+nClosed)-(nOpenOld+nClosedOld)) print >>body + print >>body, "Open issues with patches: %5d" % nPatch + print >>body print >>body, "Average duration of open issues:", "%3.0f" % averageDuration, "days." print >>body, "Median duration of open issues:", "%3.0f" % medianDuration, "days." print >>body @@ -702,7 +729,6 @@ ignoredStatuses = [s.strip() for s in options.ignore.split(',')] if options.debug: print >>bugfile, "from,to", from_value, to_value - print >>bugfile, 'acceptablePriorities', acceptablePriorities print >>bugfile, 'ignoredStatuses', ignoredStatuses # ...audit @@ -824,9 +850,16 @@ nTotalOld = len(earlyIssueIDS) nClosed = len(closedIssueIDS) nClosedOld = len(oldClosedIssueIDS) + nOpen = nTotal - nClosed nOpenOld = nTotalOld - nClosedOld +nPatch = 0 +for id in allIssueIDS: + if id in closedIssueIDS: continue + if isPatch(id): + nPatch += 1 + for sid in statusIDS: IDS = db.issue.filter(None, F(creation=whole_period, status=sid)) IDSOld = db.issue.filter(None, F(creation=early_period, status=sid)) From python-checkins at python.org Thu Sep 20 05:03:43 2007 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 20 Sep 2007 05:03:43 +0200 (CEST) Subject: [Python-checkins] r58216 - python/trunk/Doc/library/collections.rst Message-ID: <20070920030343.E69F31E4007@bag.python.org> Author: raymond.hettinger Date: Thu Sep 20 05:03:43 2007 New Revision: 58216 Modified: python/trunk/Doc/library/collections.rst Log: Fit nits Modified: python/trunk/Doc/library/collections.rst ============================================================================== --- python/trunk/Doc/library/collections.rst (original) +++ python/trunk/Doc/library/collections.rst Thu Sep 20 05:03:43 2007 @@ -360,8 +360,8 @@ .. _named-tuple-factory: -:func:`NamedTuple` factory function ------------------------------------ +:func:`NamedTuple` Factory Function for Tuples with Named Fields +---------------------------------------------------------------- Named tuples assign meaning to each position in a tuple and allow for more readable, self-documenting code. They can be used wherever regular tuples are used, and @@ -376,12 +376,12 @@ method which lists the tuple contents in a ``name=value`` format. The *fieldnames* are specified in a single string with each fieldname separated by - a space and/or comma. Any valid Python identifier may be used for a field name. + a space and/or comma. Any valid Python identifier may be used for a fieldname. - If *verbose* is true, the *NamedTuple* call will print the class definition. + If *verbose* is true, will print the class definition. *NamedTuple* instances do not have per-instance dictionaries, so they are - lightweight, requiring no more memory than regular tuples. + lightweight and require no more memory than regular tuples. .. versionadded:: 2.6 @@ -434,7 +434,9 @@ .. method:: somenamedtuple.replace(field, value) - Return a new instance of the named tuple replacing the named *field* with a new *value*:: + Return a new instance of the named tuple replacing the named *field* with a new *value*: + +:: >>> p = Point(x=11, y=22) >>> p.__replace__('x', 33) @@ -447,7 +449,9 @@ Return a tuple of strings listing the field names. This is useful for introspection, for converting a named tuple instance to a dictionary, and for combining named tuple - types to create new named tuple types:: + types to create new named tuple types: + +:: >>> p.__fields__ # view the field names ('x', 'y') From python-checkins at python.org Thu Sep 20 10:45:13 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 20 Sep 2007 10:45:13 +0200 (CEST) Subject: [Python-checkins] r58217 - in python/trunk/Doc: library/decimal.rst tutorial/inputoutput.rst Message-ID: <20070920084513.508D01E4007@bag.python.org> Author: georg.brandl Date: Thu Sep 20 10:44:59 2007 New Revision: 58217 Modified: python/trunk/Doc/library/decimal.rst python/trunk/Doc/tutorial/inputoutput.rst Log: alternate -> alternative. Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Thu Sep 20 10:44:59 2007 @@ -984,7 +984,7 @@ The usual approach to working with decimals is to create :class:`Decimal` instances and then apply arithmetic operations which take place within the -current context for the active thread. An alternate approach is to use context +current context for the active thread. An alternative approach is to use context methods for calculating within a specific context. The methods are similar to those for the :class:`Decimal` class and are only briefly recounted here. Modified: python/trunk/Doc/tutorial/inputoutput.rst ============================================================================== --- python/trunk/Doc/tutorial/inputoutput.rst (original) +++ python/trunk/Doc/tutorial/inputoutput.rst Thu Sep 20 10:44:59 2007 @@ -250,7 +250,7 @@ >>> f.readlines() ['This is the first line of the file.\n', 'Second line of the file\n'] -An alternate approach to reading lines is to loop over the file object. This is +An alternative approach to reading lines is to loop over the file object. This is memory efficient, fast, and leads to simpler code:: >>> for line in f: From python-checkins at python.org Thu Sep 20 18:06:07 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 20 Sep 2007 18:06:07 +0200 (CEST) Subject: [Python-checkins] r58218 - in python/trunk: Lib/cgi.py Misc/NEWS Message-ID: <20070920160607.828301E401B@bag.python.org> Author: georg.brandl Date: Thu Sep 20 18:06:07 2007 New Revision: 58218 Modified: python/trunk/Lib/cgi.py python/trunk/Misc/NEWS Log: Patch #1541463: optimize performance of cgi.FieldStorage operations. Modified: python/trunk/Lib/cgi.py ============================================================================== --- python/trunk/Lib/cgi.py (original) +++ python/trunk/Lib/cgi.py Thu Sep 20 18:06:07 2007 @@ -607,31 +607,27 @@ """Dictionary style keys() method.""" if self.list is None: raise TypeError, "not indexable" - keys = [] - for item in self.list: - if item.name not in keys: keys.append(item.name) - return keys + return list(set(item.name for item in self.list)) def has_key(self, key): """Dictionary style has_key() method.""" if self.list is None: raise TypeError, "not indexable" - for item in self.list: - if item.name == key: return True - return False + return any(item.name == key for item in self.list) def __contains__(self, key): """Dictionary style __contains__ method.""" if self.list is None: raise TypeError, "not indexable" - for item in self.list: - if item.name == key: return True - return False + return any(item.name == key for item in self.list) def __len__(self): """Dictionary style len(x) support.""" return len(self.keys()) + def __nonzero__(self): + return bool(self.list) + def read_urlencoded(self): """Internal: read data in query string format.""" qs = self.fp.read(self.length) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Sep 20 18:06:07 2007 @@ -260,6 +260,8 @@ Library ------- +- Patch #1541463: optimize performance of cgi.FieldStorage operations. + - Decimal is fully updated to the latest Decimal Specification (v1.66). - Bug #1153: repr.repr() now doesn't require set and dictionary items From python-checkins at python.org Thu Sep 20 18:45:27 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 20 Sep 2007 18:45:27 +0200 (CEST) Subject: [Python-checkins] r58219 - python/trunk/Doc/library/stdtypes.rst Message-ID: <20070920164527.E9DBD1E4009@bag.python.org> Author: georg.brandl Date: Thu Sep 20 18:45:27 2007 New Revision: 58219 Modified: python/trunk/Doc/library/stdtypes.rst Log: #1176: document that string methods don't take keyword args. Modified: python/trunk/Doc/library/stdtypes.rst ============================================================================== --- python/trunk/Doc/library/stdtypes.rst (original) +++ python/trunk/Doc/library/stdtypes.rst Thu Sep 20 18:45:27 2007 @@ -660,7 +660,9 @@ .. index:: pair: string; methods Below are listed the string methods which both 8-bit strings and Unicode objects -support. In addition, Python's strings support the sequence type methods +support. Note that none of these methods take keyword arguments. + +In addition, Python's strings support the sequence type methods described in the :ref:`typesseq` section. To output formatted strings use template strings or the ``%`` operator described in the :ref:`string-formatting` section. Also, see the :mod:`re` module for From python-checkins at python.org Thu Sep 20 19:35:10 2007 From: python-checkins at python.org (thomas.wouters) Date: Thu, 20 Sep 2007 19:35:10 +0200 (CEST) Subject: [Python-checkins] r58220 - python/trunk/Python/ceval.c Message-ID: <20070920173510.915391E4008@bag.python.org> Author: thomas.wouters Date: Thu Sep 20 19:35:10 2007 New Revision: 58220 Modified: python/trunk/Python/ceval.c Log: Try harder to stay within the 79-column limit. There's still two places that go (way) over, but those are harder to fix without suffering in readability. Modified: python/trunk/Python/ceval.c ============================================================================== --- python/trunk/Python/ceval.c (original) +++ python/trunk/Python/ceval.c Thu Sep 20 19:35:10 2007 @@ -28,8 +28,9 @@ typedef unsigned long long uint64; #if defined(__ppc__) /* <- Don't know if this is the correct symbol; this - section should work for GCC on any PowerPC platform, - irrespective of OS. POWER? Who knows :-) */ + section should work for GCC on any PowerPC + platform, irrespective of OS. + POWER? Who knows :-) */ #define READ_TIMESTAMP(var) ppc_getcounter(&var) @@ -93,7 +94,8 @@ static PyObject * fast_function(PyObject *, PyObject ***, int, int, int); static PyObject * do_call(PyObject *, PyObject ***, int, int); static PyObject * ext_do_call(PyObject *, PyObject ***, int, int, int); -static PyObject * update_keyword_args(PyObject *, int, PyObject ***,PyObject *); +static PyObject * update_keyword_args(PyObject *, int, PyObject ***, + PyObject *); static PyObject * update_star_args(int, int, PyObject *, PyObject ***); static PyObject * load_args(PyObject ***, int); #define CALL_FLAG_VAR 1 @@ -504,7 +506,8 @@ PyObject * PyEval_EvalFrame(PyFrameObject *f) { /* This is for backward compatibility with extension modules that - used this API; core interpreter code should call PyEval_EvalFrameEx() */ + used this API; core interpreter code should call + PyEval_EvalFrameEx() */ return PyEval_EvalFrameEx(f, 0); } @@ -514,7 +517,7 @@ #ifdef DXPAIRS int lastopcode = 0; #endif - register PyObject **stack_pointer; /* Next free slot in value stack */ + register PyObject **stack_pointer; /* Next free slot in value stack */ register unsigned char *next_instr; register int opcode; /* Current opcode */ register int oparg; /* Current opcode argument, if any */ @@ -607,10 +610,10 @@ #define JUMPBY(x) (next_instr += (x)) /* OpCode prediction macros - Some opcodes tend to come in pairs thus making it possible to predict - the second code when the first is run. For example, COMPARE_OP is often - followed by JUMP_IF_FALSE or JUMP_IF_TRUE. And, those opcodes are often - followed by a POP_TOP. + Some opcodes tend to come in pairs thus making it possible to + predict the second code when the first is run. For example, + COMPARE_OP is often followed by JUMP_IF_FALSE or JUMP_IF_TRUE. And, + those opcodes are often followed by a POP_TOP. Verifying the prediction costs a single high-speed test of register variable against a constant. If the pairing was good, then the @@ -657,11 +660,13 @@ #define PUSH(v) { (void)(BASIC_PUSH(v), \ lltrace && prtrace(TOP(), "push")); \ assert(STACK_LEVEL() <= co->co_stacksize); } -#define POP() ((void)(lltrace && prtrace(TOP(), "pop")), BASIC_POP()) +#define POP() ((void)(lltrace && prtrace(TOP(), "pop")), \ + BASIC_POP()) #define STACKADJ(n) { (void)(BASIC_STACKADJ(n), \ lltrace && prtrace(TOP(), "stackadj")); \ assert(STACK_LEVEL() <= co->co_stacksize); } -#define EXT_POP(STACK_POINTER) (lltrace && prtrace((STACK_POINTER)[-1], "ext_pop"), *--(STACK_POINTER)) +#define EXT_POP(STACK_POINTER) (lltrace && prtrace((STACK_POINTER)[-1], \ + "ext_pop"), *--(STACK_POINTER)) #else #define PUSH(v) BASIC_PUSH(v) #define POP() BASIC_POP() @@ -1696,7 +1701,8 @@ why == WHY_CONTINUE) retval = POP(); } - else if (PyExceptionClass_Check(v) || PyString_Check(v)) { + else if (PyExceptionClass_Check(v) || + PyString_Check(v)) { w = POP(); u = POP(); PyErr_Restore(v, w, u); @@ -1745,7 +1751,8 @@ if ((x = f->f_locals) != NULL) { if ((err = PyObject_DelItem(x, w)) != 0) format_exc_check_arg(PyExc_NameError, - NAME_ERROR_MSG ,w); + NAME_ERROR_MSG, + w); break; } PyErr_Format(PyExc_SystemError, @@ -1756,8 +1763,10 @@ PREDICTED_WITH_ARG(UNPACK_SEQUENCE); case UNPACK_SEQUENCE: v = POP(); - if (PyTuple_CheckExact(v) && PyTuple_GET_SIZE(v) == oparg) { - PyObject **items = ((PyTupleObject *)v)->ob_item; + if (PyTuple_CheckExact(v) && + PyTuple_GET_SIZE(v) == oparg) { + PyObject **items = \ + ((PyTupleObject *)v)->ob_item; while (oparg--) { w = items[oparg]; Py_INCREF(w); @@ -1765,15 +1774,17 @@ } Py_DECREF(v); continue; - } else if (PyList_CheckExact(v) && PyList_GET_SIZE(v) == oparg) { - PyObject **items = ((PyListObject *)v)->ob_item; + } else if (PyList_CheckExact(v) && + PyList_GET_SIZE(v) == oparg) { + PyObject **items = \ + ((PyListObject *)v)->ob_item; while (oparg--) { w = items[oparg]; Py_INCREF(w); PUSH(w); } } else if (unpack_iterable(v, oparg, - stack_pointer + oparg)) { + stack_pointer + oparg)) { stack_pointer += oparg; } else { /* unpack_iterable() raised an exception */ @@ -1831,7 +1842,8 @@ else { x = PyObject_GetItem(v, w); if (x == NULL && PyErr_Occurred()) { - if (!PyErr_ExceptionMatches(PyExc_KeyError)) + if (!PyErr_ExceptionMatches( + PyExc_KeyError)) break; PyErr_Clear(); } @@ -1843,7 +1855,7 @@ if (x == NULL) { format_exc_check_arg( PyExc_NameError, - NAME_ERROR_MSG ,w); + NAME_ERROR_MSG, w); break; } } @@ -1944,13 +1956,10 @@ UNBOUNDLOCAL_ERROR_MSG, v); } else { - v = PyTuple_GET_ITEM( - co->co_freevars, - oparg - PyTuple_GET_SIZE(co->co_cellvars)); - format_exc_check_arg( - PyExc_NameError, - UNBOUNDFREE_ERROR_MSG, - v); + v = PyTuple_GET_ITEM(co->co_freevars, oparg - + PyTuple_GET_SIZE(co->co_cellvars)); + format_exc_check_arg(PyExc_NameError, + UNBOUNDFREE_ERROR_MSG, v); } break; @@ -2177,7 +2186,8 @@ continue; } if (PyErr_Occurred()) { - if (!PyErr_ExceptionMatches(PyExc_StopIteration)) + if (!PyErr_ExceptionMatches( + PyExc_StopIteration)) break; PyErr_Clear(); } @@ -2203,9 +2213,10 @@ case SETUP_LOOP: case SETUP_EXCEPT: case SETUP_FINALLY: - /* NOTE: If you add any new block-setup opcodes that are - not try/except/finally handlers, you may need to - update the PyGen_NeedsFinalizing() function. */ + /* NOTE: If you add any new block-setup opcodes that + are not try/except/finally handlers, you may need + to update the PyGen_NeedsFinalizing() function. + */ PyFrame_BlockSetup(f, opcode, INSTR_OFFSET() + oparg, STACK_LEVEL()); @@ -4001,10 +4012,9 @@ if (PyString_Check(exc)) { int ret_val; ret_val = PyErr_WarnEx( - PyExc_DeprecationWarning, - "catching of string " - "exceptions is " - "deprecated", 1); + PyExc_DeprecationWarning, + "catching of string " + "exceptions is deprecated", 1); if (ret_val == -1) return NULL; } @@ -4016,8 +4026,7 @@ ret_val = PyErr_WarnEx( PyExc_DeprecationWarning, "catching of string " - "exceptions is deprecated", - 1); + "exceptions is deprecated", 1); if (ret_val == -1) return NULL; } @@ -4295,8 +4304,9 @@ if (v->ob_refcnt == 2) { /* In the common case, there are 2 references to the value * stored in 'variable' when the += is performed: one on the - * value stack (in 'v') and one still stored in the 'variable'. - * We try to delete the variable now to reduce the refcnt to 1. + * value stack (in 'v') and one still stored in the + * 'variable'. We try to delete the variable now to reduce + * the refcnt to 1. */ switch (*next_instr) { case STORE_FAST: @@ -4309,7 +4319,8 @@ } case STORE_DEREF: { - PyObject **freevars = f->f_localsplus + f->f_code->co_nlocals; + PyObject **freevars = (f->f_localsplus + + f->f_code->co_nlocals); PyObject *c = freevars[PEEKARG()]; if (PyCell_GET(c) == v) PyCell_Set(c, NULL); @@ -4337,10 +4348,10 @@ */ if (_PyString_Resize(&v, new_len) != 0) { /* XXX if _PyString_Resize() fails, 'v' has been - * deallocated so it cannot be put back into 'variable'. - * The MemoryError is raised when there is no value in - * 'variable', which might (very remotely) be a cause - * of incompatibilities. + * deallocated so it cannot be put back into + * 'variable'. The MemoryError is raised when there + * is no value in 'variable', which might (very + * remotely) be a cause of incompatibilities. */ return NULL; } From buildbot at python.org Thu Sep 20 19:44:26 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 20 Sep 2007 17:44:26 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD trunk Message-ID: <20070920174426.3B5D01E4008@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%20trunk/builds/41 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,thomas.wouters BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Thu Sep 20 19:57:59 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 20 Sep 2007 19:57:59 +0200 (CEST) Subject: [Python-checkins] r58221 - in python/trunk: Doc/library/os.rst Lib/os.py Message-ID: <20070920175759.A65071E4008@bag.python.org> Author: georg.brandl Date: Thu Sep 20 19:57:59 2007 New Revision: 58221 Modified: python/trunk/Doc/library/os.rst python/trunk/Lib/os.py Log: Patch #1181: add os.environ.clear() method. Modified: python/trunk/Doc/library/os.rst ============================================================================== --- python/trunk/Doc/library/os.rst (original) +++ python/trunk/Doc/library/os.rst Thu Sep 20 19:57:59 2007 @@ -115,9 +115,13 @@ passed to the appropriate process-creation functions to cause child processes to use a modified environment. - If the platform supports the :func:`unsetenv` function, you can delete items in + If the platform supports the :func:`unsetenv` function, you can delete items in this mapping to unset environment variables. :func:`unsetenv` will be called - automatically when an item is deleted from ``os.environ``. + automatically when an item is deleted from ``os.environ``, and when + :meth:`os.environ.clear` is called. + + .. versionchanged:: 2.6 + Also unset environment variables when calling :meth:`os.environ.clear`. .. function:: chdir(path) Modified: python/trunk/Lib/os.py ============================================================================== --- python/trunk/Lib/os.py (original) +++ python/trunk/Lib/os.py Thu Sep 20 19:57:59 2007 @@ -446,6 +446,10 @@ def __delitem__(self, key): unsetenv(key) del self.data[key.upper()] + def clear(self): + for key in self.data.keys(): + unsetenv(key) + del self.data[key] def has_key(self, key): return key.upper() in self.data def __contains__(self, key): @@ -503,6 +507,10 @@ def __delitem__(self, key): unsetenv(key) del self.data[key] + def clear(self): + for key in self.data.keys(): + unsetenv(key) + del self.data[key] def copy(self): return dict(self) From buildbot at python.org Thu Sep 20 20:39:24 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 20 Sep 2007 18:39:24 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070920183924.A23641E4008@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/67 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,thomas.wouters BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_socket_ssl sincerely, -The Buildbot From buildbot at python.org Thu Sep 20 20:46:45 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 20 Sep 2007 18:46:45 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20070920184645.A03E31E4013@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/1904 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Fri Sep 21 08:33:28 2007 From: python-checkins at python.org (sean.reifschneider) Date: Fri, 21 Sep 2007 08:33:28 +0200 (CEST) Subject: [Python-checkins] r58225 - python/trunk/Makefile.pre.in Message-ID: <20070921063328.7C8CC1E400B@bag.python.org> Author: sean.reifschneider Date: Fri Sep 21 08:33:28 2007 New Revision: 58225 Modified: python/trunk/Makefile.pre.in Log: Issue1704287: "make install" fails unless you do "make" first. Make oldsharedmods and sharedmods in "libinstall". Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Fri Sep 21 08:33:28 2007 @@ -334,7 +334,8 @@ # Rules # Default target -all: $(BUILDPYTHON) oldsharedmods sharedmods +all: build_all +build_all: $(BUILDPYTHON) oldsharedmods sharedmods # Build the interpreter $(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) @@ -729,7 +730,7 @@ distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \ setuptools setuptools/command setuptools/tests setuptools.egg-info \ curses $(MACHDEPS) -libinstall: $(BUILDPYTHON) $(srcdir)/Lib/$(PLATDIR) +libinstall: build_all $(srcdir)/Lib/$(PLATDIR) @for i in $(SCRIPTDIR) $(LIBDEST); \ do \ if test ! -d $(DESTDIR)$$i; then \ @@ -1090,7 +1091,7 @@ Python/thread.o: @THREADHEADERS@ # Declare targets that aren't real files -.PHONY: all sharedmods oldsharedmods test quicktest memtest +.PHONY: all build_all sharedmods oldsharedmods test quicktest memtest .PHONY: install altinstall oldsharedinstall bininstall altbininstall .PHONY: maninstall libinstall inclinstall libainstall sharedinstall .PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure From buildbot at python.org Fri Sep 21 09:26:27 2007 From: buildbot at python.org (buildbot at python.org) Date: Fri, 21 Sep 2007 07:26:27 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20070921072627.53B2F1E400E@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/230 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: sean.reifschneider BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_xmlrpc make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Fri Sep 21 11:44:35 2007 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 21 Sep 2007 05:44:35 -0400 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20070921094435.GA7922@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 /tmp/python-test/local/lib/python2.6/bsddb/test/test_1413192.py:32: RuntimeWarning: DBTxn aborted in destructor. No prior commit() or abort(). del self.the_txn test_buffer test_bufio test_bz2 test_cProfile test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd_line test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_plistlib skipped -- No module named plistlib test_poll test_popen [7360 refs] [7360 refs] [7360 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [7735 refs] [7735 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:97: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:63: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test test_socket_ssl failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py", line 30, in testBasic f = urllib.urlopen('https://sf.net') File "/tmp/python-test/local/lib/python2.6/urllib.py", line 82, in urlopen return opener.open(url) File "/tmp/python-test/local/lib/python2.6/urllib.py", line 198, in open return getattr(self, name)(url) File "/tmp/python-test/local/lib/python2.6/urllib.py", line 442, in open_https return self.http_error(url, fp, errcode, errmsg, headers) File "/tmp/python-test/local/lib/python2.6/urllib.py", line 362, in http_error result = method(url, fp, errcode, errmsg, headers) File "/tmp/python-test/local/lib/python2.6/urllib.py", line 625, in http_error_302 data) File "/tmp/python-test/local/lib/python2.6/urllib.py", line 640, in redirect_internal return self.open(newurl) File "/tmp/python-test/local/lib/python2.6/urllib.py", line 198, in open return getattr(self, name)(url) File "/tmp/python-test/local/lib/python2.6/urllib.py", line 437, in open_https 'got a bad status line', None) IOError: ('http protocol error', 0, 'got a bad status line', None) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7355 refs] [7353 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7353 refs] [8966 refs] [7571 refs] [7356 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] . [7355 refs] [7355 refs] this bit of output is from a test of stdout in a different process ... [7355 refs] [7355 refs] [7571 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7355 refs] [7355 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7362 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 307 tests OK. 1 test failed: test_socket_ssl 21 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_plistlib test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [516436 refs] From python-checkins at python.org Sat Sep 22 06:37:49 2007 From: python-checkins at python.org (brett.cannon) Date: Sat, 22 Sep 2007 06:37:49 +0200 (CEST) Subject: [Python-checkins] r58229 - in sandbox/trunk/import_in_py: Py3K/_importlib.py _importlib.py Message-ID: <20070922043749.54C3A1E400D@bag.python.org> Author: brett.cannon Date: Sat Sep 22 06:37:49 2007 New Revision: 58229 Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py sandbox/trunk/import_in_py/_importlib.py Log: Fix the temporary __all__ setting to not overwrite __name__ and such in importlib when it performs is ``import *``. Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/_importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/_importlib.py Sat Sep 22 06:37:49 2007 @@ -973,4 +973,4 @@ # XXX Eventually replace with a proper __all__ value (i.e., don't expose os # replacements but do expose _ExtensionFileLoader, etc. for testing). -__all__ = list(globals().keys()) +__all__ = [obj for obj in globals().keys() if not obj.startswith('__')] Modified: sandbox/trunk/import_in_py/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/_importlib.py (original) +++ sandbox/trunk/import_in_py/_importlib.py Sat Sep 22 06:37:49 2007 @@ -973,4 +973,4 @@ # XXX Eventually replace with a proper __all__ value (i.e., don't expose os # replacements but do expose _ExtensionFileLoader, etc. for testing). -__all__ = globals().keys() +__all__ = [name for name in globals().keys() if name[:2] not in ('__', '_[')] From python-checkins at python.org Sat Sep 22 10:23:41 2007 From: python-checkins at python.org (georg.brandl) Date: Sat, 22 Sep 2007 10:23:41 +0200 (CEST) Subject: [Python-checkins] r58231 - peps/trunk/pep-3100.txt Message-ID: <20070922082341.46E211E400F@bag.python.org> Author: georg.brandl Date: Sat Sep 22 10:23:41 2007 New Revision: 58231 Modified: peps/trunk/pep-3100.txt Log: Update removed modules list. Modified: peps/trunk/pep-3100.txt ============================================================================== --- peps/trunk/pep-3100.txt (original) +++ peps/trunk/pep-3100.txt Sat Sep 22 10:23:41 2007 @@ -216,17 +216,11 @@ ``mimetools``, ``multifile``, ``rfc822``, - ``string``, - [to do] - - ``mpz``, - ``posixfile``, - ``regsub``, - ``rgbimage``, ``sha``, - ``statcache``, - ``sv``, - ``TERMIOS``, - ``timing`` + ``md5``, + [to do] + - ``mpz``, ``posixfile``, ``regsub``, ``rgbimage``, ``statcache``, + ``sv``, ``TERMIOS``, ``timing`` [done] - ``cfmfile``, ``gopherlib``, ``md5``, ``MimeWriter``, ``mimify`` [done] - ``cl``, ``sets``, ``xreadlines``, ``rotor``, ``whrandom`` [done] + Everything in lib-old [#pep4]_ [done] From python-checkins at python.org Sat Sep 22 22:18:03 2007 From: python-checkins at python.org (guido.van.rossum) Date: Sat, 22 Sep 2007 22:18:03 +0200 (CEST) Subject: [Python-checkins] r58232 - in python/trunk: Lib/test/test_univnewlines.py Objects/fileobject.c Message-ID: <20070922201804.2DC631E400F@bag.python.org> Author: guido.van.rossum Date: Sat Sep 22 22:18:03 2007 New Revision: 58232 Modified: python/trunk/Lib/test/test_univnewlines.py python/trunk/Objects/fileobject.c Log: Patch # 188 by Philip Jenvey. Make tell() mark CRLF as a newline. With unit test. Modified: python/trunk/Lib/test/test_univnewlines.py ============================================================================== --- python/trunk/Lib/test/test_univnewlines.py (original) +++ python/trunk/Lib/test/test_univnewlines.py Sat Sep 22 22:18:03 2007 @@ -105,6 +105,13 @@ NEWLINE = '\r\n' DATA = DATA_CRLF + def test_tell(self): + fp = open(test_support.TESTFN, self.READMODE) + self.assertEqual(repr(fp.newlines), repr(None)) + data = fp.readline() + pos = fp.tell() + self.assertEqual(repr(fp.newlines), repr(self.NEWLINE)) + class TestMixedNewlines(TestGenericUnivNewlines): NEWLINE = ('\r', '\n') DATA = DATA_MIXED Modified: python/trunk/Objects/fileobject.c ============================================================================== --- python/trunk/Objects/fileobject.c (original) +++ python/trunk/Objects/fileobject.c Sat Sep 22 22:18:03 2007 @@ -718,6 +718,7 @@ int c; c = GETC(f->f_fp); if (c == '\n') { + f->f_newlinetypes |= NEWLINE_CRLF; pos++; f->f_skipnextlf = 0; } else if (c != EOF) ungetc(c, f->f_fp); From buildbot at python.org Sat Sep 22 23:14:14 2007 From: buildbot at python.org (buildbot at python.org) Date: Sat, 22 Sep 2007 21:14:14 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070922211414.C73111E400F@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/70 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: guido.van.rossum BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_thread test_threading sincerely, -The Buildbot From python-checkins at python.org Sat Sep 22 23:36:28 2007 From: python-checkins at python.org (brett.cannon) Date: Sat, 22 Sep 2007 23:36:28 +0200 (CEST) Subject: [Python-checkins] r58234 - in sandbox/trunk/import_in_py: Py3K/_importlib.py _importlib.py Message-ID: <20070922213628.69CC41E401A@bag.python.org> Author: brett.cannon Date: Sat Sep 22 23:36:28 2007 New Revision: 58234 Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py sandbox/trunk/import_in_py/_importlib.py Log: Flesh out the comment detailing exactly what is added to _importlib by importlib. Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/_importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/_importlib.py Sat Sep 22 23:36:28 2007 @@ -58,8 +58,11 @@ """ from __future__ import with_statement -# The injected modules are 'imp', 'sys', 'marshal', and '_os' (a.k.a. 'posix', -# 'nt' & 'os2'). + +# Injected modules are 'warnings', 'imp', 'sys', 'marshal', and '_os' +# (a.k.a. 'posix', 'nt' or 'os2'). +# Injected attributes are path_sep and EACCES. +# XXX Temporarily injected functions are _r_long, _w_long, and _case_ok. # XXX Could also expose Modules/getpath.c:joinpath() Modified: sandbox/trunk/import_in_py/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/_importlib.py (original) +++ sandbox/trunk/import_in_py/_importlib.py Sat Sep 22 23:36:28 2007 @@ -58,8 +58,11 @@ """ from __future__ import with_statement -# The injected modules are 'imp', 'sys', 'marshal', and '_os' (a.k.a. 'posix', -# 'nt' & 'os2'). + +# Injected modules are 'warnings', 'imp', 'sys', 'marshal', and '_os' +# (a.k.a. 'posix', 'nt' or 'os2'). +# Injected attributes are path_sep and EACCES. +# XXX Temporarily injected functions are _r_long, _w_long, and _case_ok. # XXX Could also expose Modules/getpath.c:joinpath() From python-checkins at python.org Sun Sep 23 01:07:41 2007 From: python-checkins at python.org (brett.cannon) Date: Sun, 23 Sep 2007 01:07:41 +0200 (CEST) Subject: [Python-checkins] r58235 - in sandbox/trunk/import_in_py: Py3K/_importlib.py Py3K/importlib.py _importlib.py importlib.py Message-ID: <20070922230741.2A1E41E4024@bag.python.org> Author: brett.cannon Date: Sun Sep 23 01:07:40 2007 New Revision: 58235 Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py sandbox/trunk/import_in_py/Py3K/importlib.py sandbox/trunk/import_in_py/_importlib.py sandbox/trunk/import_in_py/importlib.py Log: Use the errno module instead of a single attribute. Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/_importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/_importlib.py Sun Sep 23 01:07:40 2007 @@ -59,9 +59,9 @@ """ from __future__ import with_statement -# Injected modules are 'warnings', 'imp', 'sys', 'marshal', and '_os' +# Injected modules are 'warnings', 'imp', 'sys', 'marshal', 'errno', and '_os' # (a.k.a. 'posix', 'nt' or 'os2'). -# Injected attributes are path_sep and EACCES. +# Injected attribute is path_sep. # XXX Temporarily injected functions are _r_long, _w_long, and _case_ok. @@ -509,7 +509,7 @@ bytecode_file.write(data) return True except IOError as exc: - if exc.errno == EACCES: + if exc.errno == errno.EACCES: return False else: raise Modified: sandbox/trunk/import_in_py/Py3K/importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/importlib.py Sun Sep 23 01:07:40 2007 @@ -112,27 +112,23 @@ except ImportError: raise ImportError('posix, nt, or os2 module required for importlib') _importlib._os = _os -import imp, sys, marshal +import imp, sys, marshal, errno _importlib.imp = imp _importlib.sys = sys _importlib.marshal = marshal +_importlib.errno = errno +# XXX 'warnings' needs become a built-in module (Neal). +import warnings +_importlib.warnings = warnings -# XXX These all need to either go away or become built-in modules -# (Neal). -from errno import EACCES from os import sep -import warnings - _importlib._r_long = _r_long #XXX Expose original from marshal. _importlib._w_long = _w_long #XXX Expose original from marshal. _importlib._case_ok = _case_ok #XXX Expose original from imp. # For os.path.join replacement; pull from Include/osdefs.h:SEP . _importlib.path_sep = sep -# For allowing silent failure of .pyc creation when permission is denied. -_importlib.EACCES = EACCES -_importlib.warnings = warnings del _importlib Modified: sandbox/trunk/import_in_py/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/_importlib.py (original) +++ sandbox/trunk/import_in_py/_importlib.py Sun Sep 23 01:07:40 2007 @@ -59,9 +59,9 @@ """ from __future__ import with_statement -# Injected modules are 'warnings', 'imp', 'sys', 'marshal', and '_os' +# Injected modules are 'warnings', 'imp', 'sys', 'marshal', 'errno', and '_os' # (a.k.a. 'posix', 'nt' or 'os2'). -# Injected attributes are path_sep and EACCES. +# Injected attribute is path_sep. # XXX Temporarily injected functions are _r_long, _w_long, and _case_ok. @@ -509,7 +509,7 @@ bytecode_file.write(data) return True except IOError as exc: - if exc.errno == EACCES: + if exc.errno == errno.EACCES: return False else: raise Modified: sandbox/trunk/import_in_py/importlib.py ============================================================================== --- sandbox/trunk/import_in_py/importlib.py (original) +++ sandbox/trunk/import_in_py/importlib.py Sun Sep 23 01:07:40 2007 @@ -112,27 +112,23 @@ except ImportError: raise ImportError('posix, nt, or os2 module required for importlib') _importlib._os = _os -import imp, sys, marshal +import imp, sys, marshal, errno _importlib.imp = imp _importlib.sys = sys _importlib.marshal = marshal +_importlib.errno = errno +# XXX 'warnings' needs become a built-in module (Neal). +import warnings +_importlib.warnings = warnings -# XXX These all need to either go away or become built-in modules -# (Neal). -from errno import EACCES from os import sep -import warnings - _importlib._r_long = _r_long #XXX Expose original from marshal. _importlib._w_long = _w_long #XXX Expose original from marshal. _importlib._case_ok = _case_ok #XXX Expose original from imp. # For os.path.join replacement; pull from Include/osdefs.h:SEP . _importlib.path_sep = sep -# For allowing silent failure of .pyc creation when permission is denied. -_importlib.EACCES = EACCES -_importlib.warnings = warnings del _importlib From buildbot at python.org Sun Sep 23 11:30:18 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 23 Sep 2007 09:30:18 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD trunk Message-ID: <20070923093018.66E4B1E4002@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%20trunk/builds/44 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: guido.van.rossum BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sun Sep 23 11:48:09 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 23 Sep 2007 09:48:09 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD trunk Message-ID: <20070923094809.DAF2A1E4002@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%20trunk/builds/47 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: The web-page 'force build' button was pressed by '': Build Source Stamp: [branch trunk] HEAD Blamelist: BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Sun Sep 23 15:04:25 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 23 Sep 2007 13:04:25 +0000 Subject: [Python-checkins] buildbot failure in 3.0.msi Message-ID: <20070923130426.1EBAD1E4002@bag.python.org> The Buildbot has detected a new failure of 3.0.msi. Full details are available at: http://www.python.org/dev/buildbot/all/3.0.msi/builds/23 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The Nightly scheduler named '3.0.msi' triggered this build Build Source Stamp: HEAD Blamelist: BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Sep 23 16:33:15 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 23 Sep 2007 14:33:15 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 3.0 Message-ID: <20070923143315.866DB1E401C@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%203.0/builds/82 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Unknown signal 37 sincerely, -The Buildbot From python-checkins at python.org Mon Sep 24 19:55:47 2007 From: python-checkins at python.org (georg.brandl) Date: Mon, 24 Sep 2007 19:55:47 +0200 (CEST) Subject: [Python-checkins] r58242 - python/trunk/Doc/library/optparse.rst Message-ID: <20070924175547.7243A1E4005@bag.python.org> Author: georg.brandl Date: Mon Sep 24 19:55:47 2007 New Revision: 58242 Modified: python/trunk/Doc/library/optparse.rst Log: Fix typo and double word. Modified: python/trunk/Doc/library/optparse.rst ============================================================================== --- python/trunk/Doc/library/optparse.rst (original) +++ python/trunk/Doc/library/optparse.rst Mon Sep 24 19:55:47 2007 @@ -954,7 +954,7 @@ * ``append_const`` [required: ``const``; relevant: :attr:`dest`] Like ``store_const``, but the value ``const`` is appended to :attr:`dest`; as - with ``append``, :attr:`dest` defaults to ``None``, and an an empty list is + with ``append``, :attr:`dest` defaults to ``None``, and an empty list is automatically created the first time the option is encountered. * ``count`` [relevant: :attr:`dest`] @@ -1120,7 +1120,7 @@ * if the number starts with ``0``, it is parsed as an octal number -* if the number starts with ``0b``, is is parsed as a binary number +* if the number starts with ``0b``, it is parsed as a binary number * otherwise, the number is parsed as a decimal number From python-checkins at python.org Mon Sep 24 19:56:12 2007 From: python-checkins at python.org (georg.brandl) Date: Mon, 24 Sep 2007 19:56:12 +0200 (CEST) Subject: [Python-checkins] r58243 - python/branches/release25-maint/Doc/lib/liboptparse.tex Message-ID: <20070924175612.B03A91E4005@bag.python.org> Author: georg.brandl Date: Mon Sep 24 19:56:12 2007 New Revision: 58243 Modified: python/branches/release25-maint/Doc/lib/liboptparse.tex Log: Fix -- being converted to - in HTML. #1186. Modified: python/branches/release25-maint/Doc/lib/liboptparse.tex ============================================================================== --- python/branches/release25-maint/Doc/lib/liboptparse.tex (original) +++ python/branches/release25-maint/Doc/lib/liboptparse.tex Mon Sep 24 19:56:12 2007 @@ -102,8 +102,8 @@ single letter, e.g. \code{"-x"} or \code{"-F"}. Also, traditional \UNIX{} syntax allows multiple options to be merged into a single argument, e.g. \code{"-x -F"} is equivalent to \code{"-xF"}. The GNU project -introduced \code{"-{}-"} followed by a series of hyphen-separated words, -e.g. \code{"-{}-file"} or \code{"-{}-dry-run"}. These are the only two option +introduced a double hyphen followed by a series of hyphen-separated words, +e.g. \longprogramopt{file} or \longprogramopt{dry-run}. These are the only two option syntaxes provided by \module{optparse}. Some other option syntaxes that the world has seen include: @@ -172,7 +172,7 @@ prog -v --report /tmp/report.txt foo bar \end{verbatim} -\code{"-v"} and \code{"-{}-report"} are both options. Assuming that +\programopt{-v} and \longprogramopt{report} are both options. Assuming that \longprogramopt{report} takes one argument, \code{"/tmp/report.txt"} is an option argument. \code{"foo"} and \code{"bar"} are positional arguments. @@ -257,8 +257,8 @@ attr=value, ...) \end{verbatim} -Each option has one or more option strings, such as \code{"-f"} or -\code{"-{}-file"}, and several option attributes that tell \module{optparse} what to +Each option has one or more option strings, such as \programopt{-f} or +\longprogramopt{file}, and several option attributes that tell \module{optparse} what to expect and what to do when it encounters that option on the command line. @@ -289,7 +289,7 @@ \method{parse{\_}args()} returns two values: \begin{itemize} \item {} -\code{options}, an object containing values for all of your options{---}e.g. if \code{"-{}-file"} takes a single string argument, then +\code{options}, an object containing values for all of your options{---}e.g. if \longprogramopt{file} takes a single string argument, then \code{options.file} will be the filename supplied by the user, or \code{None} if the user did not supply that option @@ -368,7 +368,7 @@ If you don't supply a destination, \module{optparse} figures out a sensible default from the option strings: if the first long option string is -\code{"-{}-foo-bar"}, then the default destination is \code{foo{\_}bar}. If there +\longprogramopt{foo-bar}, then the default destination is \code{foo{\_}bar}. If there are no long option strings, \module{optparse} looks at the first short option string: the default destination for \code{"-f"} is \code{f}. @@ -485,7 +485,7 @@ "or expert [default: %default]") \end{verbatim} -If \module{optparse} encounters either \code{"-h"} or \code{"-{}-help"} on the command-line, +If \module{optparse} encounters either \programopt{-h} or \longprogramopt{help} on the command-line, or if you just call \method{parser.print{\_}help()}, it prints the following to standard output: \begin{verbatim} @@ -570,7 +570,7 @@ \code{"{\%}prog"} is expanded just like it is in \code{usage}. Apart from that, \code{version} can contain anything you like. When you supply -it, \module{optparse} automatically adds a \code{"-{}-version"} option to your parser. +it, \module{optparse} automatically adds a \longprogramopt{version} option to your parser. If it encounters this option on the command line, it expands your \code{version} string (by replacing \code{"{\%}prog"}), prints it to stdout, and exits. @@ -697,7 +697,7 @@ \item[\code{version} (default: \code{None})] A version string to print when the user supplies a version option. If you supply a true value for \code{version}, \module{optparse} automatically adds -a version option with the single option string \code{"-{}-version"}. The +a version option with the single option string \longprogramopt{version}. The substring \code{"{\%}prog"} is expanded the same as for \code{usage}. \item[\code{conflict{\_}handler} (default: \code{"error"})] Specifies what to do when options with conflicting option strings @@ -713,7 +713,7 @@ purpose: IndentedHelpFormatter and TitledHelpFormatter. \item[\code{add{\_}help{\_}option} (default: \code{True})] If true, \module{optparse} will add a help option (with option strings \code{"-h"} -and \code{"-{}-help"}) to the parser. +and \longprogramopt{help}) to the parser. \item[\code{prog}] The string to use when expanding \code{"{\%}prog"} in \code{usage} and \code{version} instead of \code{os.path.basename(sys.argv{[}0])}. @@ -878,7 +878,7 @@ If \member{type} is not supplied, it defaults to \code{string}. If \member{dest} is not supplied, \module{optparse} derives a destination from the -first long option string (e.g., \code{"-{}-foo-bar"} implies \code{foo{\_}bar}). +first long option string (e.g., \longprogramopt{foo-bar} implies \code{foo{\_}bar}). If there are no long option strings, \module{optparse} derives a destination from the first short option string (e.g., \code{"-f"} implies \code{f}). @@ -915,7 +915,7 @@ action="store_const", const=2, dest="verbose") \end{verbatim} -If \code{"-{}-noisy"} is seen, \module{optparse} will set +If \longprogramopt{noisy} is seen, \module{optparse} will set \begin{verbatim} options.verbose = 2 \end{verbatim} @@ -960,7 +960,7 @@ options.tracks.append(int("3")) \end{verbatim} -If, a little later on, \code{"-{}-tracks=4"} is seen, it does: +If, a little later on, \longprogramopt{tracks=4} is seen, it does: \begin{verbatim} options.tracks.append(int("4")) \end{verbatim} @@ -969,7 +969,7 @@ \code{append{\_}const} {[}required: \code{const}; relevant: \member{dest}] Like \code{store{\_}const}, but the value \code{const} is appended to \member{dest}; -as with \code{append}, \member{dest} defaults to \code{None}, and an an empty list is +as with \code{append}, \member{dest} defaults to \code{None}, and an empty list is automatically created the first time the option is encountered. \item {} @@ -1035,7 +1035,7 @@ parser.add_option("--secret", help=SUPPRESS_HELP) \end{verbatim} -If \module{optparse} sees either \code{"-h"} or \code{"-{}-help"} on the command line, it +If \module{optparse} sees either \programopt{h} or \longprogramopt{help} on the command line, it will print something like the following help message to stdout (assuming \code{sys.argv{[}0]} is \code{"foo.py"}): \begin{verbatim} @@ -1131,7 +1131,7 @@ \member{help} Help text to print for this option when listing all available options -after the user supplies a \member{help} option (such as \code{"-{}-help"}). +after the user supplies a \member{help} option (such as \longprogramopt{help}). If no help text is supplied, the option will be listed without help text. To hide this option, use the special value \code{SUPPRESS{\_}HELP}. @@ -1164,7 +1164,7 @@ if the number starts with \code{0}, it is parsed as an octal number \item {} -if the number starts with \code{0b}, is is parsed as a binary number +if the number starts with \code{0b}, it is parsed as a binary number \item {} otherwise, the number is parsed as a decimal number @@ -1231,7 +1231,7 @@ \begin{description} \item[\code{has{\_}option(opt{\_}str)}] Return true if the OptionParser has an option with -option string \code{opt{\_}str} (e.g., \code{"-q"} or \code{"-{}-verbose"}). +option string \code{opt{\_}str} (e.g., \programopt{-q} or \longprogramopt{verbose}). \item[\code{get{\_}option(opt{\_}str)}] Returns the Option instance with the option string \code{opt{\_}str}, or \code{None} if no options have that option string. @@ -1292,7 +1292,7 @@ At this point, \module{optparse} detects that a previously-added option is already using the \code{"-n"} option string. Since \code{conflict{\_}handler} is \code{"resolve"}, it resolves the situation by removing \code{"-n"} from the -earlier option's list of option strings. Now \code{"-{}-dry-run"} is the +earlier option's list of option strings. Now \longprogramopt{dry-run} is the only way for the user to activate that option. If the user asks for help, the help message will reflect that: \begin{verbatim} @@ -1311,7 +1311,7 @@ parser.add_option("--dry-run", ..., help="new dry-run option") \end{verbatim} -At this point, the original \programopt{-n/-{}-dry-run} option is no longer +At this point, the original \programopt{-n}/\longprogramopt{dry-run} option is no longer accessible, so \module{optparse} removes it, leaving this help text: \begin{verbatim} options: @@ -1475,8 +1475,8 @@ is the option string seen on the command-line that's triggering the callback. (If an abbreviated long option was used, \code{opt{\_}str} will be the full, canonical option string{---}e.g. if the user puts -\code{"-{}-foo"} on the command-line as an abbreviation for -\code{"-{}-foobar"}, then \code{opt{\_}str} will be \code{"-{}-foobar"}.) +\longprogramopt{foo} on the command-line as an abbreviation for +\longprogramopt{foobar}, then \code{opt{\_}str} will be \longprogramopt{foobar}.) \item[\code{value}] is the argument to this option seen on the command-line. \module{optparse} will only expect an argument if \member{type} is set; the type of \code{value} @@ -1627,18 +1627,18 @@ provide any built-in capabilities for it. And you have to deal with certain intricacies of conventional \UNIX{} command-line parsing that \module{optparse} normally handles for you. In particular, callbacks should implement -the conventional rules for bare \code{"-{}-"} and \code{"-"} arguments: +the conventional rules for bare \longprogramopt{} and \programopt{-} arguments: \begin{itemize} \item {} -either \code{"-{}-"} or \code{"-"} can be option arguments +either \longprogramopt{} or \programopt{-} can be option arguments \item {} -bare \code{"-{}-"} (if not the argument to some option): halt command-line -processing and discard the \code{"-{}-"} +bare \longprogramopt{} (if not the argument to some option): halt command-line +processing and discard the \longprogramopt{} \item {} -bare \code{"-"} (if not the argument to some option): halt command-line -processing but keep the \code{"-"} (append it to \code{parser.largs}) +bare \programopt{-} (if not the argument to some option): halt command-line +processing but keep the \programopt{-} (append it to \code{parser.largs}) \end{itemize} @@ -1817,7 +1817,7 @@ standard \code{append} action, but instead of taking a single value from the command-line and appending it to an existing list, \code{extend} will take multiple values in a single comma-delimited string, and extend an -existing list with them. That is, if \code{"-{}-names"} is an \code{extend} +existing list with them. That is, if \longprogramopt{names} is an \code{extend} option of type \code{string}, the command line \begin{verbatim} --names=foo,bar --names blah --names ding,dong From python-checkins at python.org Mon Sep 24 19:58:18 2007 From: python-checkins at python.org (georg.brandl) Date: Mon, 24 Sep 2007 19:58:18 +0200 (CEST) Subject: [Python-checkins] r58244 - python/branches/release25-maint/Doc/lib/libfuncs.tex Message-ID: <20070924175819.05F981E401A@bag.python.org> Author: georg.brandl Date: Mon Sep 24 19:58:18 2007 New Revision: 58244 Modified: python/branches/release25-maint/Doc/lib/libfuncs.tex Log: #1196: document default radix for int(). Modified: python/branches/release25-maint/Doc/lib/libfuncs.tex ============================================================================== --- python/branches/release25-maint/Doc/lib/libfuncs.tex (original) +++ python/branches/release25-maint/Doc/lib/libfuncs.tex Mon Sep 24 19:58:18 2007 @@ -533,7 +533,7 @@ string, it must contain a possibly signed decimal number representable as a Python integer, possibly embedded in whitespace. The \var{radix} parameter gives the base for the - conversion and may be any integer in the range [2, 36], or zero. If + conversion (which is 10 by default) and may be any integer in the range [2, 36], or zero. If \var{radix} is zero, the proper radix is guessed based on the contents of string; the interpretation is the same as for integer literals. If \var{radix} is specified and \var{x} is not a string, From python-checkins at python.org Mon Sep 24 19:59:29 2007 From: python-checkins at python.org (georg.brandl) Date: Mon, 24 Sep 2007 19:59:29 +0200 (CEST) Subject: [Python-checkins] r58245 - python/trunk/Doc/library/functions.rst Message-ID: <20070924175929.1CDAD1E4005@bag.python.org> Author: georg.brandl Date: Mon Sep 24 19:59:28 2007 New Revision: 58245 Modified: python/trunk/Doc/library/functions.rst Log: #1196: document default radix for int(). Modified: python/trunk/Doc/library/functions.rst ============================================================================== --- python/trunk/Doc/library/functions.rst (original) +++ python/trunk/Doc/library/functions.rst Mon Sep 24 19:59:28 2007 @@ -545,17 +545,18 @@ .. function:: int([x[, radix]]) - Convert a string or number to a plain integer. If the argument is a string, it - must contain a possibly signed decimal number representable as a Python integer, - possibly embedded in whitespace. The *radix* parameter gives the base for the - conversion and may be any integer in the range [2, 36], or zero. If *radix* is - zero, the proper radix is guessed based on the contents of string; the - interpretation is the same as for integer literals. If *radix* is specified and - *x* is not a string, :exc:`TypeError` is raised. Otherwise, the argument may be - a plain or long integer or a floating point number. Conversion of floating - point numbers to integers truncates (towards zero). If the argument is outside - the integer range a long object will be returned instead. If no arguments are - given, returns ``0``. + Convert a string or number to a plain integer. If the argument is a string, + it must contain a possibly signed decimal number representable as a Python + integer, possibly embedded in whitespace. The *radix* parameter gives the + base for the conversion (which is 10 by default) and may be any integer in + the range [2, 36], or zero. If *radix* is zero, the proper radix is guessed + based on the contents of string; the interpretation is the same as for + integer literals. If *radix* is specified and *x* is not a string, + :exc:`TypeError` is raised. Otherwise, the argument may be a plain or long + integer or a floating point number. Conversion of floating point numbers to + integers truncates (towards zero). If the argument is outside the integer + range a long object will be returned instead. If no arguments are given, + returns ``0``. The integer type is described in :ref:`typesnumeric`. From python-checkins at python.org Mon Sep 24 20:08:24 2007 From: python-checkins at python.org (georg.brandl) Date: Mon, 24 Sep 2007 20:08:24 +0200 (CEST) Subject: [Python-checkins] r58247 - python/trunk/Lib/urllib.py Message-ID: <20070924180824.B4E821E4005@bag.python.org> Author: georg.brandl Date: Mon Sep 24 20:08:24 2007 New Revision: 58247 Modified: python/trunk/Lib/urllib.py Log: #1177: accept 2xx responses for https too, not only http. Modified: python/trunk/Lib/urllib.py ============================================================================== --- python/trunk/Lib/urllib.py (original) +++ python/trunk/Lib/urllib.py Mon Sep 24 20:08:24 2007 @@ -435,7 +435,9 @@ # something went wrong with the HTTP status line raise IOError, ('http protocol error', 0, 'got a bad status line', None) - if errcode == 200: + # According to RFC 2616, "2xx" code indicates that the client's + # request was successfully received, understood, and accepted. + if not (200 <= errcode < 300): return addinfourl(fp, headers, "https:" + url) else: if data is None: From python-checkins at python.org Mon Sep 24 20:15:28 2007 From: python-checkins at python.org (paul.dubois) Date: Mon, 24 Sep 2007 20:15:28 +0200 (CEST) Subject: [Python-checkins] r58248 - tracker/instances/python-dev/detectors/audit2to3.py Message-ID: <20070924181528.728D51E4005@bag.python.org> Author: paul.dubois Date: Mon Sep 24 20:15:28 2007 New Revision: 58248 Added: tracker/instances/python-dev/detectors/audit2to3.py Log: Add an auditor to assign 2to3 issues to Collin Winter. Added: tracker/instances/python-dev/detectors/audit2to3.py ============================================================================== --- (empty file) +++ tracker/instances/python-dev/detectors/audit2to3.py Mon Sep 24 20:15:28 2007 @@ -0,0 +1,40 @@ +import roundup +import roundup.instance +import sets + +def update2to3(db, cl, nodeid, newvalues): + '''Component 2to3 issues to be assigned to collinwinter unless otherwise + assigned. + ''' + # nodeid will be None if this is a new node + if nodeid is not None: + componentIDS = cl.get(nodeid, 'components') + if newvalues.has_key('components'): + componentIDS = newvalues['components'] + if componentIDS and (theComponent in componentIDS): + if not newvalues.has_key('assignee') or \ + newvalues['assignee'] == Nobody: + newvalues['assignee'] = theMan + +def init(db): + global theMan, theComponent, Nobody + theMan = db.user.lookup('collinwinter') + Nobody = db.user.lookup('nobody') + theComponent = db.component.lookup('2to3 (2.x to 3.0 conversion tool)') + + db.issue.audit('create', update2to3) + db.issue.audit('set', update2to3) + +if __name__ == '__main__': + global theMan, theComponent, Nobody + instanceHome='/home/roundup/trackers/tracker' + instance = roundup.instance.open(instanceHome) + db = instance.open('admin') + cl = db.issue + nodeID = '1002' + theMan = db.user.lookup('collinwinter') + Nobody = db.user.lookup('nobody') + theComponent = db.component.lookup('2to3 (2.x to 3.0 conversion tool)') + newvalues = { 'components': [theComponent] , 'assignee': Nobody} + update2to3(db, cl, nodeID, newvalues) + print Nobody, theMan, theComponent, newvalues From python-checkins at python.org Tue Sep 25 01:45:51 2007 From: python-checkins at python.org (andrew.kuchling) Date: Tue, 25 Sep 2007 01:45:51 +0200 (CEST) Subject: [Python-checkins] r58249 - python/trunk/Doc/library/pdb.rst Message-ID: <20070924234551.E852E1E400C@bag.python.org> Author: andrew.kuchling Date: Tue Sep 25 01:45:51 2007 New Revision: 58249 Modified: python/trunk/Doc/library/pdb.rst Log: Remove stray odd character; grammar fix Modified: python/trunk/Doc/library/pdb.rst ============================================================================== --- python/trunk/Doc/library/pdb.rst (original) +++ python/trunk/Doc/library/pdb.rst Tue Sep 25 01:45:51 2007 @@ -243,7 +243,7 @@ Specifying any command resuming execution (currently continue, step, next, return, jump, quit and their abbreviations) terminates the command list (as if that command was immediately followed by end). This is because any time you - resume execution (even with a simple next or step), you may encounter?? another + resume execution (even with a simple next or step), you may encounter another breakpoint--which could have its own command list, leading to ambiguities about which list to execute. @@ -334,7 +334,7 @@ (Pdb) run [*args* ...] - Restart the debugged python program. If an argument is supplied, it is splitted + Restart the debugged python program. If an argument is supplied, it is split with "shlex" and the result is used as the new sys.argv. History, breakpoints, actions and debugger options are preserved. "restart" is an alias for "run". From python-checkins at python.org Tue Sep 25 01:46:28 2007 From: python-checkins at python.org (andrew.kuchling) Date: Tue, 25 Sep 2007 01:46:28 +0200 (CEST) Subject: [Python-checkins] r58250 - python/trunk/Doc/library/decimal.rst Message-ID: <20070924234629.0B5DA1E400C@bag.python.org> Author: andrew.kuchling Date: Tue Sep 25 01:46:28 2007 New Revision: 58250 Modified: python/trunk/Doc/library/decimal.rst Log: Typo fix Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Tue Sep 25 01:46:28 2007 @@ -179,7 +179,7 @@ >>> c % a Decimal("0.77") -And some mathematic functions are also available to Decimal:: +And some mathematical functions are also available to Decimal:: >>> Decimal(2).sqrt() Decimal("1.414213562373095048801688724") From python-checkins at python.org Tue Sep 25 02:09:42 2007 From: python-checkins at python.org (andrew.kuchling) Date: Tue, 25 Sep 2007 02:09:42 +0200 (CEST) Subject: [Python-checkins] r58251 - python/trunk/Doc/whatsnew/2.6.rst Message-ID: <20070925000942.9AB301E400C@bag.python.org> Author: andrew.kuchling Date: Tue Sep 25 02:09:42 2007 New Revision: 58251 Modified: python/trunk/Doc/whatsnew/2.6.rst Log: Add various items Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Tue Sep 25 02:09:42 2007 @@ -75,7 +75,23 @@ .. % XXX add general comment about Python 3.0 features in 2.6 -.. % XXX mention -3 switch +The development cycle for Python 2.6 also saw the release of the first +alphas of Python 3.0, and the development of 3.0 has influenced +a number of features in 2.6. + +Python 3.0 is a far-ranging redesign of Python that breaks +compatibility with the 2.x series. This means that existing Python +code will need a certain amount of conversion in order to run on +Python 3.0. However, not all the changes in 3.0 necessarily break +compatibility. In cases where new features won't cause existing code +to break, they've been backported to 2.6 and are described in this +document in the appropriate place. Some of the 3.0-derived features +are: + +* A :meth:`__complex__` method for converting objects to a complex number. +* Alternate syntax for catching exceptions: ``except TypeError as exc``. +* The addition of :func:`functools.reduce` as a synonym for the built-in + :func:`reduce` function. A new command-line switch, :option:`-3`, enables warnings about features that will be removed in Python 3.0. You can run code @@ -406,11 +422,6 @@ Here are all of the changes that Python 2.6 makes to the core Python language. -* Changes to the :class:`Exception` interface - as dictated by :pep:`352` continue to be made. For 2.6, - the :attr:`message` attribute is being deprecated in favor of the - :attr:`args` attribute. - * When calling a function using the ``**`` syntax to provide keyword arguments, you are no longer required to use a Python dictionary; any mapping will now work:: @@ -426,8 +437,29 @@ .. % Patch 1686487 +* The built-in types now have improved support for extended slicing syntax, + where various combinations of ``(start, stop, step)`` are supplied. + Previously, the support was partial and certain corner cases wouldn't work. + (Implemented by Thomas Wouters.) + + .. % Revision 57619 + +* C functions and methods that use + :cfunc:`PyComplex_AsCComplex` will now accept arguments that + have a :meth:`__complex__` method. In particular, the functions in the + :mod:`cmath` module will now accept objects with this method. + This is a backport of a Python 3.0 change. + (Contributed by Mark Dickinson.) + + .. % Patch #1675423 + +* Changes to the :class:`Exception` interface + as dictated by :pep:`352` continue to be made. For 2.6, + the :attr:`message` attribute is being deprecated in favor of the + :attr:`args` attribute. + * The :func:`compile` built-in function now accepts keyword arguments - as well as positional parameters. (Contributed by XXX.) + as well as positional parameters. (Contributed by Thomas Wouters.) .. % Patch 1444529 @@ -487,17 +519,32 @@ fieldnames)` is a factory function that creates subclasses of the standard tuple whose fields are accessible by name as well as index. For example:: - var_type = collections.NamedTuple('variable', - 'id name type size') - var = var_type(1, 'frequency', 'int', 4) - - print var[0], var.id # Equivalent - print var[2], var.type # Equivalent + >>> var_type = collections.NamedTuple('variable', + ... 'id name type size') + # Names are separated by spaces or commas. + # 'id, name, type, size' would also work. + >>> var_type.__fields__ + ('id', 'name', 'type', 'size') + + >>> var = var_type(1, 'frequency', 'int', 4) + >>> print var[0], var.id # Equivalent + 1 1 + >>> print var[2], var.type # Equivalent + int int + >>> v2 = var.__replace__('name', 'amplitude') + >>> v2 + variable(id=1, name='amplitude', type='int', size=4) (Contributed by Raymond Hettinger.) +* The :mod:`ctypes` module now supports a :class:`c_bool` datatype + that represents the C99 ``bool`` type. (Contributed by David Remahl.) + + .. % Patch 1649190 + * A new method in the :mod:`curses` module: for a window, :meth:`chgat` changes - the display characters for a certain number of characters on a single line. :: + the display characters for a certain number of characters on a single line. + :: # Boldface text starting at y=0,x=21 # and affecting the rest of the line. @@ -505,11 +552,33 @@ (Contributed by Fabian Kreutz.) +* The :mod:`decimal` module was updated to version 1.66 of + `the General Decimal Specification `__. New features + include some methods for some basic mathematical functions such as + :meth:`exp` and :meth:`log10`:: + + >>> Decimal(1).exp() + Decimal("2.718281828459045235360287471") + >>> Decimal("2.7182818").ln() + Decimal("0.9999999895305022877376682436") + >>> Decimal(1000).log10() + Decimal("3") + + (Implemented by Facundo Batista and Mark Dickinson.) + * An optional ``timeout`` parameter was added to the :class:`ftplib.FTP` class constructor as well as the :meth:`connect` method, specifying a timeout measured in seconds. (Added by Facundo Batista.) +* The :func:`reduce` built-in function is also available in the + :mod:`functools` module. In Python 3.0, the built-in is dropped and it's + only available from :mod:`functools`; currently there are no plans + to drop the built-in in the 2.x series. (Patched by + Christian Heimes.) + + .. % Patch 1739906 + * The :func:`glob.glob` function can now return Unicode filenames if a Unicode path was used and Unicode filenames are matched within the directory. @@ -548,7 +617,7 @@ .. % Patch #1490190 -* The :func:`os.walk` function now has a "followlinks" parameter. If +* The :func:`os.walk` function now has a ``followlinks`` parameter. If set to True, it will follow symlinks pointing to directories and visit the directory's contents. For backward compatibility, the parameter's default value is false. Note that the function can fall @@ -574,10 +643,17 @@ On Windows, :func:`os.path.expandvars` will now expand environment variables in the form "%var%", and "~user" will be expanded into the - user's home directory path. (Contributed by XXX.) + user's home directory path. (Contributed by Josiah Carlson.) .. % Patch 957650 +* The Python debugger provided by the :mod:`pdb` module + gained a new command: "run" restarts the Python program being debugged, + and can optionally take new command-line arguments for the program. + (Contributed by Rocky Bernstein.) + + .. % Patch #1393667 + * New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags` are wrappers for the corresponding system calls (where they're available). Constants for the flag values are defined in the :mod:`stat` module; some @@ -701,6 +777,17 @@ (Added by Facundo Batista.) +* The XML-RPC classes :class:`SimpleXMLRPCServer` and :class:`DocXMLRPCServer` + classes can now be preventing from immediately opening and binding to + their socket by passing True as the ``bind_and_activate`` + constructor parameter. This can be used to modify the instance's + :attr:`allow_reuse_address` attribute before calling the + :meth:`server_bind` and :meth:`server_activate` methods to + open the socket and begin listening for connections. + (Contributed by Peter Parente.) + + .. % Patch 1599845 + .. % ====================================================================== .. % whole new modules get described in \subsections here @@ -712,7 +799,7 @@ Changes to Python's build process and to the C API include: -* Detailed changes are listed here. +* Detailed changes will be listed here. .. % ====================================================================== @@ -737,7 +824,7 @@ Some of the more notable changes are: -* Details go here. +* Details will go here. .. % ====================================================================== From python-checkins at python.org Tue Sep 25 05:45:54 2007 From: python-checkins at python.org (senthil.kumaran) Date: Tue, 25 Sep 2007 05:45:54 +0200 (CEST) Subject: [Python-checkins] r58252 - sandbox/trunk/urilib/TODO sandbox/trunk/urilib/test_urllib2.py sandbox/trunk/urilib/urllib2.py Message-ID: <20070925034554.5D8A51E400C@bag.python.org> Author: senthil.kumaran Date: Tue Sep 25 05:45:53 2007 New Revision: 58252 Added: sandbox/trunk/urilib/TODO (contents, props changed) Modified: sandbox/trunk/urilib/test_urllib2.py sandbox/trunk/urilib/urllib2.py Log: Issue1675455: use getaddrinfo for IPv6 support Added: sandbox/trunk/urilib/TODO ============================================================================== --- (empty file) +++ sandbox/trunk/urilib/TODO Tue Sep 25 05:45:53 2007 @@ -0,0 +1,20 @@ +Author: O.R.Senthil Kumaran +Google Summer of Code 2007 Tasks - Cleanup urllib2 +Date: 25 Sep 2007 + +TODO: + +1) urllib unification progress. Complaince with RFC3986 and RFC3987 + a) urllib2 merge + b) proxy-support + b) unit-tests. + c) Documentation. +2) Author PEP to discuss about Unified Module inclusion in Python 2.6 and Python 3K. +3) [ 1675455 ] Use getaddrinfo() in urllib2.py for IPv6 support. + * 25 Sep. Done. + * Test with IPv6 address. +4) As in mechanize and urlgrabber,Implement higher level interfaces to url module,which can accomplish most common tasks. + a) Handler classes HTTPRefreshProcessor, HTTPEquivProcessor, HTTPRobotRulesProcessor + b) HTTPRedirectHandler, HTTPRequestUpgradeProcessor and ResponseUpgradeProcessor +5) Patch 1462525 - uriparser. +6) URL Encoding with respect to Unicode. Modified: sandbox/trunk/urilib/test_urllib2.py ============================================================================== --- sandbox/trunk/urilib/test_urllib2.py (original) +++ sandbox/trunk/urilib/test_urllib2.py Tue Sep 25 05:45:53 2007 @@ -540,6 +540,23 @@ # XXX don't ask me about the mac... return urlpath +def gethost_addrinfo(hostname): + if socket.has_ipv6: + try: + for res in socket.getaddrinfo(hostname, None, socket.AF_INET6, + socket.SOCK_DGRAM, socket.IPPROTO_IP, socket.AI_CANONNAME): + af, socktype, proto, canonname, sa = res + except socket.gaierror: + for res in socket.getaddrinfo(hostname, None, socket.AF_INET, + socket.SOCK_DGRAM, socket.IPPROTO_IP, socket.AI_CANONNAME): + af, socktype, proto, canonname, sa = res + else: + for res in socket.getaddrinfo(hostname, None, socket.AF_INET, + socket.SOCK_DGRAM, socket.IPPROTO_IP, socket.AI_CANONNAME): + af, socktype, proto, canonname, sa = res + + return sa[0] + class HandlerTests(unittest.TestCase): def test_ftp(self): @@ -579,7 +596,7 @@ r = h.ftp_open(req) # ftp authentication not yet implemented by FTPHandler self.assert_(h.user == h.passwd == "") - self.assertEqual(h.host, socket.gethostbyname(host)) + self.assertEqual(h.host, gethost_addrinfo(host)) self.assertEqual(h.port, port) self.assertEqual(h.dirs, dirs) self.assertEqual(h.ftpwrapper.filename, filename) @@ -599,10 +616,10 @@ urls = [ "file://localhost%s" % urlpath, "file://%s" % urlpath, - "file://%s%s" % (socket.gethostbyname('localhost'), urlpath), + "file://%s%s" % (gethost_addrinfo('localhost'), urlpath), ] try: - localaddr = socket.gethostbyname(socket.gethostname()) + localaddr = gethost_addrinfo(socket.gethostname()) except socket.gaierror: localaddr = '' if localaddr: @@ -635,7 +652,7 @@ for url in [ "file://localhost:80%s" % urlpath, "file:///file_does_not_exist.txt", - "file://%s:80%s/%s" % (socket.gethostbyname('localhost'), + "file://%s:80%s/%s" % (gethost_addrinfo('localhost'), os.getcwd(), TESTFN), "file://somerandomhost.ontheinternet.com%s/%s" % (os.getcwd(), TESTFN), Modified: sandbox/trunk/urilib/urllib2.py ============================================================================== --- sandbox/trunk/urilib/urllib2.py (original) +++ sandbox/trunk/urilib/urllib2.py Tue Sep 25 05:45:53 2007 @@ -1218,6 +1218,24 @@ return [part.strip() for part in res] +def gethost_addrinfo(hostname): + if socket.has_ipv6: + try: + for res in socket.getaddrinfo(hostname, None, socket.AF_INET6, + socket.SOCK_DGRAM, socket.IPPROTO_IP, socket.AI_CANONNAME): + af, socktype, proto, canonname, sa = res + except socket.gaierror: + for res in socket.getaddrinfo(hostname, None, socket.AF_INET, + socket.SOCK_DGRAM, socket.IPPROTO_IP, socket.AI_CANONNAME): + af, socktype, proto, canonname, sa = res + else: + for res in socket.getaddrinfo(hostname, None, socket.AF_INET, + socket.SOCK_DGRAM, socket.IPPROTO_IP, socket.AI_CANONNAME): + af, socktype, proto, canonname, sa = res + + return sa[0] + + class FileHandler(BaseHandler): # Use local file or FTP depending on form of URL def file_open(self, req): @@ -1233,10 +1251,10 @@ def get_names(self): if FileHandler.names is None: try: - FileHandler.names = (socket.gethostbyname('localhost'), - socket.gethostbyname(socket.gethostname())) + FileHandler.names = (gethost_addrinfo('localhost'), + gethost_addrinfo(socket.gethostname())) except socket.gaierror: - FileHandler.names = (socket.gethostbyname('localhost'),) + FileHandler.names = (gethost_addrinfo('localhost'),) return FileHandler.names # not entirely sure what the rules are here @@ -1257,7 +1275,7 @@ if host: host, port = splitport(host) if not host or \ - (not port and socket.gethostbyname(host) in self.get_names()): + (not port and gethost_addrinfo(host) in self.get_names()): return addinfourl(open(localfile, 'rb'), headers, 'file:'+file) except OSError, msg: @@ -1289,7 +1307,7 @@ passwd = unquote(passwd or '') try: - host = socket.gethostbyname(host) + host = gethost_addrinfo(host) except socket.error, msg: raise URLError(msg) path, attrs = splitattr(req.get_selector()) From buildbot at python.org Tue Sep 25 11:45:36 2007 From: buildbot at python.org (buildbot at python.org) Date: Tue, 25 Sep 2007 09:45:36 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20070925094536.78D5D1E401D@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/270 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: The web-page 'force build' button was pressed by 'Thomas Heller': a test Build Source Stamp: [branch branches/py3k] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: 13 tests failed: test_csv test_dumbdbm test_file test_fileinput test_gettext test_io test_largefile test_mailbox test_netrc test_pep277 test_subprocess test_tempfile test_urllib2net ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_csv.py", line 500, in test_read_escape_fieldsep self.readerAssertEqual('abc\\,def\r\n', [['abc,def']]) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== FAIL: test_read_escape_fieldsep (test.test_csv.TestQuotedEscapedExcel) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_csv.py", line 513, in test_read_escape_fieldsep self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']]) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_csv.py", line 383, in readerAssertEqual self.assertEqual(fields, expected_result) AssertionError: [['abc,def'], []] != [['abc,def']] ====================================================================== ERROR: test_line_endings (test.test_dumbdbm.DumbDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_dumbdbm.py", line 121, in test_line_endings f = dumbdbm.open(_fname) File "C:\buildbot\work\trunk.heller-windows\build\lib\dumbdbm.py", line 256, in open return _Database(file, mode) File "C:\buildbot\work\trunk.heller-windows\build\lib\dumbdbm.py", line 73, in __init__ self._update() File "C:\buildbot\work\trunk.heller-windows\build\lib\dumbdbm.py", line 85, in _update key, pos_and_siz_pair = eval(line) File "", line 0 ^ SyntaxError: unexpected EOF while parsing ====================================================================== ERROR: testTruncateOnWindows (test.test_file.OtherFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_file.py", line 212, in testTruncateOnWindows os.unlink(TESTFN) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== FAIL: test_buffer_sizes (test.test_fileinput.BufferSizesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_fileinput.py", line 42, in test_buffer_sizes self.buffer_size_test(t1, t2, t3, t4, bs, round) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_fileinput.py", line 119, in buffer_size_test self.assertNotEqual(m, None) AssertionError: None == None ====================================================================== ERROR: test_weird_metadata (test.test_gettext.WeirdMetadataTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_gettext.py", line 335, in test_weird_metadata self.assertEqual(info['last-translator'], KeyError: 'last-translator' ====================================================================== FAIL: test_buffered_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_io.py", line 163, in test_buffered_file_io self.write_ops(f) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== FAIL: test_large_file_ops (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_io.py", line 206, in test_large_file_ops self.large_file_ops(f) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_io.py", line 139, in large_file_ops self.assertEqual(f.tell(), self.LARGE + 2) AssertionError: 2147483649 != 2147483650 ====================================================================== FAIL: test_raw_file_io (test.test_io.IOTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_io.py", line 149, in test_raw_file_io self.write_ops(f) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_io.py", line 97, in write_ops self.assertEqual(f.tell(), 13) AssertionError: 12 != 13 ====================================================================== ERROR: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 697, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_mbox_or_mmdf_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_conflict (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_relock (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add_and_remove_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_folder (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_list_folders (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pack (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_clear (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_contains (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_discard (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iterkeys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_keys (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_len (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_lock_unlock (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 57, in setUp self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_date (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_info_and_flags (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_subdir (test.test_mailbox.TestMaildirMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMboxMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_sequences (test.test_mailbox.TestMHMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_labels (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_visible (test.test_mailbox.TestBabylMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_become_message (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_explain_to (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_flags (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_from (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_incorrectly (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_eMM (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_file (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_nothing (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_string (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize_with_unixfrom (test.test_mailbox.TestMMDFMessage) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 950, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestProxyFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1564, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_close (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_initialize (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_iteration (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_read (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readline (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_readlines (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_seek_and_tell (test.test_mailbox.TestPartialFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1613, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: Test an empty maildir mailbox ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_both (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_cur (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_nonempty_maildir_new (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== ERROR: test_unix_mbox (test.test_mailbox.MaildirTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 1672, in setUp os.mkdir(self._dir) WindowsError: [Error 183] Cannot create a file when that file already exists: '@test' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 407, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: None ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_mailbox.py", line 76, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0' != 'From: foo\n\n0' ====================================================================== ERROR: test_case_1 (test.test_netrc.NetrcTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_netrc.py", line 31, in setUp self.netrc = netrc.netrc(temp_filename) File "C:\buildbot\work\trunk.heller-windows\build\lib\netrc.py", line 56, in __init__ "bad toplevel token %r" % tt, file, lexer.lineno) netrc.NetrcParseError: bad toplevel token 'line1' (@test, line 9) ====================================================================== ERROR: test_directory (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_failures (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_listdir (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_open (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_rename (test.test_pep277.UnicodeFileTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_pep277.py", line 40, in setUp f.write((name+'\n').encode("utf-8")) File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 1098, in write s.__class__.__name__) TypeError: can't write bytes to text stream ====================================================================== ERROR: test_communicate (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_subprocess.py", line 303, in test_communicate (stdout, stderr) = p.communicate("banana") File "c:\buildbot\work\trunk.heller-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\work\trunk.heller-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_no_leaking (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_subprocess.py", line 404, in test_no_leaking data = p.communicate("lime")[0] File "c:\buildbot\work\trunk.heller-windows\build\lib\subprocess.py", line 597, in communicate return self._communicate(input) File "c:\buildbot\work\trunk.heller-windows\build\lib\subprocess.py", line 812, in _communicate self.stdin.write(input) File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 807, in write raise TypeError("can't write str to binary stream") TypeError: can't write str to binary stream ====================================================================== ERROR: test_shell_sequence (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_subprocess.py", line 633, in test_shell_sequence self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== ERROR: test_shell_string (test.test_subprocess.ProcessTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_subprocess.py", line 642, in test_shell_string self.assertNotEqual(p.stdout.read().find("physalis"), -1) TypeError: Type str doesn't support the buffer API ====================================================================== FAIL: test_text_mode (test.test_tempfile.test_SpooledTemporaryFile) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_tempfile.py", line 747, in test_text_mode self.assertEqual(f.read(), "abc\ndef\nxyzzy\n") AssertionError: 'abc\n\ndef\n\nxyzzy\n\n' != 'abc\ndef\nxyzzy\n' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_urllib2net.py", line 173, in test_ftp self._test_urls(urls, self._extra_handlers()) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_urllib2net.py", line 242, in _test_urls f = urllib2.urlopen(url, req) File "C:\buildbot\work\trunk.heller-windows\build\lib\urllib2.py", line 122, in urlopen return _opener.open(url, data, timeout) File "C:\buildbot\work\trunk.heller-windows\build\lib\urllib2.py", line 378, in open response = self._open(req, data) File "C:\buildbot\work\trunk.heller-windows\build\lib\urllib2.py", line 396, in _open '_open', req) File "C:\buildbot\work\trunk.heller-windows\build\lib\urllib2.py", line 356, in _call_chain result = func(*args) File "C:\buildbot\work\trunk.heller-windows\build\lib\urllib2.py", line 1271, in ftp_open fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout) File "C:\buildbot\work\trunk.heller-windows\build\lib\urllib2.py", line 1316, in connect_ftp self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout) File "C:\buildbot\work\trunk.heller-windows\build\lib\urllib.py", line 785, in __init__ self.init() File "C:\buildbot\work\trunk.heller-windows\build\lib\urllib.py", line 792, in init self.ftp.login(self.user, self.passwd) File "C:\buildbot\work\trunk.heller-windows\build\lib\ftplib.py", line 372, in login if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd) File "C:\buildbot\work\trunk.heller-windows\build\lib\ftplib.py", line 242, in sendcmd return self.getresp() File "C:\buildbot\work\trunk.heller-windows\build\lib\ftplib.py", line 208, in getresp resp = self.getmultiline() File "C:\buildbot\work\trunk.heller-windows\build\lib\ftplib.py", line 198, in getmultiline nextline = self.getline() File "C:\buildbot\work\trunk.heller-windows\build\lib\ftplib.py", line 181, in getline line = self.file.readline() File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 1319, in readline readahead, pending = self._read_chunk() File "c:\buildbot\work\trunk.heller-windows\build\lib\io.py", line 1123, in _read_chunk pending = self._decoder.decode(readahead, not readahead) File "C:\buildbot\work\trunk.heller-windows\build\lib\encodings\ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 47: ordinal not in range(128) sincerely, -The Buildbot From buildbot at python.org Wed Sep 26 09:58:12 2007 From: buildbot at python.org (buildbot at python.org) Date: Wed, 26 Sep 2007 07:58:12 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu 2.5 Message-ID: <20070926075812.3D5DD1E4020@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%202.5/builds/19 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: georg.brandl,sean.reifschneider,thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_bsddb3 test_fcntl test_ioctl test_resource ====================================================================== FAIL: test_get_key (bsddb.test.test_sequence.DBSequenceTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-sparc/build/Lib/bsddb/test/test_sequence.py", line 67, in test_get_key self.assertEquals(key, self.seq.get_key()) AssertionError: 'foo' != '' Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/2.5.klose-ubuntu-sparc/build/Lib/test/test_fcntl.py", line 53, in rv = fcntl.fcntl(f.fileno(), fcntl.F_SETLKW, lockdata) IOError: [Errno 14] Bad address ====================================================================== ERROR: test_ioctl (test.test_ioctl.IoctlTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-sparc/build/Lib/test/test_ioctl.py", line 23, in test_ioctl r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ") IOError: [Errno 14] Bad address ====================================================================== ERROR: test_ioctl_mutate (test.test_ioctl.IoctlTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-sparc/build/Lib/test/test_ioctl.py", line 32, in test_ioctl_mutate r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) IOError: [Errno 14] Bad address Traceback (most recent call last): File "./Lib/test/regrtest.py", line 549, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/2.5.klose-ubuntu-sparc/build/Lib/test/test_resource.py", line 42, in f.close() IOError: [Errno 27] File too large make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Wed Sep 26 19:03:39 2007 From: python-checkins at python.org (phillip.eby) Date: Wed, 26 Sep 2007 19:03:39 +0200 (CEST) Subject: [Python-checkins] r58257 - sandbox/trunk/setuptools/setuptools/command/egg_info.py Message-ID: <20070926170339.5330F1E4009@bag.python.org> Author: phillip.eby Date: Wed Sep 26 19:03:39 2007 New Revision: 58257 Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py Log: Fix cross-platform line-end problem with SOURCES.txt: distutils doesn't expect manifest files to be shipped across platforms. Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py ============================================================================== --- sandbox/trunk/setuptools/setuptools/command/egg_info.py (original) +++ sandbox/trunk/setuptools/setuptools/command/egg_info.py Wed Sep 26 19:03:39 2007 @@ -8,7 +8,6 @@ from distutils.errors import * from distutils import log from setuptools.command.sdist import sdist -from distutils import file_util from distutils.util import convert_path from distutils.filelist import FileList from pkg_resources import parse_requirements, safe_name, parse_version, \ @@ -39,6 +38,7 @@ + def initialize_options(self): self.egg_name = None self.egg_version = None @@ -271,6 +271,8 @@ """File list that accepts only existing, platform-independent paths""" def append(self, item): + if item.endswith('\r'): # Fix older sdists built on Windows + item = item[:-1] path = convert_path(item) if os.path.exists(path): self.files.append(path) @@ -283,8 +285,6 @@ - - class manifest_maker(sdist): template = "MANIFEST.in" @@ -319,7 +319,7 @@ files = self.filelist.files if os.sep!='/': files = [f.replace(os.sep,'/') for f in files] - self.execute(file_util.write_file, (self.manifest, files), + self.execute(write_file, (self.manifest, files), "writing manifest file '%s'" % self.manifest) def warn(self, msg): # suppress missing-file warnings from sdist @@ -347,13 +347,13 @@ self.filelist.exclude_pattern(sep+r'(RCS|CVS|\.svn)'+sep, is_regex=1) - - - - - - - +def write_file (filename, contents): + """Create a file with the specified name and write 'contents' (a + sequence of strings without line terminators) to it. + """ + f = open(filename, "wb") # always write POSIX-style manifest + f.write("\n".join(contents)) + f.close() From python-checkins at python.org Wed Sep 26 19:04:48 2007 From: python-checkins at python.org (phillip.eby) Date: Wed, 26 Sep 2007 19:04:48 +0200 (CEST) Subject: [Python-checkins] r58258 - in sandbox/branches/setuptools-0.6: ez_setup.py release.sh setup.py setuptools/__init__.py version.dat Message-ID: <20070926170448.C127F1E4009@bag.python.org> Author: phillip.eby Date: Wed Sep 26 19:04:48 2007 New Revision: 58258 Modified: sandbox/branches/setuptools-0.6/ez_setup.py sandbox/branches/setuptools-0.6/release.sh sandbox/branches/setuptools-0.6/setup.py sandbox/branches/setuptools-0.6/setuptools/__init__.py sandbox/branches/setuptools-0.6/version.dat Log: Bump version. Modified: sandbox/branches/setuptools-0.6/ez_setup.py ============================================================================== --- sandbox/branches/setuptools-0.6/ez_setup.py (original) +++ sandbox/branches/setuptools-0.6/ez_setup.py Wed Sep 26 19:04:48 2007 @@ -14,7 +14,7 @@ This file can also be run as a script to install or upgrade setuptools. """ import sys -DEFAULT_VERSION = "0.6c7" +DEFAULT_VERSION = "0.6c8" DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3] md5_data = { Modified: sandbox/branches/setuptools-0.6/release.sh ============================================================================== --- sandbox/branches/setuptools-0.6/release.sh (original) +++ sandbox/branches/setuptools-0.6/release.sh Wed Sep 26 19:04:48 2007 @@ -7,7 +7,7 @@ # If your initials aren't PJE, don't run it. :) # -export VERSION="0.6c7" +export VERSION="0.6c8" python2.3 setup.py -q release source --target-version=2.3 upload && \ python2.4 setup.py -q release binary --target-version=2.4 upload && \ Modified: sandbox/branches/setuptools-0.6/setup.py ============================================================================== --- sandbox/branches/setuptools-0.6/setup.py (original) +++ sandbox/branches/setuptools-0.6/setup.py Wed Sep 26 19:04:48 2007 @@ -7,7 +7,7 @@ execfile(convert_path('setuptools/command/__init__.py'), d) SETUP_COMMANDS = d['__all__'] -VERSION = "0.6c7" +VERSION = "0.6c8" from setuptools import setup, find_packages import sys Modified: sandbox/branches/setuptools-0.6/setuptools/__init__.py ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools/__init__.py (original) +++ sandbox/branches/setuptools-0.6/setuptools/__init__.py Wed Sep 26 19:04:48 2007 @@ -7,7 +7,7 @@ from distutils.util import convert_path import os.path -__version__ = '0.6c7' +__version__ = '0.6c8' __all__ = [ 'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require', 'find_packages' Modified: sandbox/branches/setuptools-0.6/version.dat ============================================================================== --- sandbox/branches/setuptools-0.6/version.dat (original) +++ sandbox/branches/setuptools-0.6/version.dat Wed Sep 26 19:04:48 2007 @@ -1,6 +1,6 @@ [setuptools] status = 'release candidate' major = 0 -build = 7 +build = 8 minor = 6 From python-checkins at python.org Wed Sep 26 19:07:53 2007 From: python-checkins at python.org (phillip.eby) Date: Wed, 26 Sep 2007 19:07:53 +0200 (CEST) Subject: [Python-checkins] r58259 - in sandbox/branches/setuptools-0.6: setuptools.txt setuptools/command/egg_info.py Message-ID: <20070926170753.5D8D41E4013@bag.python.org> Author: phillip.eby Date: Wed Sep 26 19:07:52 2007 New Revision: 58259 Modified: sandbox/branches/setuptools-0.6/setuptools.txt sandbox/branches/setuptools-0.6/setuptools/command/egg_info.py Log: Fixed a missing files problem when using Windows source distributions on non-Windows platforms, due to distutils not handling manifest file line endings correctly. (backport from trunk) Modified: sandbox/branches/setuptools-0.6/setuptools.txt ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools.txt (original) +++ sandbox/branches/setuptools-0.6/setuptools.txt Wed Sep 26 19:07:52 2007 @@ -2611,6 +2611,11 @@ Release Notes/Change History ---------------------------- +0.6final + * Fixed a missing files problem when using Windows source distributions on + non-Windows platforms, due to distutils not handling manifest file line + endings correctly. + 0.6c7 * Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and ``egg_info`` command failing on new, uncommitted SVN directories. Modified: sandbox/branches/setuptools-0.6/setuptools/command/egg_info.py ============================================================================== --- sandbox/branches/setuptools-0.6/setuptools/command/egg_info.py (original) +++ sandbox/branches/setuptools-0.6/setuptools/command/egg_info.py Wed Sep 26 19:07:52 2007 @@ -8,7 +8,6 @@ from distutils.errors import * from distutils import log from setuptools.command.sdist import sdist -from distutils import file_util from distutils.util import convert_path from distutils.filelist import FileList from pkg_resources import parse_requirements, safe_name, parse_version, \ @@ -39,6 +38,7 @@ + def initialize_options(self): self.egg_name = None self.egg_version = None @@ -271,6 +271,8 @@ """File list that accepts only existing, platform-independent paths""" def append(self, item): + if item.endswith('\r'): # Fix older sdists built on Windows + item = item[:-1] path = convert_path(item) if os.path.exists(path): self.files.append(path) @@ -283,8 +285,6 @@ - - class manifest_maker(sdist): template = "MANIFEST.in" @@ -319,7 +319,7 @@ files = self.filelist.files if os.sep!='/': files = [f.replace(os.sep,'/') for f in files] - self.execute(file_util.write_file, (self.manifest, files), + self.execute(write_file, (self.manifest, files), "writing manifest file '%s'" % self.manifest) def warn(self, msg): # suppress missing-file warnings from sdist @@ -347,13 +347,13 @@ self.filelist.exclude_pattern(sep+r'(RCS|CVS|\.svn)'+sep, is_regex=1) - - - - - - - +def write_file (filename, contents): + """Create a file with the specified name and write 'contents' (a + sequence of strings without line terminators) to it. + """ + f = open(filename, "wb") # always write POSIX-style manifest + f.write("\n".join(contents)) + f.close() From python-checkins at python.org Wed Sep 26 22:47:58 2007 From: python-checkins at python.org (brett.cannon) Date: Wed, 26 Sep 2007 22:47:58 +0200 (CEST) Subject: [Python-checkins] r58261 - sandbox/trunk/import_in_py/Py3K/Py3K_TODO Message-ID: <20070926204758.53CDF1E4027@bag.python.org> Author: brett.cannon Date: Wed Sep 26 22:47:58 2007 New Revision: 58261 Removed: sandbox/trunk/import_in_py/Py3K/Py3K_TODO Log: Remove todo file. Keeping better track in a Google doc personally (which can be shared with anyone who really cares). Deleted: /sandbox/trunk/import_in_py/Py3K/Py3K_TODO ============================================================================== --- /sandbox/trunk/import_in_py/Py3K/Py3K_TODO Wed Sep 26 22:47:58 2007 +++ (empty file) @@ -1,7 +0,0 @@ -This doc lists what is left to do before importlib can become the -"One True Import". The items in the list must be done in order! - -* Bootstrap in as default import implementation. -* Fix C API to call importlib. -* Remove C implementation. -* Tune performance. From python-checkins at python.org Wed Sep 26 22:50:49 2007 From: python-checkins at python.org (brett.cannon) Date: Wed, 26 Sep 2007 22:50:49 +0200 (CEST) Subject: [Python-checkins] r58262 - sandbox/trunk/import_in_py/Py3K/_importlib.py sandbox/trunk/import_in_py/Py3K/importlib.py Message-ID: <20070926205049.7CF2F1E4019@bag.python.org> Author: brett.cannon Date: Wed Sep 26 22:50:49 2007 New Revision: 58262 Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py sandbox/trunk/import_in_py/Py3K/importlib.py Log: Move over to using imp._case_ok() from branches/py3k-importlib. This means that this is now dependent on the branch work for testing purposes. Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/_importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/_importlib.py Wed Sep 26 22:50:49 2007 @@ -62,7 +62,7 @@ # Injected modules are 'warnings', 'imp', 'sys', 'marshal', 'errno', and '_os' # (a.k.a. 'posix', 'nt' or 'os2'). # Injected attribute is path_sep. -# XXX Temporarily injected functions are _r_long, _w_long, and _case_ok. +# XXX Temporarily injected functions are _r_long, _w_long. # XXX Could also expose Modules/getpath.c:joinpath() @@ -116,6 +116,23 @@ else: return _path_join(_os.getcwd(), path) +def _case_ok(module_name, path, ext=''): + """Wrapper for imp._case_ok() and its crazy call signature: + + Arguments: + + - buf + String containing the path to test. + - len + Length of bug minus file extension. + - name + Module name. + + """ + trimmed_path_len = len(path) - len(ext) + print('_case_ok:', path, trimmed_path_len, module_name) + return imp._case_ok(path, trimmed_path_len, module_name) + class _BuiltinFrozenBaseImporter(object): @@ -578,20 +595,21 @@ init_filename = '__init__' + ext package_init = _path_join(package_directory, init_filename) if (_path_isfile(package_init) and - _case_ok(self._path_entry, tail_module) and - _case_ok(package_directory, init_filename)): + _case_ok(tail_module, package_directory) and + _case_ok('__init__', package_init, ext)): return self._loader(fullname, package_init, True) for ext in self._suffixes: file_name = tail_module + ext file_path = _path_join(self._path_entry, file_name) if (_path_isfile(file_path) and - _case_ok(self._path_entry, file_name)): + _case_ok(tail_module, file_path, ext)): return self._loader(fullname, file_path, False) else: # Raise a warning if it matches a directory w/o an __init__ file. if (package_directory is not None and _path_isdir(package_directory) and - _case_ok(self._path_entry, tail_module)): + _case_ok(tail_module, + _path_join(self._path_entry, tail_module))): warnings.warn("Not importing directory %s: missing __init__" % package_directory, ImportWarning) Modified: sandbox/trunk/import_in_py/Py3K/importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/importlib.py Wed Sep 26 22:50:49 2007 @@ -74,32 +74,6 @@ return x -def _case_ok(directory, file_name): - """Verify that file_name (as found in 'directory') has the proper case. - - The path is assumed to already exist. - - XXX Temporary until imp's case_ok function can be exposed. - - XXX Better to roll this into a single function some how so that existence - check can be part of case check and thus cut down on stat calls? - - """ - # If platform is not case-sensitive *or* the environment variable - # PYTHONCASEOK is defined, then os.path.exists already handled the case by - # either doing a case-sensitive check or from the user saying he does not - # want case-sensitivity, respectively. - if sys.platform not in ('win32', 'mac', 'riscos', 'darwin', 'cygwin', - 'os2emx') or os.environ.get('PYTHONCASEOK'): - return True - directory_contents = os.listdir(directory) - if file_name in directory_contents: - return True - else: - return False - - - # Required built-in modules. try: import posix as _os @@ -125,7 +99,6 @@ from os import sep _importlib._r_long = _r_long #XXX Expose original from marshal. _importlib._w_long = _w_long #XXX Expose original from marshal. -_importlib._case_ok = _case_ok #XXX Expose original from imp. # For os.path.join replacement; pull from Include/osdefs.h:SEP . _importlib.path_sep = sep From python-checkins at python.org Wed Sep 26 23:55:16 2007 From: python-checkins at python.org (guido.van.rossum) Date: Wed, 26 Sep 2007 23:55:16 +0200 (CEST) Subject: [Python-checkins] r58263 - peps/trunk/pep-0000.txt peps/trunk/pep-3137.txt Message-ID: <20070926215516.B12AE1E4017@bag.python.org> Author: guido.van.rossum Date: Wed Sep 26 23:55:16 2007 New Revision: 58263 Added: peps/trunk/pep-3137.txt (contents, props changed) Modified: peps/trunk/pep-0000.txt Log: PEP 3137: immutable bytes and mutable buffer. Modified: peps/trunk/pep-0000.txt ============================================================================== --- peps/trunk/pep-0000.txt (original) +++ peps/trunk/pep-0000.txt Wed Sep 26 23:55:16 2007 @@ -96,6 +96,7 @@ S 3116 New I/O Stutzbach, Verdone, GvR S 3134 Exception Chaining and Embedded Tracebacks Yee S 3135 New Super Spealman, Delaney + S 3137 Immutable Bytes and Mutable Buffer GvR S 3141 A Type Hierarchy for Numbers Yasskin Finished PEPs (done, implemented in Subversion) @@ -509,6 +510,7 @@ S 3134 Exception Chaining and Embedded Tracebacks Yee S 3135 New Super Spealman, Delaney SR 3136 Labeled break and continue Chisholm + S 3137 Immutable Bytes and Mutable Buffer GvR S 3141 A Type Hierarchy for Numbers Yasskin Added: peps/trunk/pep-3137.txt ============================================================================== --- (empty file) +++ peps/trunk/pep-3137.txt Wed Sep 26 23:55:16 2007 @@ -0,0 +1,239 @@ +PEP: 3137 +Title: Immutable Bytes and Mutable Buffer +Version: $Revision$ +Last-Modified: $Date$ +Author: Guido van Rossum +Status: Draft +Type: Standards Track +Content-Type: text/x-rst +Created: 26-May-2007 +Python-Version: 3.0 +Post-History: 26-may-2007 + +Introduction +============ + +After releasing Python 3.0a1 with a mutable bytes type, pressure +mounted to add a way to represent immutable bytes. Gregory P. Smith +proposed a patch that would allow making a bytes object temporarily +immutable by requesting that the data be locked using the new buffer +API from PEP 3118. This did not seem the right approach to me. + +Jeffrey Yasskin, with the help of Adam Hupp, then prepared a patch to +make the bytes type immutable (by crudely removing all mutating APIs) +and fix the fall-out in the test suite. This showed that there aren't +all that many places that depend on the mutability of bytes, with the +exception of code that builds up a return value from small pieces. + +Thinking through the consequences, and noticing that using the array +module as an ersatz mutable bytes type is far from ideal, and +recalling a proposal put forward earlier by Talin, I floated the +suggestion to have both a mutable and an immutable bytes type. (This +had been brought up before, but until seeing the evidence of Jeffrey's +patch I wasn't open to the suggestion.) + +Moreover, a possible implementation strategy became clear: use the old +PyString implementation, stripped down to remove locale support and +implicit conversions to/from Unicode, for the immutable bytes type, +and keep the new PyBytes implementation as the mutable bytes type. + +The ensuing discussion made it clear that the idea is welcome but +needs to be specified more precisely. Hence this PEP. + +Advantages +========== + +One advantage of having an immutable bytes type is that code objects +can use these. It also makes it possible to efficiently create hash +tables using bytes for keys; this may be useful when parsing protocols +like HTTP or SMTP which are based on bytes representing text. + +Porting code that manipulates binary data (or encoded text) in Python +2.x will be easier using the new design than using the original 3.0 +design with mutable bytes; simply replace ``str`` with ``bytes`` and +change '...' literals into b'...' literals. + +Naming +====== + +I propose the following type names at the Python level: + + - ``bytes`` is an immutable array of bytes (PyString) + + - ``buffer`` is a mutable array of bytes (PyBytes) + + - ``memoryview`` is a bytes view on another object (PyMemory) + +The old type named ``buffer`` is so similar to the new type +``memoryview``, introduce by PEP 3118, that it is redundant. The rest +of this PEP doesn't discuss the functionality of ``memoryview``; it is +just mentioned here to justify getting rid of the old ``buffer`` type +so we can reuse its name for the mutable bytes type. + +While eventually it makes sense to change the C API names, this PEP +maintains the old C API names, which should be familiar to all. + +Literal Notations +================= + +The b'...' notation introduced in Python 3.0a1 returns an immutable +bytes object, whatever variation is used. To create a mutable bytes +buffer object, use buffer(b'...') or buffer([...]). The latter may +use a list of integers in range(256). + +Functionality +============= + +PEP 3118 Buffer API +------------------- + +Both bytes and buffer support the PEP 3118 buffer API. The bytes type +only supports read-only requests; the buffer type allows writable and +data-locked requests as well. The element data type is always 'B' +(i.e. unsigned byte). + +Constructors +------------ + +There are four forms of constructors, applicable to both bytes and +buffer: + + - ``bytes()``, ``bytes()``, ``buffer()``, + ``buffer()``: simple copying constructors, with the note + that ``bytes()`` might return its (immutable) argument. + + - ``bytes(, [, ])``, ``buffer(, + [, ])``: encode a text string. Note that the + ``str.encode()`` method returns an *immutable* bytes object. + The argument is mandatory; is optional. + + - ``bytes()``, ``buffer()``: construct a + bytes or buffer object from anything that supports the PEP 3118 + buffer API. + + - ``bytes()``, ``buffer()``: + construct an immutable bytes or mutable buffer object from a + stream of integers in range(256). + + - ``buffer()``: construct a zero-initialized buffer of a given + lenth. + +Comparisons +----------- + +The bytes and buffer types are comparable with each other and +orderable, so that e.g. b'abc' == buffer(b'abc') < b'abd'. + +Comparing either type to a str object raises an exception. This +turned out to be necessary to catch common mistakes. + +Slicing +------- + +Slicing a bytes object returns a bytes object. Slicing a buffer +object returns a buffer object. + +Slice assignment to a mutable buffer object accept anything that +supports the PEP 3118 buffer API, or an iterable of integers in +range(256). + +Indexing +-------- + +**Open Issue:** I'm undecided on whether indexing bytes and buffer +objects should return small ints (like the bytes type in 3.0a1, and +like lists or array.array('B')), or bytes/buffer objects of length 1 +(like the str type). The latter (str-like) approach will ease porting +code from Python 2.x; but it makes it harder to extract values from a +bytes array. + +Assignment to an item of a mutable buffer object accepts an int in +range(256); if we choose the str-like approach for indexing above, it +also accepts an object implementing the PEP 3118 buffer API, if it has +length 1. + +Str() and Repr() +---------------- + +The str() and repr() functions return the same thing for these +objects. The repr() of a bytes object returns a b'...' style literal. +The repr() of a buffer returns a string of the form "buffer(b'...')". + +Methods +------- + +The following methods are supported by bytes as well as buffer, with +similar semantics. They accept anything that implements the PEP 3118 +buffer API for bytes arguments, and return the same type as the object +whose method is called ("self"):: + + .capitalize(), .center(), .count(), .decode(), .endswith(), + .expandtabs(), .find(), .index(), .isalnum(), .isalpha(), .isdigit(), + .islower(), .isspace(), .istitle(), .isupper(), .join(), .ljust(), + .lower(), .lstrip(), .partition(), .replace(), .rfind(), .rindex(), + .rjust(), .rpartition(), .rsplit(), .rstrip(), .split(), + .splitlines(), .startswith(), .strip(), .swapcase(), .title(), + .translate(), .upper(), .zfill() + +This is exactly the set of methods present on the str type in Python +2.x, with the exclusion of .encode(). The signatures and semantics +are the same too. However, whenever character classes like letter, +whitespace, lower case are used, the ASCII definitions of these +classes are used. (The Python 2.x str type uses the definitions from +the current locale, settable through the locale module.) The +.encode() method is left out because of the more strict definitions of +encoding and decoding in Python 3000: encoding always takes a Unicode +string and returns a bytes sequence, and decoding always takes a bytes +sequence and returns a Unicode string. + +Bytes and the Str Type +---------------------- + +Like the bytes type in Python 3.0a1, and unlike the relationship +between str and unicode in Python 2.x, any attempt to mix bytes (or +buffer) objects and str objects without specifying an encoding will +raise a TypeError exception. This is the case even for simply +comparing a bytes or buffer object to a str object (even violating the +general rule that comparing objects of different types for equality +should just return False). + +Conversions between bytes or buffer objects and str objects must +always be explicit, using an encoding. There are two equivalent APIs: +``str(b, [, ])`` is equivalent to +``b.encode([, ])``, and +``bytes(s, [, ])`` is equivalent to +``s.decode([, ])``. + +There is one exception: we can convert from bytes (or buffer) to str +without specifying an encoding by writing ``str(b)``. This produces +the same result as ``repr(b)``. This exception is necessary because +of the general promise that *any* object can be printed, and printing +is just a special case of conversion to str. There is however no +promise that printing a bytes object interprets the individual bytes +as characters (unlike in Python 2.x). + +The str type current supports the PEP 3118 buffer API. While this is +perhaps occasionally convenient, it is also potentially confusing, +because the bytes accessed via the buffer API represent a +platform-depending encoding: depending on the platform byte order and +a compile-time configuration option, the encoding could be UTF-16-BE, +UTF-16-LE, UTF-32-BE, or UTF-32-LE. Worse, a different implementation +of the str type might completely change the bytes representation, +e.g. to UTF-8, or even make it impossible to access the data as a +contiguous array of bytes at all. Therefore, support for the PEP 3118 +buffer API will be removed from the str type. + +Copyright +========= + +This document has been placed in the public domain. + + +.. + Local Variables: + mode: indented-text + indent-tabs-mode: nil + sentence-end-double-space: t + fill-column: 70 + coding: utf-8 + End: From python-checkins at python.org Wed Sep 26 23:58:30 2007 From: python-checkins at python.org (guido.van.rossum) Date: Wed, 26 Sep 2007 23:58:30 +0200 (CEST) Subject: [Python-checkins] r58264 - peps/trunk/pep-3137.txt Message-ID: <20070926215830.41C411E4023@bag.python.org> Author: guido.van.rossum Date: Wed Sep 26 23:58:29 2007 New Revision: 58264 Modified: peps/trunk/pep-3137.txt Log: Fix date. Modified: peps/trunk/pep-3137.txt ============================================================================== --- peps/trunk/pep-3137.txt (original) +++ peps/trunk/pep-3137.txt Wed Sep 26 23:58:29 2007 @@ -6,9 +6,9 @@ Status: Draft Type: Standards Track Content-Type: text/x-rst -Created: 26-May-2007 +Created: 26-Sep-2007 Python-Version: 3.0 -Post-History: 26-may-2007 +Post-History: 26-Sep-2007 Introduction ============ From python-checkins at python.org Thu Sep 27 00:39:21 2007 From: python-checkins at python.org (brett.cannon) Date: Thu, 27 Sep 2007 00:39:21 +0200 (CEST) Subject: [Python-checkins] r58265 - peps/trunk/pep-3137.txt Message-ID: <20070926223921.D15DF1E4009@bag.python.org> Author: brett.cannon Date: Thu Sep 27 00:39:21 2007 New Revision: 58265 Modified: peps/trunk/pep-3137.txt Log: Fix a spelling mistake. Modified: peps/trunk/pep-3137.txt ============================================================================== --- peps/trunk/pep-3137.txt (original) +++ peps/trunk/pep-3137.txt Thu Sep 27 00:39:21 2007 @@ -116,7 +116,7 @@ stream of integers in range(256). - ``buffer()``: construct a zero-initialized buffer of a given - lenth. + length. Comparisons ----------- From python-checkins at python.org Thu Sep 27 00:54:58 2007 From: python-checkins at python.org (brett.cannon) Date: Thu, 27 Sep 2007 00:54:58 +0200 (CEST) Subject: [Python-checkins] r58266 - peps/trunk/pep-3137.txt Message-ID: <20070926225458.8CCE31E4017@bag.python.org> Author: brett.cannon Date: Thu Sep 27 00:54:58 2007 New Revision: 58266 Modified: peps/trunk/pep-3137.txt Log: Minor grammatical fix. Modified: peps/trunk/pep-3137.txt ============================================================================== --- peps/trunk/pep-3137.txt (original) +++ peps/trunk/pep-3137.txt Thu Sep 27 00:54:58 2007 @@ -212,7 +212,7 @@ promise that printing a bytes object interprets the individual bytes as characters (unlike in Python 2.x). -The str type current supports the PEP 3118 buffer API. While this is +The str type currently supports the PEP 3118 buffer API. While this is perhaps occasionally convenient, it is also potentially confusing, because the bytes accessed via the buffer API represent a platform-depending encoding: depending on the platform byte order and From python-checkins at python.org Thu Sep 27 01:06:20 2007 From: python-checkins at python.org (guido.van.rossum) Date: Thu, 27 Sep 2007 01:06:20 +0200 (CEST) Subject: [Python-checkins] r58267 - peps/trunk/pep-3137.txt Message-ID: <20070926230620.519F01E4009@bag.python.org> Author: guido.van.rossum Date: Thu Sep 27 01:06:19 2007 New Revision: 58267 Modified: peps/trunk/pep-3137.txt Log: Added language about operators and pickling. Standardized on "implementing" the PEP 3118 buffer API rather than "supporting" it. Modified: peps/trunk/pep-3137.txt ============================================================================== --- peps/trunk/pep-3137.txt (original) +++ peps/trunk/pep-3137.txt Thu Sep 27 01:06:19 2007 @@ -87,9 +87,9 @@ PEP 3118 Buffer API ------------------- -Both bytes and buffer support the PEP 3118 buffer API. The bytes type -only supports read-only requests; the buffer type allows writable and -data-locked requests as well. The element data type is always 'B' +Both bytes and buffer implement the PEP 3118 buffer API. The bytes +type only supports read-only requests; the buffer type allows writable +and data-locked requests as well. The element data type is always 'B' (i.e. unsigned byte). Constructors @@ -108,7 +108,7 @@ The argument is mandatory; is optional. - ``bytes()``, ``buffer()``: construct a - bytes or buffer object from anything that supports the PEP 3118 + bytes or buffer object from anything implementing the PEP 3118 buffer API. - ``bytes()``, ``buffer()``: @@ -134,7 +134,7 @@ object returns a buffer object. Slice assignment to a mutable buffer object accept anything that -supports the PEP 3118 buffer API, or an iterable of integers in +implements the PEP 3118 buffer API, or an iterable of integers in range(256). Indexing @@ -159,6 +159,36 @@ objects. The repr() of a bytes object returns a b'...' style literal. The repr() of a buffer returns a string of the form "buffer(b'...')". +Operators +--------- + +The following operators are supported by the bytes and buffer types, +except where mentioned: + + - ``b1 + b2``: concatenation. With mixed bytes/buffer operands, + the return type is that of the first argument (this seems arbitrary + until you consider how ``+=`` works). + + - ``b1 += b2'': mutates b1 if it is a buffer object. + + - ``b * n``, ``n * b``: repetition; n must be an integer. + + - ``b *= n``: mutates b if it is a buffer object. + + - ``b1 in b2``, ``b1 not in b2``: substring test; b1 can be any + object implementing the PEP 3118 buffer API. + + - ``i in b``, ``i not in b``: single-byte membership test; i must + be an integer (if it is a length-1 bytes array, it is considered + to be a substring test, with the same outcome). + + - ``len(b)``: the number of bytes. + + - ``hash(b)``: the hash value; only implemented by the bytes type. + +Note that the % operator is *not* supported. It does not appear worth +the complexity. + Methods ------- @@ -212,16 +242,21 @@ promise that printing a bytes object interprets the individual bytes as characters (unlike in Python 2.x). -The str type currently supports the PEP 3118 buffer API. While this is -perhaps occasionally convenient, it is also potentially confusing, +The str type currently implements the PEP 3118 buffer API. While this +is perhaps occasionally convenient, it is also potentially confusing, because the bytes accessed via the buffer API represent a platform-depending encoding: depending on the platform byte order and a compile-time configuration option, the encoding could be UTF-16-BE, UTF-16-LE, UTF-32-BE, or UTF-32-LE. Worse, a different implementation of the str type might completely change the bytes representation, e.g. to UTF-8, or even make it impossible to access the data as a -contiguous array of bytes at all. Therefore, support for the PEP 3118 -buffer API will be removed from the str type. +contiguous array of bytes at all. Therefore, the PEP 3118 buffer API +will be removed from the str type. + +Pickling +-------- + +Left as an exercise for the reader. Copyright ========= From python-checkins at python.org Thu Sep 27 07:34:45 2007 From: python-checkins at python.org (vinay.sajip) Date: Thu, 27 Sep 2007 07:34:45 +0200 (CEST) Subject: [Python-checkins] r58268 - python/trunk/Lib/logging/__init__.py Message-ID: <20070927053445.EB7851E400A@bag.python.org> Author: vinay.sajip Date: Thu Sep 27 07:34:45 2007 New Revision: 58268 Modified: python/trunk/Lib/logging/__init__.py Log: Change to flush and close logic to fix #1760556. Modified: python/trunk/Lib/logging/__init__.py ============================================================================== --- python/trunk/Lib/logging/__init__.py (original) +++ python/trunk/Lib/logging/__init__.py Thu Sep 27 07:34:45 2007 @@ -728,7 +728,8 @@ """ Flushes the stream. """ - self.stream.flush() + if self.stream: + self.stream.flush() def emit(self, record): """ @@ -778,9 +779,11 @@ """ Closes the stream. """ - self.flush() - self.stream.close() - StreamHandler.close(self) + if self.stream: + self.flush() + self.stream.close() + StreamHandler.close(self) + self.stream = None def _open(self): """ From python-checkins at python.org Thu Sep 27 07:38:51 2007 From: python-checkins at python.org (vinay.sajip) Date: Thu, 27 Sep 2007 07:38:51 +0200 (CEST) Subject: [Python-checkins] r58269 - python/trunk/Lib/logging/__init__.py Message-ID: <20070927053851.86B6E1E400A@bag.python.org> Author: vinay.sajip Date: Thu Sep 27 07:38:51 2007 New Revision: 58269 Modified: python/trunk/Lib/logging/__init__.py Log: Change to basicConfig() to fix #1021. Modified: python/trunk/Lib/logging/__init__.py ============================================================================== --- python/trunk/Lib/logging/__init__.py (original) +++ python/trunk/Lib/logging/__init__.py Thu Sep 27 07:38:51 2007 @@ -1247,7 +1247,7 @@ hdlr.setFormatter(fmt) root.addHandler(hdlr) level = kwargs.get("level") - if level: + if level is not None: root.setLevel(level) #--------------------------------------------------------------------------- From python-checkins at python.org Thu Sep 27 08:26:59 2007 From: python-checkins at python.org (georg.brandl) Date: Thu, 27 Sep 2007 08:26:59 +0200 (CEST) Subject: [Python-checkins] r58270 - python/trunk/Doc/library/re.rst Message-ID: <20070927062659.2D5951E400E@bag.python.org> Author: georg.brandl Date: Thu Sep 27 08:26:58 2007 New Revision: 58270 Modified: python/trunk/Doc/library/re.rst Log: #1208: document match object's boolean value. Modified: python/trunk/Doc/library/re.rst ============================================================================== --- python/trunk/Doc/library/re.rst (original) +++ python/trunk/Doc/library/re.rst Thu Sep 27 08:26:58 2007 @@ -28,14 +28,14 @@ patterns; backslashes are not handled in any special way in a string literal prefixed with ``'r'``. So ``r"\n"`` is a two-character string containing ``'\'`` and ``'n'``, while ``"\n"`` is a one-character string containing a -newline. Usually patterns will be expressed in Python code using this raw string -notation. +newline. Usually patterns will be expressed in Python code using this raw +string notation. .. seealso:: Mastering Regular Expressions Book on regular expressions by Jeffrey Friedl, published by O'Reilly. The - second edition of the book no longer covers Python at all, but the first + second edition of the book no longer covers Python at all, but the first edition covered writing good regular expression patterns in great detail. @@ -428,8 +428,8 @@ .. function:: compile(pattern[, flags]) - Compile a regular expression pattern into a regular expression object, which can - be used for matching using its :func:`match` and :func:`search` methods, + Compile a regular expression pattern into a regular expression object, which + can be used for matching using its :func:`match` and :func:`search` methods, described below. The expression's behaviour can be modified by specifying a *flags* value. @@ -445,8 +445,8 @@ result = re.match(pat, str) - but the version using :func:`compile` is more efficient when the expression will - be used several times in a single program. + but the version using :func:`compile` is more efficient when the expression + will be used several times in a single program. .. % (The compiled version of the last pattern passed to .. % \function{re.match()} or \function{re.search()} is cached, so @@ -464,8 +464,8 @@ .. data:: L LOCALE - Make ``\w``, ``\W``, ``\b``, ``\B``, ``\s`` and ``\S`` dependent on the current - locale. + Make ``\w``, ``\W``, ``\b``, ``\B``, ``\s`` and ``\S`` dependent on the + current locale. .. data:: M @@ -554,10 +554,11 @@ .. function:: findall(pattern, string[, flags]) - Return a list of all non-overlapping matches of *pattern* in *string*. If one - or more groups are present in the pattern, return a list of groups; this will be - a list of tuples if the pattern has more than one group. Empty matches are - included in the result unless they touch the beginning of another match. + Return all non-overlapping matches of *pattern* in *string*, as a list of + strings. If one or more groups are present in the pattern, return a list of + groups; this will be a list of tuples if the pattern has more than one group. + Empty matches are included in the result unless they touch the beginning of + another match. .. versionadded:: 1.5.2 @@ -567,9 +568,9 @@ .. function:: finditer(pattern, string[, flags]) - Return an iterator over all non-overlapping matches for the RE *pattern* in - *string*. For each match, the iterator returns a match object. Empty matches - are included in the result unless they touch the beginning of another match. + Return an iterator yielding :class:`MatchObject` instances over all + non-overlapping matches for the RE *pattern* in *string*. Empty matches are + included in the result unless they touch the beginning of another match. .. versionadded:: 2.2 @@ -737,7 +738,9 @@ Match Objects ------------- -:class:`MatchObject` instances support the following methods and attributes: +Match objects always have a boolean value of :const:`True`, so that you can test +whether e.g. :func:`match` resulted in a match with a simple if statement. They +support the following methods and attributes: .. method:: MatchObject.expand(template) From buildbot at python.org Thu Sep 27 08:39:46 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 27 Sep 2007 06:39:46 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20070927063947.4C9BE1E4012@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: vinay.sajip BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Thu Sep 27 08:56:13 2007 From: python-checkins at python.org (vinay.sajip) Date: Thu, 27 Sep 2007 08:56:13 +0200 (CEST) Subject: [Python-checkins] r58271 - python/trunk/Lib/logging/__init__.py Message-ID: <20070927065614.819761E401E@bag.python.org> Author: vinay.sajip Date: Thu Sep 27 08:56:13 2007 New Revision: 58271 Modified: python/trunk/Lib/logging/__init__.py Log: Minor date change. Modified: python/trunk/Lib/logging/__init__.py ============================================================================== --- python/trunk/Lib/logging/__init__.py (original) +++ python/trunk/Lib/logging/__init__.py Thu Sep 27 08:56:13 2007 @@ -41,8 +41,8 @@ __author__ = "Vinay Sajip " __status__ = "production" -__version__ = "0.5.0.2" -__date__ = "16 February 2007" +__version__ = "0.5.0.3" +__date__ = "26 September 2007" #--------------------------------------------------------------------------- # Miscellaneous module data From python-checkins at python.org Thu Sep 27 09:35:11 2007 From: python-checkins at python.org (vinay.sajip) Date: Thu, 27 Sep 2007 09:35:11 +0200 (CEST) Subject: [Python-checkins] r58272 - python/trunk/Lib/logging/__init__.py Message-ID: <20070927073511.8FDDD1E4011@bag.python.org> Author: vinay.sajip Date: Thu Sep 27 09:35:10 2007 New Revision: 58272 Modified: python/trunk/Lib/logging/__init__.py Log: Change to LogRecord.__init__() to fix #1206. Note that archaic use of type(x) == types.DictType is because of keeping 1.5.2 compatibility. While this is much less relevant these days, there probably needs to be a separate commit for removing all archaic constructs at the same time. Modified: python/trunk/Lib/logging/__init__.py ============================================================================== --- python/trunk/Lib/logging/__init__.py (original) +++ python/trunk/Lib/logging/__init__.py Thu Sep 27 09:35:10 2007 @@ -234,7 +234,9 @@ # 'Value is %d' instead of 'Value is 0'. # For the use case of passing a dictionary, this should not be a # problem. - if args and (len(args) == 1) and args[0] and (type(args[0]) == types.DictType): + if args and len(args) == 1 and ( + type(args[0]) == types.DictType + ) and args[0]: args = args[0] self.args = args self.levelname = getLevelName(level) From buildbot at python.org Thu Sep 27 10:41:33 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 27 Sep 2007 08:41:33 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20070927084134.124561E400A@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/234 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,vinay.sajip BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_xmlrpc make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Thu Sep 27 11:59:19 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 27 Sep 2007 09:59:19 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux trunk Message-ID: <20070927095919.3277B1E400A@bag.python.org> The Buildbot has detected a new failure of ARM Linux trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20trunk/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-arm Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: vinay.sajip BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From python-checkins at python.org Thu Sep 27 16:24:33 2007 From: python-checkins at python.org (guido.van.rossum) Date: Thu, 27 Sep 2007 16:24:33 +0200 (CEST) Subject: [Python-checkins] r58273 - peps/trunk/pep-3137.txt Message-ID: <20070927142433.2CDCD1E400B@bag.python.org> Author: guido.van.rossum Date: Thu Sep 27 16:24:32 2007 New Revision: 58273 Modified: peps/trunk/pep-3137.txt Log: Fixed encode()/decode() turn-around. Modified: peps/trunk/pep-3137.txt ============================================================================== --- peps/trunk/pep-3137.txt (original) +++ peps/trunk/pep-3137.txt Thu Sep 27 16:24:32 2007 @@ -230,9 +230,9 @@ Conversions between bytes or buffer objects and str objects must always be explicit, using an encoding. There are two equivalent APIs: ``str(b, [, ])`` is equivalent to -``b.encode([, ])``, and +``b.decode([, ])``, and ``bytes(s, [, ])`` is equivalent to -``s.decode([, ])``. +``s.encode([, ])``. There is one exception: we can convert from bytes (or buffer) to str without specifying an encoding by writing ``str(b)``. This produces From python-checkins at python.org Thu Sep 27 19:39:58 2007 From: python-checkins at python.org (paul.dubois) Date: Thu, 27 Sep 2007 19:39:58 +0200 (CEST) Subject: [Python-checkins] r58274 - tracker/instances/python-dev/detectors/audit2to3.py Message-ID: <20070927173958.75DBF1E400D@bag.python.org> Author: paul.dubois Date: Thu Sep 27 19:39:58 2007 New Revision: 58274 Modified: tracker/instances/python-dev/detectors/audit2to3.py Log: Fix initialization of componentIDS. Modified: tracker/instances/python-dev/detectors/audit2to3.py ============================================================================== --- tracker/instances/python-dev/detectors/audit2to3.py (original) +++ tracker/instances/python-dev/detectors/audit2to3.py Thu Sep 27 19:39:58 2007 @@ -7,6 +7,7 @@ assigned. ''' # nodeid will be None if this is a new node + componentIDS=None if nodeid is not None: componentIDS = cl.get(nodeid, 'components') if newvalues.has_key('components'): From python-checkins at python.org Thu Sep 27 19:54:02 2007 From: python-checkins at python.org (guido.van.rossum) Date: Thu, 27 Sep 2007 19:54:02 +0200 (CEST) Subject: [Python-checkins] r58275 - peps/trunk/pep-3137.txt Message-ID: <20070927175402.345D51E4012@bag.python.org> Author: guido.van.rossum Date: Thu Sep 27 19:54:01 2007 New Revision: 58275 Modified: peps/trunk/pep-3137.txt Log: Decide that bytes/buffer items are ints. Also: - Add mutable sequence methods. - Add fromhex class method. - "Supports" -> "implements" consistently. Modified: peps/trunk/pep-3137.txt ============================================================================== --- peps/trunk/pep-3137.txt (original) +++ peps/trunk/pep-3137.txt Thu Sep 27 19:54:01 2007 @@ -88,9 +88,9 @@ ------------------- Both bytes and buffer implement the PEP 3118 buffer API. The bytes -type only supports read-only requests; the buffer type allows writable -and data-locked requests as well. The element data type is always 'B' -(i.e. unsigned byte). +type only implements read-only requests; the buffer type allows +writable and data-locked requests as well. The element data type is +always 'B' (i.e. unsigned byte). Constructors ------------ @@ -140,17 +140,12 @@ Indexing -------- -**Open Issue:** I'm undecided on whether indexing bytes and buffer -objects should return small ints (like the bytes type in 3.0a1, and -like lists or array.array('B')), or bytes/buffer objects of length 1 -(like the str type). The latter (str-like) approach will ease porting -code from Python 2.x; but it makes it harder to extract values from a -bytes array. +Indexing bytes and buffer returns small ints (like the bytes type in +3.0a1, and like lists or array.array('B')). Assignment to an item of a mutable buffer object accepts an int in -range(256); if we choose the str-like approach for indexing above, it -also accepts an object implementing the PEP 3118 buffer API, if it has -length 1. +range(256). (To assing from a bytes sequence, use a slice +assignment.) Str() and Repr() ---------------- @@ -162,7 +157,7 @@ Operators --------- -The following operators are supported by the bytes and buffer types, +The following operators are implemented by the bytes and buffer types, except where mentioned: - ``b1 + b2``: concatenation. With mixed bytes/buffer operands, @@ -186,13 +181,13 @@ - ``hash(b)``: the hash value; only implemented by the bytes type. -Note that the % operator is *not* supported. It does not appear worth -the complexity. +Note that the % operator is *not* implemented. It does not appear +worth the complexity. Methods ------- -The following methods are supported by bytes as well as buffer, with +The following methods are implemented by bytes as well as buffer, with similar semantics. They accept anything that implements the PEP 3118 buffer API for bytes arguments, and return the same type as the object whose method is called ("self"):: @@ -216,6 +211,15 @@ string and returns a bytes sequence, and decoding always takes a bytes sequence and returns a Unicode string. +In addition, both types implement the class method ``.fromhex()``, +which constructs an object from a string containing hexadecimal values +(with or without spaces between the bytes). + +The buffer type implements these additional methods from the +MutableSequence ABC (see PEP 3119): + + .extend(), .insert(), .append(), .reverse(), .pop(), .remove(). + Bytes and the Str Type ---------------------- From python-checkins at python.org Thu Sep 27 20:33:16 2007 From: python-checkins at python.org (brett.cannon) Date: Thu, 27 Sep 2007 20:33:16 +0200 (CEST) Subject: [Python-checkins] r58277 - peps/trunk/pep-3137.txt Message-ID: <20070927183316.D61641E400D@bag.python.org> Author: brett.cannon Date: Thu Sep 27 20:33:16 2007 New Revision: 58277 Modified: peps/trunk/pep-3137.txt Log: Fix a small typo. Modified: peps/trunk/pep-3137.txt ============================================================================== --- peps/trunk/pep-3137.txt (original) +++ peps/trunk/pep-3137.txt Thu Sep 27 20:33:16 2007 @@ -144,7 +144,7 @@ 3.0a1, and like lists or array.array('B')). Assignment to an item of a mutable buffer object accepts an int in -range(256). (To assing from a bytes sequence, use a slice +range(256). (To assign from a bytes sequence, use a slice assignment.) Str() and Repr() From buildbot at python.org Thu Sep 27 21:27:08 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 27 Sep 2007 19:27:08 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux 3.0 Message-ID: <20070927192708.716241E400D@bag.python.org> The Buildbot has detected a new failure of ARM Linux 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%203.0/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-arm Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: guido.van.rossum BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From buildbot at python.org Thu Sep 27 21:56:30 2007 From: buildbot at python.org (buildbot at python.org) Date: Thu, 27 Sep 2007 19:56:30 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 3.0 Message-ID: <20070927195630.CAAC71E4016@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%203.0/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: guido.van.rossum BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Fri Sep 28 08:45:53 2007 From: python-checkins at python.org (travis.oliphant) Date: Fri, 28 Sep 2007 08:45:53 +0200 (CEST) Subject: [Python-checkins] r58280 - peps/trunk/pep-3118.txt Message-ID: <20070928064553.98C5E1E400D@bag.python.org> Author: travis.oliphant Date: Fri Sep 28 08:45:52 2007 New Revision: 58280 Modified: peps/trunk/pep-3118.txt Log: Change PyBuffer to Py_buffer in PEP-3118 and clear up the locking mechanism. There are four locking modes (standard read, standard write, read lock --- no other object can write to the array while the current object holds the lock, and exclusive write lock -- no other object can read or write to the data-buffer. Modified: peps/trunk/pep-3118.txt ============================================================================== --- peps/trunk/pep-3118.txt (original) +++ peps/trunk/pep-3118.txt Fri Sep 28 08:45:52 2007 @@ -87,7 +87,7 @@ NumPy's strided memory model is used more often in computational libraries and because it is so simple it makes sense to support memory sharing using this model. The PIL memory model is sometimes - used in C-code where a 2-d array can be then accessed using double + used in C-code where a 2-d array can then be accessed using double pointer indirection: e.g. ``image[i][j]``. The buffer interface should allow the object to export either of these @@ -188,31 +188,38 @@ ``PyBUF_SIMPLE`` This is the default flag state (0). The returned buffer may or may - not have writeable memory. The format will be assumed to be + not have writable memory. The format will be assumed to be unsigned bytes . This is a "stand-alone" flag constant. It never needs to be \|'d to the others. The exporter will raise an error if it cannot provide such a contiguous buffer of bytes. -``PyBUF_CHARACTER`` +``PyBUF_WRITABLE`` - This essentially replaces the separate function for getting a character - buffer (which is useful in at least the unicode type). If an object - should do something different when it is requested as a character - buffer then it should detect this flag and respond differently. - -``PyBUF_WRITEABLE`` - - The returned buffer must be writeable. If it is not writeable, + The returned buffer must be writable. If it is not writable, then raise an error. -``PyBUF_LOCKDATA`` +``PyBUF_LOCK`` - The returned buffer must be readonly. If the object is already - read-only or it can make its memory read-only (and there are no - other writeable views on the object) then it should do so and - return the buffer information. If the object does not have - read-only memory (or cannot make it read-only), then an error - should be raised. + This flag is used to request a lock (either a read-lock or an + exclusive write lock) on the data-area of the object before the + buffer is returned. If the lock cannot be obtained, then an error + should be raised. In conjunction with the PyBUF_WRITABLE flag, the + PyBUF_LOCK flag creates four different access modes on the + data-area of the buffer memory: read, read-with-write-lock, write, + and exclusive write. The access modes are + + ================ ================= ========================== + flags Description Other Requests Can + ================ ================= ========================== + neither read read and write + WRITABLE write read and write + LOCK locked read read but not write + WRITABLE | LOCK exclusive write neither read nor write + ================ ================= ========================== + + Care should be taken not to LOCK the buffer unless it is really + necessary (especially the exlcusive write lock) as it makes the + object unable to share its memory until the lock is released. ``PyBUF_FORMAT`` @@ -223,14 +230,14 @@ format is not explicitly requested then the format must be returned as ``NULL`` (which means "B") -``PyBUF_ALW_ND`` +``PyBUF_ND`` The returned buffer must provide shape information. The memory will be assumed C-style contiguous (last dimension varies the fastest). The exporter may raise an error if it cannot provide this kind of contiguous buffer. If this is not given then shape will be NULL. -``PyBUF_ALW_STRIDES`` (implies ``PyBUF_ALW_ND``) +``PyBUF_STRIDES`` (implies ``PyBUF_ND``) The returned buffer must provide strides information (i.e. the strides cannot be NULL). This would be used when the consumer can @@ -246,11 +253,11 @@ These flags indicate that the returned buffer must be respectively, C-contiguous (last dimension varies the fastest), Fortran contiguous (first dimension varies the fastest) or either one. - All of these flags imply PyBUF_ALW_STRIDES and guarantee that the + All of these flags imply PyBUF_STRIDES and guarantee that the strides buffer info structure will be filled in correctly. -``PyBUF_ALW_INDIRECT`` (implies ``PyBUF_ALW_STRIDES``) +``PyBUF_INDIRECT`` (implies ``PyBUF_STRIDES``) The returned buffer must have suboffsets information (which can be NULL if no suboffsets are needed). This would be used when the @@ -262,27 +269,31 @@ Multi-dimensional (but contiguous) - | ``PyBUF_CONTIG`` (``PyBUF_ALW_ND | PyBUF_WRITEABLE``) - | ``PyBUF_CONTIG_RO`` (``PyBUF_ALW_ND``) - | ``PyBUF_CONTIG_LCK`` (``PyBUF_ALW_ND | PyBUF_LOCKDATA``) + | ``PyBUF_CONTIG`` (``PyBUF_ND | PyBUF_WRITABLE``) + | ``PyBUF_CONTIG_RO`` (``PyBUF_ND``) + | ``PyBUF_CONTIG_LCK`` (``PyBUF_ND | PyBUF_LOCK``) + | ``PyBUF_CONTIG_XLCK`` (``PyBUF_ND | PyBUF_WRITABLE | PyBUF_LOCK``) Multi-dimensional using strides but aligned - | ``PyBUF_STRIDED`` (``PyBUF_ALW_STRIDES | PyBUF_WRITEABLE``) - | ``PyBUF_STRIDED_RO`` (``PyBUF_ALW_STRIDES``) - | ``PyBUF_STRIDED_LCK`` (``PyBUF_ALW_STRIDES | PyBUF_LOCKDATA``) + | ``PyBUF_STRIDED`` (``PyBUF_STRIDES | PyBUF_WRITABLE``) + | ``PyBUF_STRIDED_RO`` (``PyBUF_STRIDES``) + | ``PyBUF_STRIDED_LCK`` (``PyBUF_STRIDES | PyBUF_LOCK``) + | ``PyBUF_STRIDED_XLCK`` (``PyBUF_STRIDES | PyBUF_LOCK | PyBUF_WRITABLE``) Multi-dimensional using strides and not necessarily aligned - | ``PyBUF_RECORDS`` (``PyBUF_ALW_STRIDES | PyBUF_WRITEABLE | PyBUF_FORMAT``) - | ``PyBUF_RECORDS_RO`` (``PyBUF_ALW_STRIDES | PyBUF_FORMAT``) - | ``PyBUF_RECORDS_LCK`` (``PyBUF_ALW_STRIDES | PyBUF_LOCKDATA | PyBUF_FORMAT``) + | ``PyBUF_RECORDS`` (``PyBUF_STRIDES | PyBUF_WRITABLE | PyBUF_FORMAT``) + | ``PyBUF_RECORDS_RO`` (``PyBUF_STRIDES | PyBUF_FORMAT``) + | ``PyBUF_RECORDS_LCK`` (``PyBUF_STRIDES | PyBUF_LOCK | PyBUF_FORMAT``) + | ``PyBUF_RECORDS_XLCK`` (``PyBUF_STRIDES | PyBUF_LOCK | PyBUF_FORMAT | PyBUF_WRITABLE``) Multi-dimensional using sub-offsets - | ``PyBUF_FULL`` (``PyBUF_ALW_INDIRECT | PyBUF_WRITEABLE | PyBUF_FORMAT``) - | ``PyBUF_FULL_RO`` (``PyBUF_ALW_INDIRECT | PyBUF_FORMAT``) - | ``PyBUF_FULL_LCK`` (``PyBUF_ALW_INDIRECT | PyBUF_LOCKDATA | PyBUF_FORMAT``) + | ``PyBUF_FULL`` (``PyBUF_INDIRECT | PyBUF_WRITABLE | PyBUF_FORMAT``) + | ``PyBUF_FULL_RO`` (``PyBUF_INDIRECT | PyBUF_FORMAT``) + | ``PyBUF_FULL_LCK`` (``PyBUF_INDIRECT | PyBUF_LOCK | PyBUF_FORMAT``) + | ``PyBUF_FULL_XLCK`` (``PyBUF_INDIRECT | PyBUF_LOCK | PyBUF_FORMAT | PyBUF_WRITABLE``) Thus, the consumer simply wanting a contiguous chunk of bytes from the object would use ``PyBUF_SIMPLE``, while a consumer that understands @@ -309,7 +320,7 @@ Py_ssize_t *suboffsets; Py_ssize_t itemsize; void *internal; - } PyBuffer; + } Py_buffer; Before calling this function, the bufferinfo structure can be filled with whatever. Upon return from getbufferproc, the bufferinfo @@ -332,11 +343,14 @@ ``readonly`` an integer variable to hold whether or not the memory is readonly. - 1 means the memory is readonly, zero means the memory is - writeable, and -1 means the memory was "locked" (changed from - writeable to readonly) when this PyBuffer structure was filled-in - and therefore should be unlocked when this PyBuffer structure is - "released" (this is supported only by some exporters). + 1 means the memory is readonly, zero means the memory is writable, + -1 means the memory was "locked" (changed from writable to + readonly) when this Py_buffer structure was filled-in after a + readable request and therefore should be unlocked when this + Py_buffer structure is "released" (this is supported only by some + exporters). A -2 means this Py_buffer structure has an + exclusive-write lock on the memory. This should be unlocked when + the Py_buffer structure is released. ``format`` a NULL-terminated format-string (following the struct-style syntax @@ -361,7 +375,7 @@ pointer to an array of ``Py_ssize_t`` of length ``ndims`` (or ``NULL`` if ``ndims`` is 0). indicating the number of bytes to skip to get to the next element in each dimension. If this is not requested by - the caller (``PyBUF_ALW_STRIDES`` is not set), then this should be set + the caller (``PyBUF_STRIDES`` is not set), then this should be set to NULL which indicates a C-style contiguous array or a PyExc_BufferError raised if this is not possible. @@ -375,7 +389,7 @@ should occur (striding in a contiguous memory block). If all suboffsets are negative (i.e. no de-referencing is needed, then this must be NULL (the default value). If this is not requested - by the caller (PyBUF_ALW_INDIRECT is not set), then this should be + by the caller (PyBUF_INDIRECT is not set), then this should be set to NULL or an PyExc_BufferError raised if this is not possible. For clarity, here is a function that returns a pointer to the @@ -428,9 +442,9 @@ The same bufferinfo struct should be used in the release-buffer interface call. The caller is responsible for the memory of the -PyBuffer structure itself. +Py_buffer structure itself. -``typedef void (*releasebufferproc)(PyObject *obj, PyBuffer *view)`` +``typedef void (*releasebufferproc)(PyObject *obj, Py_buffer *view)`` Callers of getbufferproc must make sure that this function is called when memory previously acquired from the object is no longer needed. The exporter of the interface must make sure that @@ -468,7 +482,7 @@ :: - int PyObject_GetBuffer(PyObject *obj, PyBuffer *view, + int PyObject_GetBuffer(PyObject *obj, Py_buffer *view, int flags) This is a C-API version of the getbuffer function call. It checks to @@ -478,7 +492,7 @@ :: - void PyObject_ReleaseBuffer(PyObject *obj, PyBuffer *view) + void PyObject_ReleaseBuffer(PyObject *obj, Py_buffer *view) This is a C-API version of the releasebuffer function call. It checks to make sure the object has the required function pointer and issues @@ -498,7 +512,7 @@ typedef struct { PyObject_HEAD PyObject *base; - PyBuffer view; + Py_buffer view; } PyMemoryViewObject; This is functionally similar to the current buffer object except a @@ -566,14 +580,14 @@ The buffertype argument can be PyBUF_READ, PyBUF_WRITE, PyBUF_UPDATEIFCOPY to determine whether the returned buffer should be -readable, writeable, or set to update the original buffer if a copy +readable, writable, or set to update the original buffer if a copy must be made. If buffertype is PyBUF_WRITE and the buffer is not contiguous an error will be raised. In this circumstance, the user -can use PyBUF_UPDATEIFCOPY to ensure that a a writeable temporary +can use PyBUF_UPDATEIFCOPY to ensure that a a writable temporary contiguous buffer is returned. The contents of this contiguous buffer will be copied back into the original object after the memoryview -object is deleted as long as the original object is writeable and -allows setting its memory to "readonly". If this is not allowed by +object is deleted as long as the original object is writable and +allows applying a read-write lock. If this is not allowed by the original object, then a BufferError is raised. If the object is multi-dimensional, then if fortran is 'F', the first @@ -595,7 +609,7 @@ Copy ``len`` bytes of data pointed to by the contiguous chunk of memory pointed to by ``buf`` into the buffer exported by obj. Return 0 on success and return -1 and raise an error on failure. If the -object does not have a writeable buffer, then an error is raised. If +object does not have a writable buffer, then an error is raised. If fortran is 'F', then if the object is multi-dimensional, then the data will be copied into the array in Fortran-style (first dimension varies the fastest). If fortran is 'C', then the data will be copied into @@ -614,7 +628,7 @@ :: - int PyBuffer_IsContiguous(PyBuffer *view, char fortran) + int PyBuffer_IsContiguous(Py_buffer *view, char fortran) Return 1 if the memory defined by the view object is C-style (fortran = 'C') or Fortran-style (fortran = 'F') contiguous or either one @@ -632,7 +646,7 @@ :: - int PyBuffer_FillInfo(PyBuffer *view, void *buf, + int PyBuffer_FillInfo(Py_buffer *view, void *buf, Py_ssize_t len, int readonly, int infoflags) Fills in a buffer-info structure correctly for an exporter that can @@ -679,8 +693,6 @@ 'X{}' pointer to a function (optional function signature inside {} with any return value preceeded by -> and placed at the end) -' ', '\\n', \\t' ignored (allow better readability) - -- this may already be true ================ =========== The struct module will be changed to understand these as well and @@ -862,7 +874,7 @@ So what does ImageObject's getbuffer do? Leaving error checking out:: - int Image_getbuffer(PyObject *self, PyBuffer *view, int flags) { + int Image_getbuffer(PyObject *self, Py_buffer *view, int flags) { static Py_ssize_t suboffsets[2] = { 0, -1}; @@ -884,7 +896,7 @@ } - int Image_releasebuffer(PyObject *self, PyBuffer *view) { + int Image_releasebuffer(PyObject *self, Py_buffer *view) { self->view_count--; return 0; } @@ -899,7 +911,7 @@ :: - int myobject_getbuffer(PyObject *self, PyBuffer *view, int flags) { + int myobject_getbuffer(PyObject *self, Py_buffer *view, int flags) { void *buf; Py_ssize_t len; @@ -924,7 +936,7 @@ :: - PyBuffer view; + Py_buffer view; int ret; if (PyObject_GetBuffer(obj, &view, Py_BUF_SIMPLE) < 0) { From python-checkins at python.org Sat Sep 29 08:47:26 2007 From: python-checkins at python.org (brett.cannon) Date: Sat, 29 Sep 2007 08:47:26 +0200 (CEST) Subject: [Python-checkins] r58283 - sandbox/trunk/import_in_py/Py3K/_importlib.py Message-ID: <20070929064726.F3D4A1E4002@bag.python.org> Author: brett.cannon Date: Sat Sep 29 08:47:26 2007 New Revision: 58283 Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py Log: Remove print call. Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/_importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/_importlib.py Sat Sep 29 08:47:26 2007 @@ -130,7 +130,6 @@ """ trimmed_path_len = len(path) - len(ext) - print('_case_ok:', path, trimmed_path_len, module_name) return imp._case_ok(path, trimmed_path_len, module_name) From python-checkins at python.org Sat Sep 29 08:48:57 2007 From: python-checkins at python.org (brett.cannon) Date: Sat, 29 Sep 2007 08:48:57 +0200 (CEST) Subject: [Python-checkins] r58284 - sandbox/trunk/import_in_py/Py3K/_importlib.py sandbox/trunk/import_in_py/Py3K/importlib.py Message-ID: <20070929064857.C3BE81E4002@bag.python.org> Author: brett.cannon Date: Sat Sep 29 08:48:57 2007 New Revision: 58284 Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py sandbox/trunk/import_in_py/Py3K/importlib.py Log: Use marshal._r_long and _w_long instead of own implementation. Modified: sandbox/trunk/import_in_py/Py3K/_importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/_importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/_importlib.py Sat Sep 29 08:48:57 2007 @@ -62,7 +62,6 @@ # Injected modules are 'warnings', 'imp', 'sys', 'marshal', 'errno', and '_os' # (a.k.a. 'posix', 'nt' or 'os2'). # Injected attribute is path_sep. -# XXX Temporarily injected functions are _r_long, _w_long. # XXX Could also expose Modules/getpath.c:joinpath() @@ -501,7 +500,7 @@ try: with open(self._bytecode_path(), 'rb') as bytecode_file: data = bytecode_file.read() - return data[:4], _r_long(data[4:8]), data[8:] + return data[:4], marshal._r_long(data[4:8]), data[8:] except AttributeError: return None @@ -521,7 +520,7 @@ try: with open(bytecode_path, 'wb') as bytecode_file: bytecode_file.write(imp.get_magic()) - bytecode_file.write(_w_long(timestamp)) + bytecode_file.write(marshal._w_long(timestamp)) bytecode_file.write(data) return True except IOError as exc: Modified: sandbox/trunk/import_in_py/Py3K/importlib.py ============================================================================== --- sandbox/trunk/import_in_py/Py3K/importlib.py (original) +++ sandbox/trunk/import_in_py/Py3K/importlib.py Sat Sep 29 08:48:57 2007 @@ -46,34 +46,6 @@ __builtins__['__import__'] = original__import__ -def _w_long(x): - """Convert a 32-bit integer to little-endian. - - XXX Temporary until marshal's long functions are exposed. - - """ - x = int(x) - int_bytes = bytes() - int_bytes.append(x & 0xFF) - int_bytes.append((x >> 8) & 0xFF) - int_bytes.append((x >> 16) & 0xFF) - int_bytes.append((x >> 24) & 0xFF) - return int_bytes - - -def _r_long(int_bytes): - """Convert 4 bytes in little-endian to an integer. - - XXX Temporary until marshal's long function are exposed. - - """ - x = int_bytes[0] - x |= int_bytes[1] << 8 - x |= int_bytes[2] << 16 - x |= int_bytes[3] << 24 - return x - - # Required built-in modules. try: import posix as _os @@ -97,8 +69,6 @@ from os import sep -_importlib._r_long = _r_long #XXX Expose original from marshal. -_importlib._w_long = _w_long #XXX Expose original from marshal. # For os.path.join replacement; pull from Include/osdefs.h:SEP . _importlib.path_sep = sep From python-checkins at python.org Sat Sep 29 09:00:22 2007 From: python-checkins at python.org (brett.cannon) Date: Sat, 29 Sep 2007 09:00:22 +0200 (CEST) Subject: [Python-checkins] r58286 - sandbox/trunk/import_in_py/Py3K/regrtest.sh Message-ID: <20070929070023.36F281E4016@bag.python.org> Author: brett.cannon Date: Sat Sep 29 09:00:22 2007 New Revision: 58286 Added: sandbox/trunk/import_in_py/Py3K/regrtest.sh (contents, props changed) Log: Copy regrtest.sh over for Py3K testing. Added: sandbox/trunk/import_in_py/Py3K/regrtest.sh ============================================================================== --- (empty file) +++ sandbox/trunk/import_in_py/Py3K/regrtest.sh Sat Sep 29 09:00:22 2007 @@ -0,0 +1,6 @@ +#!/bin/sh +# 'verbose=1' argument outputs test runs. +# 'tests' argument specifies tests to run. +echo 'test_pkg failure known and is OK' +$1 -c "import importlib; importlib._set__import__(); from test.regrtest import main; main()" +echo 'test_pkg failure known and is OK' From python-checkins at python.org Sun Sep 30 21:45:11 2007 From: python-checkins at python.org (brett.cannon) Date: Sun, 30 Sep 2007 21:45:11 +0200 (CEST) Subject: [Python-checkins] r58288 - in python/trunk: Misc/NEWS Objects/object.c Objects/tupleobject.c Message-ID: <20070930194511.2876C1E4019@bag.python.org> Author: brett.cannon Date: Sun Sep 30 21:45:10 2007 New Revision: 58288 Modified: python/trunk/Misc/NEWS python/trunk/Objects/object.c python/trunk/Objects/tupleobject.c Log: tuple.__repr__ did not consider a reference loop as it is not possible from Python code; but it is possible from C. object.__str__ had the issue of not expecting a type to doing something within it's tp_str implementation that could trigger an infinite recursion, but it could in C code.. Both found thanks to BaseException and how it handles its repr. Closes issue #1686386. Thanks to Thomas Herve for taking an initial stab at coming up with a solution. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Sep 30 21:45:10 2007 @@ -12,6 +12,12 @@ Core and builtins ----------------- +- Issue #1686386: Tuple's tp_repr did not take into account the possibility of + having a self-referential tuple, which is possible from C code. Nor did + object's tp_str consider that a type's tp_str could do something that could + lead to an inifinite recursion. Py_ReprEnter() and Py_EnterRecursiveCall(), + respectively, fixed the issues. + - Issue #1164: It was possible to trigger deadlock when using the 'print' statement to write to a file since the GIL was not released as needed. Now PyObject_Print() does the right thing along with various tp_print Modified: python/trunk/Objects/object.c ============================================================================== --- python/trunk/Objects/object.c (original) +++ python/trunk/Objects/object.c Sun Sep 30 21:45:10 2007 @@ -408,7 +408,12 @@ if (Py_Type(v)->tp_str == NULL) return PyObject_Repr(v); + /* It is possible for a type to have a tp_str representation that loops + infinitely. */ + if (Py_EnterRecursiveCall(" while getting the str of an object")) + return NULL; res = (*Py_Type(v)->tp_str)(v); + Py_LeaveRecursiveCall(); if (res == NULL) return NULL; type_ok = PyString_Check(res); Modified: python/trunk/Objects/tupleobject.c ============================================================================== --- python/trunk/Objects/tupleobject.c (original) +++ python/trunk/Objects/tupleobject.c Sun Sep 30 21:45:10 2007 @@ -216,6 +216,15 @@ PyObject *s, *temp; PyObject *pieces, *result = NULL; + /* While not mutable, it is still possible to end up with a cycle in a + tuple through an object that stores itself within a tuple (and thus + infinitely asks for the repr of itself). This should only be + possible within a type. */ + i = Py_ReprEnter((PyObject *)v); + if (i != 0) { + return i > 0 ? PyString_FromString("(...)") : NULL; + } + n = Py_Size(v); if (n == 0) return PyString_FromString("()"); @@ -226,7 +235,10 @@ /* Do repr() on each element. */ for (i = 0; i < n; ++i) { + if (Py_EnterRecursiveCall(" while getting the repr of a tuple")) + goto Done; s = PyObject_Repr(v->ob_item[i]); + Py_LeaveRecursiveCall(); if (s == NULL) goto Done; PyTuple_SET_ITEM(pieces, i, s); @@ -261,6 +273,7 @@ Done: Py_DECREF(pieces); + Py_ReprLeave((PyObject *)v); return result; } From nnorwitz at gmail.com Sun Sep 30 22:12:25 2007 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 30 Sep 2007 16:12:25 -0400 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20070930201225.GA19572@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test test_builtin failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another test_asyncore test_atexit test test_atexit failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_cProfile test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd_line test_code ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 9, in test.test_code Failed example: dump(f.func_code) Expected: name: f argcount: 1 names: () varnames: ('x', 'g') cellvars: ('x',) freevars: () nlocals: 2 flags: 3 consts: ('None', '') Got: name: f argcount: 1 names: (...) varnames: ('x', 'g') cellvars: ('x',) freevars: (...) nlocals: 2 flags: 3 consts: ('None', '') ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 20, in test.test_code Failed example: dump(f(4).func_code) Expected: name: g argcount: 1 names: () varnames: ('y',) cellvars: () freevars: ('x',) nlocals: 1 flags: 19 consts: ('None',) Got: name: g argcount: 1 names: (...) varnames: ('y',) cellvars: (...) freevars: ('x',) nlocals: 1 flags: 19 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 37, in test.test_code Failed example: dump(h.func_code) Expected: name: h argcount: 2 names: () varnames: ('x', 'y', 'a', 'b', 'c') cellvars: () freevars: () nlocals: 5 flags: 67 consts: ('None',) Got: name: h argcount: 2 names: (...) varnames: ('x', 'y', 'a', 'b', 'c') cellvars: (...) freevars: (...) nlocals: 5 flags: 67 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 53, in test.test_code Failed example: dump(attrs.func_code) Expected: name: attrs argcount: 1 names: ('attr1', 'attr2', 'attr3') varnames: ('obj',) cellvars: () freevars: () nlocals: 1 flags: 67 consts: ('None',) Got: name: attrs argcount: 1 names: ('attr1', 'attr2', 'attr3') varnames: ('obj',) cellvars: (...) freevars: (...) nlocals: 1 flags: 67 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 70, in test.test_code Failed example: dump(optimize_away.func_code) Expected: name: optimize_away argcount: 0 names: () varnames: () cellvars: () freevars: () nlocals: 0 flags: 67 consts: ("'doc string'", 'None') Got: name: optimize_away argcount: 0 names: (...) varnames: (...) cellvars: (...) freevars: (...) nlocals: 0 flags: 67 consts: ("'doc string'", 'None') ********************************************************************** 1 items had failures: 5 of 9 in test.test_code ***Test Failed*** 5 failures. test test_code failed -- 5 of 9 doctests failed test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test test_collections failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "/tmp/python-test/local/lib/python2.6/collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test test_extcall produced unexpected output: ********************************************************************** *** mismatch between line 2 of expected output and line 2 of actual output: - () {} + (...) {} ? +++ *** mismatch between line 18 of expected output and line 18 of actual output: - 1 () {} + 1 (...) {} ? +++ *** mismatch between line 24 of expected output and line 24 of actual output: - 1 () {'a': 1, 'b': 2, 'c': 3, 'd': 4} + 1 (...) {'a': 1, 'b': 2, 'c': 3, 'd': 4} ? +++ *** mismatch between lines 41-45 of expected output and lines 41-45 of actual output: - za () {} -> za() takes exactly 1 argument (0 given) + za (...) {} -> za() takes exactly 1 argument (0 given) ? +++ - za () {'a': 'aa'} -> ok za aa B D E V a + za (...) {'a': 'aa'} -> ok za aa B D E V a ? +++ - za () {'d': 'dd'} -> za() got an unexpected keyword argument 'd' + za (...) {'d': 'dd'} -> za() got an unexpected keyword argument 'd' ? +++ - za () {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd' + za (...) {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd' ? +++ - za () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got an unexpected keyword argument 'b' + za (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got an unexpected keyword argument 'b' ? +++ *** mismatch between lines 56-60 of expected output and lines 56-60 of actual output: - zade () {} -> zade() takes at least 1 argument (0 given) + zade (...) {} -> zade() takes at least 1 argument (0 given) ? +++ - zade () {'a': 'aa'} -> ok zade aa B d e V a + zade (...) {'a': 'aa'} -> ok zade aa B d e V a ? +++ - zade () {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) + zade (...) {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) ? +++ - zade () {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d + zade (...) {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d ? +++ - zade () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b' + zade (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b' ? +++ *** mismatch between lines 71-75 of expected output and lines 71-75 of actual output: - zabk () {} -> zabk() takes exactly 2 arguments (0 given) + zabk (...) {} -> zabk() takes exactly 2 arguments (0 given) ? +++ - zabk () {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given) + zabk (...) {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given) ? +++ - zabk () {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) + zabk (...) {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) ? +++ - zabk () {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (1 given) + zabk (...) {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (1 given) ? +++ - zabk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} + zabk (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} ? +++ *** mismatch between lines 86-91 of expected output and lines 86-91 of actual output: - zabdv () {} -> zabdv() takes at least 2 arguments (0 given) + zabdv (...) {} -> zabdv() takes at least 2 arguments (0 given) ? +++ - zabdv () {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given) + zabdv (...) {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdv () {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) + zabdv (...) {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) ? +++ - zabdv () {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (1 given) + zabdv (...) {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdv () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e' + zabdv (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e' ? +++ - zabdv (1, 2) {} -> ok zabdv 1 2 d E () e + zabdv (1, 2) {} -> ok zabdv 1 2 d E (...) e ? +++ *** mismatch between line 93 of expected output and line 93 of actual output: - zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E () d + zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E (...) d ? +++ *** mismatch between lines 101-106 of expected output and lines 101-106 of actual output: - zabdevk () {} -> zabdevk() takes at least 2 arguments (0 given) + zabdevk (...) {} -> zabdevk() takes at least 2 arguments (0 given) ? +++ - zabdevk () {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) + zabdevk (...) {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdevk () {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) + zabdevk (...) {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) ? +++ - zabdevk () {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) + zabdevk (...) {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdevk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee () {} + zabdevk (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee (...) {} ? +++ +++ - zabdevk (1, 2) {} -> ok zabdevk 1 2 d e () {} + zabdevk (1, 2) {} -> ok zabdevk 1 2 d e (...) {} ? +++ *** mismatch between line 108 of expected output and line 108 of actual output: - zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e () {} + zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e (...) {} ? +++ ********************************************************************** test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_generators.py", line ?, in test.test_generators.__test__.refleaks Failed example: try: sys.stderr = StringIO.StringIO() class Leaker: def __del__(self): raise RuntimeError l = Leaker() del l err = sys.stderr.getvalue().strip() err.startswith( "Exception RuntimeError: RuntimeError() in <" ) err.endswith("> ignored") len(err.splitlines()) finally: sys.stderr = old Expected: True True 1 Got: False True 1 ********************************************************************** 1 items had failures: 1 of 9 in test.test_generators.__test__.refleaks ***Test Failed*** 1 failures. test test_generators failed -- 1 of 266 doctests failed test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test test_inspect failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test test_pep352 failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "/tmp/python-test/local/lib/python2.6/test/test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_plistlib skipped -- No module named plistlib test_poll test_popen [7360 refs] [7360 refs] [7360 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test test_pprint failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat test_profile test_profilehooks test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [7735 refs] [7735 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:97: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7355 refs] [7353 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7353 refs] [8966 refs] [7571 refs] [7356 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] . [7355 refs] [7355 refs] this bit of output is from a test of stdout in a different process ... [7355 refs] [7355 refs] [7571 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7355 refs] [7355 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7359 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test test_tuple failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 287 tests OK. 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple 35 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_plistlib test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [506640 refs] From buildbot at python.org Sun Sep 30 22:14:10 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 20:14:10 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20070930201411.0AFB21E4007@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/844 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 9 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_pep352 test_pprint test_tuple ====================================================================== FAIL: test_args (test.test_atexit.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_builtin.py", line 927, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== FAIL: test_repr (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_builtin.py", line 1613, in test_repr self.assertEqual(repr(()), '()') AssertionError: '(...)' != '()' ====================================================================== FAIL: test_str (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' ====================================================================== ERROR: test_odd_sizes (test.test_collections.TestNamedTuple) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax ====================================================================== FAIL: test_interface_no_arg (test.test_pep352.ExceptionClassTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() ====================================================================== FAIL: test_same_as_repr (test.test_pprint.QueryTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat ====================================================================== FAIL: test_repr (test.test_tuple.TupleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Sep 30 22:17:22 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 20:17:22 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20070930201722.5CACE1E4025@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/2504 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple ====================================================================== FAIL: test_args (test.test_atexit.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_builtin.py", line 927, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== FAIL: test_repr (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_builtin.py", line 1613, in test_repr self.assertEqual(repr(()), '()') AssertionError: '(...)' != '()' ====================================================================== FAIL: test_str (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' ====================================================================== ERROR: test_odd_sizes (test.test_collections.TestNamedTuple) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax ====================================================================== ERROR: test_getfile (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_inspect.py", line 203, in test_getfile self.assertEqual(inspect.getfile(mod.StupidGit), mod.__file__) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== ERROR: test_getsource (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_inspect.py", line 196, in test_getsource self.assertSourceEqual(mod.StupidGit, 21, 46) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_inspect.py", line 140, in assertSourceEqual self.assertEqual(inspect.getsource(obj), File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/inspect.py", line 629, in getsource lines, lnum = getsourcelines(object) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/inspect.py", line 618, in getsourcelines lines, lnum = findsource(object) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/inspect.py", line 461, in findsource file = getsourcefile(object) or getfile(object) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/inspect.py", line 383, in getsourcefile filename = getfile(object) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== FAIL: test_getcomments (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_inspect.py", line 178, in test_getcomments self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n') AssertionError: None != '# line 20\n' ====================================================================== FAIL: test_getmodule (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_inspect.py", line 184, in test_getmodule self.assertEqual(inspect.getmodule(mod.StupidGit), mod) AssertionError: None != ====================================================================== FAIL: test_previous_frame (test.test_inspect.TestInterpreterStack) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' ====================================================================== FAIL: test_interface_no_arg (test.test_pep352.ExceptionClassTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() ====================================================================== FAIL: test_same_as_repr (test.test_pprint.QueryTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat ====================================================================== FAIL: test_repr (test.test_tuple.TupleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From brett at python.org Sun Sep 30 22:18:07 2007 From: brett at python.org (Brett Cannon) Date: Sun, 30 Sep 2007 13:18:07 -0700 Subject: [Python-checkins] r58288 - in python/trunk: Misc/NEWS Objects/object.c Objects/tupleobject.c In-Reply-To: <20070930194511.2876C1E4019@bag.python.org> References: <20070930194511.2876C1E4019@bag.python.org> Message-ID: I know this broke some tests. I could have sworn I ran regrtest when I first made the changes. I am looking into possible fixes. -Brett On 9/30/07, brett.cannon wrote: > Author: brett.cannon > Date: Sun Sep 30 21:45:10 2007 > New Revision: 58288 > > Modified: > python/trunk/Misc/NEWS > python/trunk/Objects/object.c > python/trunk/Objects/tupleobject.c > Log: > tuple.__repr__ did not consider a reference loop as it is not possible from > Python code; but it is possible from C. object.__str__ had the issue of not > expecting a type to doing something within it's tp_str implementation that > could trigger an infinite recursion, but it could in C code.. Both found > thanks to BaseException and how it handles its repr. > > Closes issue #1686386. Thanks to Thomas Herve for taking an initial stab at > coming up with a solution. > > > Modified: python/trunk/Misc/NEWS > ============================================================================== > --- python/trunk/Misc/NEWS (original) > +++ python/trunk/Misc/NEWS Sun Sep 30 21:45:10 2007 > @@ -12,6 +12,12 @@ > Core and builtins > ----------------- > > +- Issue #1686386: Tuple's tp_repr did not take into account the possibility of > + having a self-referential tuple, which is possible from C code. Nor did > + object's tp_str consider that a type's tp_str could do something that could > + lead to an inifinite recursion. Py_ReprEnter() and Py_EnterRecursiveCall(), > + respectively, fixed the issues. > + > - Issue #1164: It was possible to trigger deadlock when using the 'print' > statement to write to a file since the GIL was not released as needed. Now > PyObject_Print() does the right thing along with various tp_print > > Modified: python/trunk/Objects/object.c > ============================================================================== > --- python/trunk/Objects/object.c (original) > +++ python/trunk/Objects/object.c Sun Sep 30 21:45:10 2007 > @@ -408,7 +408,12 @@ > if (Py_Type(v)->tp_str == NULL) > return PyObject_Repr(v); > > + /* It is possible for a type to have a tp_str representation that loops > + infinitely. */ > + if (Py_EnterRecursiveCall(" while getting the str of an object")) > + return NULL; > res = (*Py_Type(v)->tp_str)(v); > + Py_LeaveRecursiveCall(); > if (res == NULL) > return NULL; > type_ok = PyString_Check(res); > > Modified: python/trunk/Objects/tupleobject.c > ============================================================================== > --- python/trunk/Objects/tupleobject.c (original) > +++ python/trunk/Objects/tupleobject.c Sun Sep 30 21:45:10 2007 > @@ -216,6 +216,15 @@ > PyObject *s, *temp; > PyObject *pieces, *result = NULL; > > + /* While not mutable, it is still possible to end up with a cycle in a > + tuple through an object that stores itself within a tuple (and thus > + infinitely asks for the repr of itself). This should only be > + possible within a type. */ > + i = Py_ReprEnter((PyObject *)v); > + if (i != 0) { > + return i > 0 ? PyString_FromString("(...)") : NULL; > + } > + > n = Py_Size(v); > if (n == 0) > return PyString_FromString("()"); > @@ -226,7 +235,10 @@ > > /* Do repr() on each element. */ > for (i = 0; i < n; ++i) { > + if (Py_EnterRecursiveCall(" while getting the repr of a tuple")) > + goto Done; > s = PyObject_Repr(v->ob_item[i]); > + Py_LeaveRecursiveCall(); > if (s == NULL) > goto Done; > PyTuple_SET_ITEM(pieces, i, s); > @@ -261,6 +273,7 @@ > > Done: > Py_DECREF(pieces); > + Py_ReprLeave((PyObject *)v); > return result; > } > > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From nnorwitz at gmail.com Sun Sep 30 22:21:07 2007 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 30 Sep 2007 16:21:07 -0400 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20070930202107.GA21979@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test test_builtin failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another test_asyncore test_atexit test test_atexit failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_cProfile test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd_line test_code ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 9, in test.test_code Failed example: dump(f.func_code) Expected: name: f argcount: 1 names: () varnames: ('x', 'g') cellvars: ('x',) freevars: () nlocals: 2 flags: 3 consts: ('None', '') Got: name: f argcount: 1 names: (...) varnames: ('x', 'g') cellvars: ('x',) freevars: (...) nlocals: 2 flags: 3 consts: ('None', '') ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 20, in test.test_code Failed example: dump(f(4).func_code) Expected: name: g argcount: 1 names: () varnames: ('y',) cellvars: () freevars: ('x',) nlocals: 1 flags: 19 consts: ('None',) Got: name: g argcount: 1 names: (...) varnames: ('y',) cellvars: (...) freevars: ('x',) nlocals: 1 flags: 19 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 37, in test.test_code Failed example: dump(h.func_code) Expected: name: h argcount: 2 names: () varnames: ('x', 'y', 'a', 'b', 'c') cellvars: () freevars: () nlocals: 5 flags: 67 consts: ('None',) Got: name: h argcount: 2 names: (...) varnames: ('x', 'y', 'a', 'b', 'c') cellvars: (...) freevars: (...) nlocals: 5 flags: 67 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 53, in test.test_code Failed example: dump(attrs.func_code) Expected: name: attrs argcount: 1 names: ('attr1', 'attr2', 'attr3') varnames: ('obj',) cellvars: () freevars: () nlocals: 1 flags: 67 consts: ('None',) Got: name: attrs argcount: 1 names: ('attr1', 'attr2', 'attr3') varnames: ('obj',) cellvars: (...) freevars: (...) nlocals: 1 flags: 67 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 70, in test.test_code Failed example: dump(optimize_away.func_code) Expected: name: optimize_away argcount: 0 names: () varnames: () cellvars: () freevars: () nlocals: 0 flags: 67 consts: ("'doc string'", 'None') Got: name: optimize_away argcount: 0 names: (...) varnames: (...) cellvars: (...) freevars: (...) nlocals: 0 flags: 67 consts: ("'doc string'", 'None') ********************************************************************** 1 items had failures: 5 of 9 in test.test_code ***Test Failed*** 5 failures. test test_code failed -- 5 of 9 doctests failed test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test test_collections failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "/tmp/python-test/local/lib/python2.6/collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9105 refs] test_dl test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test test_extcall produced unexpected output: ********************************************************************** *** mismatch between line 2 of expected output and line 2 of actual output: - () {} + (...) {} ? +++ *** mismatch between line 18 of expected output and line 18 of actual output: - 1 () {} + 1 (...) {} ? +++ *** mismatch between line 24 of expected output and line 24 of actual output: - 1 () {'a': 1, 'b': 2, 'c': 3, 'd': 4} + 1 (...) {'a': 1, 'b': 2, 'c': 3, 'd': 4} ? +++ *** mismatch between lines 41-45 of expected output and lines 41-45 of actual output: - za () {} -> za() takes exactly 1 argument (0 given) + za (...) {} -> za() takes exactly 1 argument (0 given) ? +++ - za () {'a': 'aa'} -> ok za aa B D E V a + za (...) {'a': 'aa'} -> ok za aa B D E V a ? +++ - za () {'d': 'dd'} -> za() got an unexpected keyword argument 'd' + za (...) {'d': 'dd'} -> za() got an unexpected keyword argument 'd' ? +++ - za () {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd' + za (...) {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd' ? +++ - za () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got an unexpected keyword argument 'b' + za (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got an unexpected keyword argument 'b' ? +++ *** mismatch between lines 56-60 of expected output and lines 56-60 of actual output: - zade () {} -> zade() takes at least 1 argument (0 given) + zade (...) {} -> zade() takes at least 1 argument (0 given) ? +++ - zade () {'a': 'aa'} -> ok zade aa B d e V a + zade (...) {'a': 'aa'} -> ok zade aa B d e V a ? +++ - zade () {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) + zade (...) {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) ? +++ - zade () {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d + zade (...) {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d ? +++ - zade () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b' + zade (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b' ? +++ *** mismatch between lines 71-75 of expected output and lines 71-75 of actual output: - zabk () {} -> zabk() takes exactly 2 arguments (0 given) + zabk (...) {} -> zabk() takes exactly 2 arguments (0 given) ? +++ - zabk () {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given) + zabk (...) {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given) ? +++ - zabk () {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) + zabk (...) {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) ? +++ - zabk () {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (1 given) + zabk (...) {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (1 given) ? +++ - zabk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} + zabk (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} ? +++ *** mismatch between lines 86-91 of expected output and lines 86-91 of actual output: - zabdv () {} -> zabdv() takes at least 2 arguments (0 given) + zabdv (...) {} -> zabdv() takes at least 2 arguments (0 given) ? +++ - zabdv () {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given) + zabdv (...) {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdv () {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) + zabdv (...) {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) ? +++ - zabdv () {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (1 given) + zabdv (...) {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdv () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e' + zabdv (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e' ? +++ - zabdv (1, 2) {} -> ok zabdv 1 2 d E () e + zabdv (1, 2) {} -> ok zabdv 1 2 d E (...) e ? +++ *** mismatch between line 93 of expected output and line 93 of actual output: - zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E () d + zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E (...) d ? +++ *** mismatch between lines 101-106 of expected output and lines 101-106 of actual output: - zabdevk () {} -> zabdevk() takes at least 2 arguments (0 given) + zabdevk (...) {} -> zabdevk() takes at least 2 arguments (0 given) ? +++ - zabdevk () {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) + zabdevk (...) {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdevk () {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) + zabdevk (...) {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) ? +++ - zabdevk () {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) + zabdevk (...) {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdevk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee () {} + zabdevk (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee (...) {} ? +++ +++ - zabdevk (1, 2) {} -> ok zabdevk 1 2 d e () {} + zabdevk (1, 2) {} -> ok zabdevk 1 2 d e (...) {} ? +++ *** mismatch between line 108 of expected output and line 108 of actual output: - zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e () {} + zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e (...) {} ? +++ ********************************************************************** test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_generators.py", line ?, in test.test_generators.__test__.refleaks Failed example: try: sys.stderr = StringIO.StringIO() class Leaker: def __del__(self): raise RuntimeError l = Leaker() del l err = sys.stderr.getvalue().strip() err.startswith( "Exception RuntimeError: RuntimeError() in <" ) err.endswith("> ignored") len(err.splitlines()) finally: sys.stderr = old Expected: True True 1 Got: False True 1 ********************************************************************** 1 items had failures: 1 of 9 in test.test_generators.__test__.refleaks ***Test Failed*** 1 failures. test test_generators failed -- 1 of 266 doctests failed test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test test_inspect failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test test_pep352 failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "/tmp/python-test/local/lib/python2.6/test/test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_plistlib skipped -- No module named plistlib test_poll test_popen [7360 refs] [7360 refs] [7360 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test test_pprint failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat test_profile test_profilehooks test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [7735 refs] [7735 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:97: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7355 refs] [7353 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7353 refs] [8966 refs] [7571 refs] [7356 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] . [7355 refs] [7355 refs] this bit of output is from a test of stdout in a different process ... [7355 refs] [7355 refs] [7571 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7355 refs] [7355 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7362 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test test_tuple failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 287 tests OK. 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple 35 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_plistlib test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [506267 refs] From buildbot at python.org Sun Sep 30 22:27:54 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 20:27:54 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20070930202754.8FA891E4007@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/274 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple ====================================================================== FAIL: test_args (test.test_atexit.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_builtin.py", line 927, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== FAIL: test_repr (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_builtin.py", line 1613, in test_repr self.assertEqual(repr(()), '()') AssertionError: '(...)' != '()' ====================================================================== FAIL: test_str (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' ====================================================================== ERROR: test_odd_sizes (test.test_collections.TestNamedTuple) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "C:\buildbot\work\trunk.heller-windows\build\lib\collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax ====================================================================== ERROR: test_getfile (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_inspect.py", line 203, in test_getfile self.assertEqual(inspect.getfile(mod.StupidGit), mod.__file__) File "C:\buildbot\work\trunk.heller-windows\build\lib\inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== ERROR: test_getsource (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_inspect.py", line 196, in test_getsource self.assertSourceEqual(mod.StupidGit, 21, 46) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_inspect.py", line 140, in assertSourceEqual self.assertEqual(inspect.getsource(obj), File "C:\buildbot\work\trunk.heller-windows\build\lib\inspect.py", line 629, in getsource lines, lnum = getsourcelines(object) File "C:\buildbot\work\trunk.heller-windows\build\lib\inspect.py", line 618, in getsourcelines lines, lnum = findsource(object) File "C:\buildbot\work\trunk.heller-windows\build\lib\inspect.py", line 461, in findsource file = getsourcefile(object) or getfile(object) File "C:\buildbot\work\trunk.heller-windows\build\lib\inspect.py", line 383, in getsourcefile filename = getfile(object) File "C:\buildbot\work\trunk.heller-windows\build\lib\inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== FAIL: test_getcomments (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_inspect.py", line 178, in test_getcomments self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n') AssertionError: None != '# line 20\n' ====================================================================== FAIL: test_getmodule (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_inspect.py", line 184, in test_getmodule self.assertEqual(inspect.getmodule(mod.StupidGit), mod) AssertionError: None != ====================================================================== FAIL: test_previous_frame (test.test_inspect.TestInterpreterStack) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' ====================================================================== FAIL: test_interface_no_arg (test.test_pep352.ExceptionClassTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() ====================================================================== FAIL: test_same_as_repr (test.test_pprint.QueryTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat ====================================================================== FAIL: test_repr (test.test_tuple.TupleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' sincerely, -The Buildbot From buildbot at python.org Sun Sep 30 22:37:13 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 20:37:13 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20070930203713.41E2C1E4007@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2316 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple ====================================================================== FAIL: test_args (test.test_atexit.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_builtin.py", line 927, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== FAIL: test_repr (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_builtin.py", line 1613, in test_repr self.assertEqual(repr(()), '()') AssertionError: '(...)' != '()' ====================================================================== FAIL: test_str (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' ====================================================================== ERROR: test_odd_sizes (test.test_collections.TestNamedTuple) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax ====================================================================== ERROR: test_getfile (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_inspect.py", line 203, in test_getfile self.assertEqual(inspect.getfile(mod.StupidGit), mod.__file__) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== ERROR: test_getsource (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_inspect.py", line 196, in test_getsource self.assertSourceEqual(mod.StupidGit, 21, 46) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_inspect.py", line 140, in assertSourceEqual self.assertEqual(inspect.getsource(obj), File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/inspect.py", line 629, in getsource lines, lnum = getsourcelines(object) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/inspect.py", line 618, in getsourcelines lines, lnum = findsource(object) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/inspect.py", line 461, in findsource file = getsourcefile(object) or getfile(object) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/inspect.py", line 383, in getsourcefile filename = getfile(object) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== FAIL: test_getcomments (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_inspect.py", line 178, in test_getcomments self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n') AssertionError: None != '# line 20\n' ====================================================================== FAIL: test_getmodule (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_inspect.py", line 184, in test_getmodule self.assertEqual(inspect.getmodule(mod.StupidGit), mod) AssertionError: None != ====================================================================== FAIL: test_previous_frame (test.test_inspect.TestInterpreterStack) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' ====================================================================== FAIL: test_interface_no_arg (test.test_pep352.ExceptionClassTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() ====================================================================== FAIL: test_same_as_repr (test.test_pprint.QueryTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat ====================================================================== FAIL: test_repr (test.test_tuple.TupleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' sincerely, -The Buildbot From python-checkins at python.org Sun Sep 30 22:37:19 2007 From: python-checkins at python.org (brett.cannon) Date: Sun, 30 Sep 2007 22:37:19 +0200 (CEST) Subject: [Python-checkins] r58289 - python/trunk/Objects/tupleobject.c Message-ID: <20070930203719.890421E4007@bag.python.org> Author: brett.cannon Date: Sun Sep 30 22:37:19 2007 New Revision: 58289 Modified: python/trunk/Objects/tupleobject.c Log: Fix error introduced by r58288; if a tuple is length 0 return its repr and don't worry about any self-referring tuples. Modified: python/trunk/Objects/tupleobject.c ============================================================================== --- python/trunk/Objects/tupleobject.c (original) +++ python/trunk/Objects/tupleobject.c Sun Sep 30 22:37:19 2007 @@ -216,6 +216,10 @@ PyObject *s, *temp; PyObject *pieces, *result = NULL; + n = Py_Size(v); + if (n == 0) + return PyString_FromString("()"); + /* While not mutable, it is still possible to end up with a cycle in a tuple through an object that stores itself within a tuple (and thus infinitely asks for the repr of itself). This should only be @@ -225,10 +229,6 @@ return i > 0 ? PyString_FromString("(...)") : NULL; } - n = Py_Size(v); - if (n == 0) - return PyString_FromString("()"); - pieces = PyTuple_New(n); if (pieces == NULL) return NULL; From buildbot at python.org Sun Sep 30 22:38:18 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 20:38:18 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 trunk Message-ID: <20070930203818.B79481E4007@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%20trunk/builds/74 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple ====================================================================== FAIL: test_args (test.test_atexit.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_builtin.py", line 927, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== FAIL: test_repr (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_builtin.py", line 1613, in test_repr self.assertEqual(repr(()), '()') AssertionError: '(...)' != '()' ====================================================================== FAIL: test_str (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' ====================================================================== ERROR: test_odd_sizes (test.test_collections.TestNamedTuple) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax ====================================================================== ERROR: test_getfile (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_inspect.py", line 203, in test_getfile self.assertEqual(inspect.getfile(mod.StupidGit), mod.__file__) File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== ERROR: test_getsource (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_inspect.py", line 196, in test_getsource self.assertSourceEqual(mod.StupidGit, 21, 46) File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_inspect.py", line 140, in assertSourceEqual self.assertEqual(inspect.getsource(obj), File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\inspect.py", line 629, in getsource lines, lnum = getsourcelines(object) File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\inspect.py", line 618, in getsourcelines lines, lnum = findsource(object) File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\inspect.py", line 461, in findsource file = getsourcefile(object) or getfile(object) File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\inspect.py", line 383, in getsourcefile filename = getfile(object) File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== FAIL: test_getcomments (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_inspect.py", line 178, in test_getcomments self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n') AssertionError: None != '# line 20\n' ====================================================================== FAIL: test_getmodule (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_inspect.py", line 184, in test_getmodule self.assertEqual(inspect.getmodule(mod.StupidGit), mod) AssertionError: None != ====================================================================== FAIL: test_previous_frame (test.test_inspect.TestInterpreterStack) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' ====================================================================== FAIL: test_interface_no_arg (test.test_pep352.ExceptionClassTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() ====================================================================== FAIL: test_same_as_repr (test.test_pprint.QueryTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat ====================================================================== FAIL: test_repr (test.test_tuple.TupleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\cygwin\home\db3l\buildarea\trunk.bolen-windows\build\lib\test\test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' sincerely, -The Buildbot From buildbot at python.org Sun Sep 30 22:38:34 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 20:38:34 +0000 Subject: [Python-checkins] buildbot failure in x86 OpenBSD trunk Message-ID: <20070930203834.60C251E4007@bag.python.org> The Buildbot has detected a new failure of x86 OpenBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20OpenBSD%20trunk/builds/53 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: cortesi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Sun Sep 30 22:42:44 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 20:42:44 +0000 Subject: [Python-checkins] buildbot failure in x86 XP trunk Message-ID: <20070930204244.418B21E4007@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/674 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: mcintyre-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple ====================================================================== FAIL: test_args (test.test_atexit.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_builtin.py", line 927, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== FAIL: test_repr (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_builtin.py", line 1613, in test_repr self.assertEqual(repr(()), '()') AssertionError: '(...)' != '()' ====================================================================== FAIL: test_str (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' ====================================================================== ERROR: test_odd_sizes (test.test_collections.TestNamedTuple) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax ====================================================================== ERROR: test_getfile (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_inspect.py", line 203, in test_getfile self.assertEqual(inspect.getfile(mod.StupidGit), mod.__file__) File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== ERROR: test_getsource (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_inspect.py", line 196, in test_getsource self.assertSourceEqual(mod.StupidGit, 21, 46) File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_inspect.py", line 140, in assertSourceEqual self.assertEqual(inspect.getsource(obj), File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\inspect.py", line 629, in getsource lines, lnum = getsourcelines(object) File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\inspect.py", line 618, in getsourcelines lines, lnum = findsource(object) File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\inspect.py", line 461, in findsource file = getsourcefile(object) or getfile(object) File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\inspect.py", line 383, in getsourcefile filename = getfile(object) File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== FAIL: test_getcomments (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_inspect.py", line 178, in test_getcomments self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n') AssertionError: None != '# line 20\n' ====================================================================== FAIL: test_getmodule (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_inspect.py", line 184, in test_getmodule self.assertEqual(inspect.getmodule(mod.StupidGit), mod) AssertionError: None != ====================================================================== FAIL: test_previous_frame (test.test_inspect.TestInterpreterStack) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' ====================================================================== FAIL: test_interface_no_arg (test.test_pep352.ExceptionClassTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() ====================================================================== FAIL: test_same_as_repr (test.test_pprint.QueryTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat ====================================================================== FAIL: test_repr (test.test_tuple.TupleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot_py25\trunk.mcintyre-windows\build\lib\test\test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' sincerely, -The Buildbot From buildbot at python.org Sun Sep 30 22:44:08 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 20:44:08 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20070930204408.6F71B1E4007@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/75 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/test/test_thread.py", line 260, in writerThread self.assertEqual(data, self.makeData(key)) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '1001-1001-1001-1001-1001' Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/test/test_thread.py", line 260, in writerThread self.assertEqual(data, self.makeData(key)) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '0002-0002-0002-0002-0002' Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/bsddb/test/test_thread.py", line 260, in writerThread self.assertEqual(data, self.makeData(key)) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '2000-2000-2000-2000-2000' Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 222, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 241, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 523, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 366, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple ====================================================================== FAIL: test_args (test.test_atexit.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_builtin.py", line 927, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== FAIL: test_repr (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_builtin.py", line 1613, in test_repr self.assertEqual(repr(()), '()') AssertionError: '(...)' != '()' ====================================================================== FAIL: test_str (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' ====================================================================== ERROR: test_odd_sizes (test.test_collections.TestNamedTuple) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax ====================================================================== ERROR: test_getfile (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_inspect.py", line 203, in test_getfile self.assertEqual(inspect.getfile(mod.StupidGit), mod.__file__) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== ERROR: test_getsource (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_inspect.py", line 196, in test_getsource self.assertSourceEqual(mod.StupidGit, 21, 46) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_inspect.py", line 140, in assertSourceEqual self.assertEqual(inspect.getsource(obj), File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/inspect.py", line 629, in getsource lines, lnum = getsourcelines(object) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/inspect.py", line 618, in getsourcelines lines, lnum = findsource(object) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/inspect.py", line 461, in findsource file = getsourcefile(object) or getfile(object) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/inspect.py", line 383, in getsourcefile filename = getfile(object) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== FAIL: test_getcomments (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_inspect.py", line 178, in test_getcomments self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n') AssertionError: None != '# line 20\n' ====================================================================== FAIL: test_getmodule (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_inspect.py", line 184, in test_getmodule self.assertEqual(inspect.getmodule(mod.StupidGit), mod) AssertionError: None != ====================================================================== FAIL: test_previous_frame (test.test_inspect.TestInterpreterStack) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' ====================================================================== FAIL: test_interface_no_arg (test.test_pep352.ExceptionClassTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() ====================================================================== FAIL: test_same_as_repr (test.test_pprint.QueryTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat ====================================================================== FAIL: test_repr (test.test_tuple.TupleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' sincerely, -The Buildbot From buildbot at python.org Sun Sep 30 23:13:45 2007 From: buildbot at python.org (buildbot at python.org) Date: Sun, 30 Sep 2007 21:13:45 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20070930211345.7FE571E4007@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/182 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 9 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pprint test_tuple ====================================================================== FAIL: test_args (test.test_atexit.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_builtin.py", line 927, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== FAIL: test_repr (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_builtin.py", line 1613, in test_repr self.assertEqual(repr(()), '()') AssertionError: '(...)' != '()' ====================================================================== FAIL: test_str (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' ====================================================================== ERROR: test_odd_sizes (test.test_collections.TestNamedTuple) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax ====================================================================== ERROR: test_getfile (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_inspect.py", line 203, in test_getfile self.assertEqual(inspect.getfile(mod.StupidGit), mod.__file__) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== ERROR: test_getsource (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_inspect.py", line 196, in test_getsource self.assertSourceEqual(mod.StupidGit, 21, 46) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_inspect.py", line 140, in assertSourceEqual self.assertEqual(inspect.getsource(obj), File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/inspect.py", line 629, in getsource lines, lnum = getsourcelines(object) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/inspect.py", line 618, in getsourcelines lines, lnum = findsource(object) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/inspect.py", line 461, in findsource file = getsourcefile(object) or getfile(object) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/inspect.py", line 383, in getsourcefile filename = getfile(object) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/inspect.py", line 352, in getfile raise TypeError('arg is a built-in class') TypeError: arg is a built-in class ====================================================================== FAIL: test_getcomments (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_inspect.py", line 178, in test_getcomments self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n') AssertionError: None != '# line 20\n' ====================================================================== FAIL: test_getmodule (test.test_inspect.TestRetrievingSourceCode) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_inspect.py", line 184, in test_getmodule self.assertEqual(inspect.getmodule(mod.StupidGit), mod) AssertionError: None != ====================================================================== FAIL: test_previous_frame (test.test_inspect.TestInterpreterStack) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' ====================================================================== FAIL: test_same_as_repr (test.test_pprint.QueryTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat ====================================================================== FAIL: test_repr (test.test_tuple.TupleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Sun Sep 30 23:52:13 2007 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 30 Sep 2007 17:52:13 -0400 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20070930215213.GA9971@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test test_builtin failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_builtin.py", line 1669, in test_str self.assertEqual(str(()), '()') AssertionError: '(...)' != '()' test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat WARNING: failed to listen on port 54322, trying another WARNING: failed to listen on port 9907, trying another WARNING: failed to listen on port 10243, trying another test_asyncore test_atexit test test_atexit failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_atexit.py", line 23, in test_args self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") AssertionError: "h4 (4,) {'kw': 'abc'}\nh4 (...) {}\nh1\n" != "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n" test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 /tmp/python-test/local/lib/python2.6/bsddb/test/test_1413192.py:32: RuntimeWarning: DBTxn aborted in destructor. No prior commit() or abort(). del self.the_txn test_buffer test_bufio test_bz2 test_cProfile test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd_line test_code ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 9, in test.test_code Failed example: dump(f.func_code) Expected: name: f argcount: 1 names: () varnames: ('x', 'g') cellvars: ('x',) freevars: () nlocals: 2 flags: 3 consts: ('None', '') Got: name: f argcount: 1 names: (...) varnames: ('x', 'g') cellvars: ('x',) freevars: (...) nlocals: 2 flags: 3 consts: ('None', '') ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 20, in test.test_code Failed example: dump(f(4).func_code) Expected: name: g argcount: 1 names: () varnames: ('y',) cellvars: () freevars: ('x',) nlocals: 1 flags: 19 consts: ('None',) Got: name: g argcount: 1 names: (...) varnames: ('y',) cellvars: (...) freevars: ('x',) nlocals: 1 flags: 19 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 37, in test.test_code Failed example: dump(h.func_code) Expected: name: h argcount: 2 names: () varnames: ('x', 'y', 'a', 'b', 'c') cellvars: () freevars: () nlocals: 5 flags: 67 consts: ('None',) Got: name: h argcount: 2 names: (...) varnames: ('x', 'y', 'a', 'b', 'c') cellvars: (...) freevars: (...) nlocals: 5 flags: 67 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 53, in test.test_code Failed example: dump(attrs.func_code) Expected: name: attrs argcount: 1 names: ('attr1', 'attr2', 'attr3') varnames: ('obj',) cellvars: () freevars: () nlocals: 1 flags: 67 consts: ('None',) Got: name: attrs argcount: 1 names: ('attr1', 'attr2', 'attr3') varnames: ('obj',) cellvars: (...) freevars: (...) nlocals: 1 flags: 67 consts: ('None',) ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_code.py", line 70, in test.test_code Failed example: dump(optimize_away.func_code) Expected: name: optimize_away argcount: 0 names: () varnames: () cellvars: () freevars: () nlocals: 0 flags: 67 consts: ("'doc string'", 'None') Got: name: optimize_away argcount: 0 names: (...) varnames: (...) cellvars: (...) freevars: (...) nlocals: 0 flags: 67 consts: ("'doc string'", 'None') ********************************************************************** 1 items had failures: 5 of 9 in test.test_code ***Test Failed*** 5 failures. test test_code failed -- 5 of 9 doctests failed test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test test_collections failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_collections.py", line 62, in test_odd_sizes Zero = NamedTuple('Zero', '') File "/tmp/python-test/local/lib/python2.6/collections.py", line 52, in NamedTuple exec template in m File "", line 4 __fields__ = (...) ^ SyntaxError: invalid syntax test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test test_extcall produced unexpected output: ********************************************************************** *** mismatch between line 2 of expected output and line 2 of actual output: - () {} + (...) {} ? +++ *** mismatch between line 18 of expected output and line 18 of actual output: - 1 () {} + 1 (...) {} ? +++ *** mismatch between line 24 of expected output and line 24 of actual output: - 1 () {'a': 1, 'b': 2, 'c': 3, 'd': 4} + 1 (...) {'a': 1, 'b': 2, 'c': 3, 'd': 4} ? +++ *** mismatch between lines 41-45 of expected output and lines 41-45 of actual output: - za () {} -> za() takes exactly 1 argument (0 given) + za (...) {} -> za() takes exactly 1 argument (0 given) ? +++ - za () {'a': 'aa'} -> ok za aa B D E V a + za (...) {'a': 'aa'} -> ok za aa B D E V a ? +++ - za () {'d': 'dd'} -> za() got an unexpected keyword argument 'd' + za (...) {'d': 'dd'} -> za() got an unexpected keyword argument 'd' ? +++ - za () {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd' + za (...) {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd' ? +++ - za () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got an unexpected keyword argument 'b' + za (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got an unexpected keyword argument 'b' ? +++ *** mismatch between lines 56-60 of expected output and lines 56-60 of actual output: - zade () {} -> zade() takes at least 1 argument (0 given) + zade (...) {} -> zade() takes at least 1 argument (0 given) ? +++ - zade () {'a': 'aa'} -> ok zade aa B d e V a + zade (...) {'a': 'aa'} -> ok zade aa B d e V a ? +++ - zade () {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) + zade (...) {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) ? +++ - zade () {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d + zade (...) {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d ? +++ - zade () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b' + zade (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b' ? +++ *** mismatch between lines 71-75 of expected output and lines 71-75 of actual output: - zabk () {} -> zabk() takes exactly 2 arguments (0 given) + zabk (...) {} -> zabk() takes exactly 2 arguments (0 given) ? +++ - zabk () {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given) + zabk (...) {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given) ? +++ - zabk () {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) + zabk (...) {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) ? +++ - zabk () {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (1 given) + zabk (...) {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (1 given) ? +++ - zabk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} + zabk (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} ? +++ *** mismatch between lines 86-91 of expected output and lines 86-91 of actual output: - zabdv () {} -> zabdv() takes at least 2 arguments (0 given) + zabdv (...) {} -> zabdv() takes at least 2 arguments (0 given) ? +++ - zabdv () {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given) + zabdv (...) {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdv () {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) + zabdv (...) {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) ? +++ - zabdv () {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (1 given) + zabdv (...) {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdv () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e' + zabdv (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e' ? +++ - zabdv (1, 2) {} -> ok zabdv 1 2 d E () e + zabdv (1, 2) {} -> ok zabdv 1 2 d E (...) e ? +++ *** mismatch between line 93 of expected output and line 93 of actual output: - zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E () d + zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E (...) d ? +++ *** mismatch between lines 101-106 of expected output and lines 101-106 of actual output: - zabdevk () {} -> zabdevk() takes at least 2 arguments (0 given) + zabdevk (...) {} -> zabdevk() takes at least 2 arguments (0 given) ? +++ - zabdevk () {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) + zabdevk (...) {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdevk () {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) + zabdevk (...) {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) ? +++ - zabdevk () {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) + zabdevk (...) {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) ? +++ - zabdevk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee () {} + zabdevk (...) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee (...) {} ? +++ +++ - zabdevk (1, 2) {} -> ok zabdevk 1 2 d e () {} + zabdevk (1, 2) {} -> ok zabdevk 1 2 d e (...) {} ? +++ *** mismatch between line 108 of expected output and line 108 of actual output: - zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e () {} + zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e (...) {} ? +++ ********************************************************************** test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators ********************************************************************** File "/tmp/python-test/local/lib/python2.6/test/test_generators.py", line ?, in test.test_generators.__test__.refleaks Failed example: try: sys.stderr = StringIO.StringIO() class Leaker: def __del__(self): raise RuntimeError l = Leaker() del l err = sys.stderr.getvalue().strip() err.startswith( "Exception RuntimeError: RuntimeError() in <" ) err.endswith("> ignored") len(err.splitlines()) finally: sys.stderr = old Expected: True True 1 Got: False True 1 ********************************************************************** 1 items had failures: 1 of 9 in test.test_generators.__test__.refleaks ***Test Failed*** 1 failures. test test_generators failed -- 1 of 266 doctests failed test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test test_inspect failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_inspect.py", line 124, in test_previous_frame '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})') AssertionError: '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(...), **h={})' != '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})' test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test test_pep352 failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_pep352.py", line 130, in test_interface_no_arg self.interface_test_driver(results) File "/tmp/python-test/local/lib/python2.6/test/test_pep352.py", line 92, in interface_test_driver given, expected)) AssertionError: repr: Exception(...) != Exception() test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_plistlib skipped -- No module named plistlib test_poll test_popen [7360 refs] [7360 refs] [7360 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test test_pprint failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_pprint.py", line 134, in test_same_as_repr (native, got, function)) AssertionError: expected (...) got () from pprint.pformat test_profile test_profilehooks test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [7735 refs] [7735 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:97: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:63: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7355 refs] [7353 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7353 refs] [8966 refs] [7571 refs] [7356 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] [7355 refs] . [7355 refs] [7355 refs] this bit of output is from a test of stdout in a different process ... [7355 refs] [7355 refs] [7571 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7355 refs] [7355 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7359 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test test_tuple failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_tuple.py", line 76, in test_repr self.assertEqual(repr(a0), "()") AssertionError: '(...)' != '()' test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 298 tests OK. 10 tests failed: test_atexit test_builtin test_code test_collections test_extcall test_generators test_inspect test_pep352 test_pprint test_tuple 21 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_plistlib test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [516473 refs]