diff options
author | Benjamin Peterson <benjamin@python.org> | 2009-03-26 21:49:58 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2009-03-26 21:49:58 (GMT) |
commit | 5f28b7b7978ad96fef83e2b41017bdd7ab8a082f (patch) | |
tree | 511fa303a1132e525b05b2288a009781d103dc67 | |
parent | b476d597921ab0ef52de1f56a5efa71c65727114 (diff) | |
download | cpython-5f28b7b7978ad96fef83e2b41017bdd7ab8a082f.zip cpython-5f28b7b7978ad96fef83e2b41017bdd7ab8a082f.tar.gz cpython-5f28b7b7978ad96fef83e2b41017bdd7ab8a082f.tar.bz2 |
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).
........
-rwxr-xr-x | Lib/platform.py | 12 | ||||
-rw-r--r-- | Lib/test/test_platform.py | 49 | ||||
-rw-r--r-- | Lib/urllib/request.py | 74 | ||||
-rw-r--r-- | Misc/python.man | 4 |
4 files changed, 74 insertions, 65 deletions
diff --git a/Lib/platform.py b/Lib/platform.py index c898dd1..04f7f9b 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 a18d48b..a032df1 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -25,39 +25,48 @@ 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_processor(self): - res = platform.processor() + def test_system(self): + res = platform.system() - def test_python_build(self): - res = platform.python_build() + def test_node(self): + res = platform.node() - def test_python_compiler(self): - res = platform.python_compiler() + def test_release(self): + res = platform.release() def test_version(self): - res1 = platform.version() - res2 = platform.version_tuple() + 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_release(self): - res = platform.release() + def test_python_branch(self): + res = platform.python_branch() - def test_system(self): - res = platform.system() + def test_python_revision(self): + res = platform.python_revision() - def test_version(self): - res = platform.version() + def test_python_build(self): + res = platform.python_build() + + def test_python_compiler(self): + res = platform.python_compiler() def test_system_alias(self): res = platform.system_alias( diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index b86d8f2..c789ffc 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 23039e8..3c7d606 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 |