Commit 5f28b7b7 authored by Benjamin Peterson's avatar Benjamin Peterson

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).
........
parent b476d597
...@@ -1254,10 +1254,10 @@ _sys_version_cache = {} ...@@ -1254,10 +1254,10 @@ _sys_version_cache = {}
def _sys_version(sys_version=None): def _sys_version(sys_version=None):
""" Returns a parsed version of Python's sys.version as tuple """ Returns a parsed version of Python's sys.version as tuple
(name, version, branch, revision, buildno, builddate, compiler) (name, version, branch, revision, buildno, builddate, compiler)
referring to the Python implementation name, version, branch, referring to the Python implementation name, version, branch,
revision, build number, build date/time as string and the compiler revision, build number, build date/time as string and the compiler
identification string. identification string.
Note that unlike the Python sys.version, the returned value Note that unlike the Python sys.version, the returned value
for the Python version will always include the patchlevel (it for the Python version will always include the patchlevel (it
...@@ -1359,8 +1359,6 @@ def python_version(): ...@@ -1359,8 +1359,6 @@ def python_version():
will always include the patchlevel (it defaults to 0). 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] return _sys_version()[1]
def python_version_tuple(): def python_version_tuple():
...@@ -1372,8 +1370,6 @@ def python_version_tuple(): ...@@ -1372,8 +1370,6 @@ def python_version_tuple():
will always include the patchlevel (it defaults to 0). 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('.')) return tuple(_sys_version()[1].split('.'))
def python_branch(): def python_branch():
......
...@@ -25,39 +25,48 @@ class PlatformTest(unittest.TestCase): ...@@ -25,39 +25,48 @@ class PlatformTest(unittest.TestCase):
finally: finally:
os.remove(link) os.remove(link)
def test_machine(self):
res = platform.machine()
def test_node(self):
res = platform.node()
def test_platform(self): def test_platform(self):
for aliased in (False, True): for aliased in (False, True):
for terse in (False, True): for terse in (False, True):
res = platform.platform(aliased, terse) res = platform.platform(aliased, terse)
def test_processor(self): def test_system(self):
res = platform.processor() res = platform.system()
def test_python_build(self): def test_node(self):
res = platform.python_build() res = platform.node()
def test_python_compiler(self): def test_release(self):
res = platform.python_compiler() res = platform.release()
def test_version(self): def test_version(self):
res1 = platform.version() res = platform.version()
res2 = platform.version_tuple()
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)) self.assertEqual(res1, ".".join(res2))
def test_release(self): def test_python_branch(self):
res = platform.release() res = platform.python_branch()
def test_system(self): def test_python_revision(self):
res = platform.system() res = platform.python_revision()
def test_version(self): def test_python_build(self):
res = platform.version() res = platform.python_build()
def test_python_compiler(self):
res = platform.python_compiler()
def test_system_alias(self): def test_system_alias(self):
res = platform.system_alias( res = platform.system_alias(
......
...@@ -1474,41 +1474,45 @@ class URLopener: ...@@ -1474,41 +1474,45 @@ class URLopener:
except IOError as msg: except IOError as msg:
pass pass
fp = self.open(url, data) fp = self.open(url, data)
headers = fp.info() try:
if filename: headers = fp.info()
tfp = open(filename, 'wb') if filename:
else: tfp = open(filename, 'wb')
import tempfile else:
garbage, path = splittype(url) import tempfile
garbage, path = splithost(path or "") garbage, path = splittype(url)
path, garbage = splitquery(path or "") garbage, path = splithost(path or "")
path, garbage = splitattr(path or "") path, garbage = splitquery(path or "")
suffix = os.path.splitext(path)[1] path, garbage = splitattr(path or "")
(fd, filename) = tempfile.mkstemp(suffix) suffix = os.path.splitext(path)[1]
self.__tempfiles.append(filename) (fd, filename) = tempfile.mkstemp(suffix)
tfp = os.fdopen(fd, 'wb') self.__tempfiles.append(filename)
result = filename, headers tfp = os.fdopen(fd, 'wb')
if self.tempcache is not None: try:
self.tempcache[url] = result result = filename, headers
bs = 1024*8 if self.tempcache is not None:
size = -1 self.tempcache[url] = result
read = 0 bs = 1024*8
blocknum = 0 size = -1
if reporthook: read = 0
if "content-length" in headers: blocknum = 0
size = int(headers["Content-Length"]) if reporthook:
reporthook(blocknum, bs, size) if "content-length" in headers:
while 1: size = int(headers["Content-Length"])
block = fp.read(bs) reporthook(blocknum, bs, size)
if not block: while 1:
break block = fp.read(bs)
read += len(block) if not block:
tfp.write(block) break
blocknum += 1 read += len(block)
if reporthook: tfp.write(block)
reporthook(blocknum, bs, size) blocknum += 1
fp.close() if reporthook:
tfp.close() reporthook(blocknum, bs, size)
finally:
tfp.close()
finally:
fp.close()
del fp del fp
del tfp del tfp
......
.TH PYTHON "1" "$Date$" .TH PYTHON "1" "$Date$"
./" To view this file while editing, run it through groff: .\" To view this file while editing, run it through groff:
./" groff -Tascii -man python.man | less .\" groff -Tascii -man python.man | less
.SH NAME .SH NAME
python \- an interpreted, interactive, object-oriented programming language python \- an interpreted, interactive, object-oriented programming language
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment