From 5f28b7b7978ad96fef83e2b41017bdd7ab8a082f Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Thu, 26 Mar 2009 21:49:58 +0000 Subject: [PATCH] Merged revisions 70518,70521,70590,70594-70595 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r70518 | matthias.klose | 2009-03-22 08:08:22 -0500 (Sun, 22 Mar 2009) | 2 lines - Fix comment macro in python.man ........ r70521 | benjamin.peterson | 2009-03-22 12:45:11 -0500 (Sun, 22 Mar 2009) | 1 line close the file even if an exception occurs #5536 ........ r70590 | skip.montanaro | 2009-03-24 19:52:11 -0500 (Tue, 24 Mar 2009) | 1 line clarify the type of data returned ........ r70594 | marc-andre.lemburg | 2009-03-25 14:44:58 -0500 (Wed, 25 Mar 2009) | 9 lines Remove the sys.version_info shortcut, since they cause the APIs to return different information than the _sys_version() output used in previous Python versions. This also fixes issue5561: platform.python_version_tuple returns tuple of ints, should be strings Added more tests for the various platform functions. ........ r70595 | marc-andre.lemburg | 2009-03-25 14:45:33 -0500 (Wed, 25 Mar 2009) | 3 lines News item for the platform.py fix (r70594). ........ --- Lib/platform.py | 12 +++---- Lib/test/test_platform.py | 49 +++++++++++++++----------- Lib/urllib/request.py | 74 +++++++++++++++++++++------------------ Misc/python.man | 4 +-- 4 files changed, 74 insertions(+), 65 deletions(-) diff --git a/Lib/platform.py b/Lib/platform.py index c898dd13675..04f7f9bd01a 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -1254,10 +1254,10 @@ _sys_version_cache = {} def _sys_version(sys_version=None): """ Returns a parsed version of Python's sys.version as tuple - (name, version, branch, revision, buildno, builddate, compiler) - referring to the Python implementation name, version, branch, - revision, build number, build date/time as string and the compiler - identification string. + (name, version, branch, revision, buildno, builddate, compiler) + referring to the Python implementation name, version, branch, + revision, build number, build date/time as string and the compiler + identification string. Note that unlike the Python sys.version, the returned value for the Python version will always include the patchlevel (it @@ -1359,8 +1359,6 @@ def python_version(): will always include the patchlevel (it defaults to 0). """ - if hasattr(sys, 'version_info'): - return '%i.%i.%i' % sys.version_info[:3] return _sys_version()[1] def python_version_tuple(): @@ -1372,8 +1370,6 @@ def python_version_tuple(): will always include the patchlevel (it defaults to 0). """ - if hasattr(sys, 'version_info'): - return sys.version_info[:3] return tuple(_sys_version()[1].split('.')) def python_branch(): diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index a18d48b1054..a032df1bde8 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -25,40 +25,49 @@ class PlatformTest(unittest.TestCase): finally: os.remove(link) - def test_machine(self): - res = platform.machine() - - def test_node(self): - res = platform.node() - def test_platform(self): for aliased in (False, True): for terse in (False, True): res = platform.platform(aliased, terse) + def test_system(self): + res = platform.system() + + def test_node(self): + res = platform.node() + + def test_release(self): + res = platform.release() + + def test_version(self): + res = platform.version() + + def test_machine(self): + res = platform.machine() + def test_processor(self): res = platform.processor() + def test_python_implementation(self): + res = platform.python_implementation() + + def test_python_version(self): + res1 = platform.python_version() + res2 = platform.python_version_tuple() + self.assertEqual(res1, ".".join(res2)) + + def test_python_branch(self): + res = platform.python_branch() + + def test_python_revision(self): + res = platform.python_revision() + def test_python_build(self): res = platform.python_build() def test_python_compiler(self): res = platform.python_compiler() - def test_version(self): - res1 = platform.version() - res2 = platform.version_tuple() - self.assertEqual(res1, ".".join(res2)) - - def test_release(self): - res = platform.release() - - def test_system(self): - res = platform.system() - - def test_version(self): - res = platform.version() - def test_system_alias(self): res = platform.system_alias( platform.system(), diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index b86d8f2d3ef..c789ffce63b 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -1474,41 +1474,45 @@ class URLopener: except IOError as msg: pass fp = self.open(url, data) - headers = fp.info() - if filename: - tfp = open(filename, 'wb') - else: - import tempfile - garbage, path = splittype(url) - garbage, path = splithost(path or "") - path, garbage = splitquery(path or "") - path, garbage = splitattr(path or "") - suffix = os.path.splitext(path)[1] - (fd, filename) = tempfile.mkstemp(suffix) - self.__tempfiles.append(filename) - tfp = os.fdopen(fd, 'wb') - result = filename, headers - if self.tempcache is not None: - self.tempcache[url] = result - bs = 1024*8 - size = -1 - read = 0 - blocknum = 0 - if reporthook: - if "content-length" in headers: - size = int(headers["Content-Length"]) - reporthook(blocknum, bs, size) - while 1: - block = fp.read(bs) - if not block: - break - read += len(block) - tfp.write(block) - blocknum += 1 - if reporthook: - reporthook(blocknum, bs, size) - fp.close() - tfp.close() + try: + headers = fp.info() + if filename: + tfp = open(filename, 'wb') + else: + import tempfile + garbage, path = splittype(url) + garbage, path = splithost(path or "") + path, garbage = splitquery(path or "") + path, garbage = splitattr(path or "") + suffix = os.path.splitext(path)[1] + (fd, filename) = tempfile.mkstemp(suffix) + self.__tempfiles.append(filename) + tfp = os.fdopen(fd, 'wb') + try: + result = filename, headers + if self.tempcache is not None: + self.tempcache[url] = result + bs = 1024*8 + size = -1 + read = 0 + blocknum = 0 + if reporthook: + if "content-length" in headers: + size = int(headers["Content-Length"]) + reporthook(blocknum, bs, size) + while 1: + block = fp.read(bs) + if not block: + break + read += len(block) + tfp.write(block) + blocknum += 1 + if reporthook: + reporthook(blocknum, bs, size) + finally: + tfp.close() + finally: + fp.close() del fp del tfp diff --git a/Misc/python.man b/Misc/python.man index 23039e8b1ca..3c7d6067e1b 100644 --- a/Misc/python.man +++ b/Misc/python.man @@ -1,7 +1,7 @@ .TH PYTHON "1" "$Date$" -./" To view this file while editing, run it through groff: -./" groff -Tascii -man python.man | less +.\" To view this file while editing, run it through groff: +.\" groff -Tascii -man python.man | less .SH NAME python \- an interpreted, interactive, object-oriented programming language