Merged revisions 62805,62811,62841-62842,62848-62849,62853-62854 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r62805 | christian.heimes | 2008-05-07 01:59:53 +0200 (Wed, 07 May 2008) | 1 line

  Re-added getbuildinfo.c solution item
........
  r62811 | benjamin.peterson | 2008-05-07 04:23:43 +0200 (Wed, 07 May 2008) | 2 lines

  update .bzrignore
........
  r62841 | christian.heimes | 2008-05-08 00:54:17 +0200 (Thu, 08 May 2008) | 1 line

  Replace more float hacks with correct math functions
........
  r62842 | benjamin.peterson | 2008-05-08 01:11:54 +0200 (Thu, 08 May 2008) | 2 lines

  Practice EAFP, and revert 62787
........
  r62848 | raymond.hettinger | 2008-05-08 06:35:20 +0200 (Thu, 08 May 2008) | 1 line

  Frozensets do not benefit from autoconversion.
........
  r62849 | raymond.hettinger | 2008-05-08 06:36:12 +0200 (Thu, 08 May 2008) | 1 line

  The __all__ variable forgot to expose the gcd() function.
........
  r62853 | raymond.hettinger | 2008-05-08 09:23:30 +0200 (Thu, 08 May 2008) | 1 line

  Fix-up the enumerate type example and move it to the end.
........
  r62854 | ronald.oussoren | 2008-05-08 12:34:39 +0200 (Thu, 08 May 2008) | 3 lines

  Fix for issue 1770190: platform.mac_ver() now returns the right
  version on OSX 10.4.10
........
This commit is contained in:
Christian Heimes 2008-05-08 17:18:53 +00:00
parent e580f5c55a
commit e4ca8156ef
5 changed files with 33 additions and 19 deletions

View file

@ -1,4 +1,4 @@
.purify ´.purify
autom4te.cache autom4te.cache
config.log config.log
config.cache config.cache
@ -41,3 +41,7 @@ Modules/Setup.local
Modules/config.c Modules/config.c
Parser/pgen Parser/pgen
Lib/plat-mac/errors.rsrc.df.rsrc Lib/plat-mac/errors.rsrc.df.rsrc
Lib/lib2to3/Grammar2.6.0.alpha.1.pickle
Lib/lib2to3/Grammar2.6.0.alpha.2.pickle
Lib/lib2to3/PatternGrammar2.6.0.alpha.1.pickle
Lib/lib2to3/PatternGrammar2.6.0.alpha.2.pickle

View file

@ -550,16 +550,6 @@ by the :mod:`csv` or :mod:`sqlite3` modules::
for emp in map(EmployeeRecord._make, cursor.fetchall()): for emp in map(EmployeeRecord._make, cursor.fetchall()):
print(emp.name, emp.title) print(emp.name, emp.title)
Named tuples can also be used to generate enumerated constants:
.. testcode::
def enum(*names):
return namedtuple('Enum', ' '.join(names))(*range(len(names)))
Status = enum('open', 'pending', 'closed')
assert (0, 1, 2) == (Status.open, Status.pending, Status.closed)
In addition to the methods inherited from tuples, named tuples support In addition to the methods inherited from tuples, named tuples support
three additional methods and one attribute. To prevent conflicts with three additional methods and one attribute. To prevent conflicts with
field names, the method and attribute names start with an underscore. field names, the method and attribute names start with an underscore.
@ -655,6 +645,15 @@ customize a prototype instance:
>>> default_account = Account('<owner name>', 0.0, 0) >>> default_account = Account('<owner name>', 0.0, 0)
>>> johns_account = default_account._replace(owner='John') >>> johns_account = default_account._replace(owner='John')
Enumerated constants can be implemented with named tuples, but it is simpler
and more efficient to use a simple class declaration:
>>> Status = namedtuple('Status', 'open pending closed')._make(range(3))
>>> Status.open, Status.pending, Status.closed
(0, 1, 2)
>>> class Status:
... open, pending, closed = range(3)
.. rubric:: Footnotes .. rubric:: Footnotes
.. [#] For information on the double-star-operator see .. [#] For information on the double-star-operator see

View file

@ -2,6 +2,7 @@
""" """
import re import re
import math
try: try:
from _json import encode_basestring_ascii as c_encode_basestring_ascii from _json import encode_basestring_ascii as c_encode_basestring_ascii
@ -25,20 +26,19 @@ ESCAPE_DCT = {
for i in range(0x20): for i in range(0x20):
ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i)) ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i))
# Assume this produces an infinity on all machines (probably not guaranteed)
INFINITY = float('1e66666')
FLOAT_REPR = repr FLOAT_REPR = repr
def floatstr(o, allow_nan=True): def floatstr(o, allow_nan=True):
# Check for specials. Note that this type of test is processor- and/or # Check for specials. Note that this type of test is processor- and/or
# platform-specific, so do tests which don't depend on the internals. # platform-specific, so do tests which don't depend on the internals.
if o != o: if math.isnan(o):
text = 'NaN' text = 'NaN'
elif o == INFINITY: elif math.isinf(o):
text = 'Infinity' if math.copysign(1., o) == 1.:
elif o == -INFINITY: text = 'Infinity'
text = '-Infinity' else:
text = '-Infinity'
else: else:
return FLOAT_REPR(o) return FLOAT_REPR(o)

View file

@ -720,7 +720,17 @@ def mac_ver(release='',versioninfo=('','',''),machine=''):
major = (sysv & 0xFF00) >> 8 major = (sysv & 0xFF00) >> 8
minor = (sysv & 0x00F0) >> 4 minor = (sysv & 0x00F0) >> 4
patch = (sysv & 0x000F) patch = (sysv & 0x000F)
release = '%s.%i.%i' % (_bcd2str(major),minor,patch)
if (major, minor) >= (10, 4):
# the 'sysv' gestald cannot return patchlevels
# higher than 9. Apple introduced 3 new
# gestalt codes in 10.4 to deal with this
# issue (needed because patch levels can
# run higher than 9, such as 10.4.11)
major,minor,patch = _mac_ver_lookup(('sys1','sys2','sys3'))
release = '%i.%i.%i' %(major, minor, patch)
else:
release = '%s.%i.%i' % (_bcd2str(major),minor,patch)
if sysu: if sysu:
major = int((sysu & 0xFF000000) >> 24) major = int((sysu & 0xFF000000) >> 24)
minor = (sysu & 0x00F00000) >> 20 minor = (sysu & 0x00F00000) >> 20

View file

@ -29,6 +29,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_buildinfo", "make_buil
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c
readme.txt = readme.txt readme.txt = readme.txt
EndProjectSection EndProjectSection
EndProject EndProject