mirror of https://github.com/python/cpython
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). ........
This commit is contained in:
parent
b476d59792
commit
5f28b7b797
|
@ -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():
|
||||||
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():
|
||||||
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,40 +25,49 @@ 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_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):
|
def test_processor(self):
|
||||||
res = platform.processor()
|
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):
|
def test_python_build(self):
|
||||||
res = platform.python_build()
|
res = platform.python_build()
|
||||||
|
|
||||||
def test_python_compiler(self):
|
def test_python_compiler(self):
|
||||||
res = platform.python_compiler()
|
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):
|
def test_system_alias(self):
|
||||||
res = platform.system_alias(
|
res = platform.system_alias(
|
||||||
platform.system(),
|
platform.system(),
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
.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
|
||||||
|
|
Loading…
Reference in New Issue