diff options
author | Christian Heimes <christian@cheimes.de> | 2007-12-15 01:27:15 (GMT) |
---|---|---|
committer | Christian Heimes <christian@cheimes.de> | 2007-12-15 01:27:15 (GMT) |
commit | 0449f63f53fa0c2fcf779703d2db77d8a658cf7d (patch) | |
tree | f7e541fe54279a4b5954b79f529d652e659e6bd9 /Lib/collections.py | |
parent | 54cc54c1fe26328d62c70fa55350ad89868c1d61 (diff) | |
download | cpython-0449f63f53fa0c2fcf779703d2db77d8a658cf7d.zip cpython-0449f63f53fa0c2fcf779703d2db77d8a658cf7d.tar.gz cpython-0449f63f53fa0c2fcf779703d2db77d8a658cf7d.tar.bz2 |
Merged revisions 59488-59511 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59489 | christian.heimes | 2007-12-14 03:33:57 +0100 (Fri, 14 Dec 2007) | 1 line
Silence a warning about an unsed variable in debug builds
........
r59490 | christian.heimes | 2007-12-14 03:35:23 +0100 (Fri, 14 Dec 2007) | 2 lines
Fixed bug #1620: New @spam.getter property syntax modifies the property in place.
I added also the feature that a @prop.getter decorator does not overwrite the doc string of the property if it was given as an argument to property().
........
r59491 | raymond.hettinger | 2007-12-14 03:49:47 +0100 (Fri, 14 Dec 2007) | 1 line
Cleaner method naming convention
........
r59492 | christian.heimes | 2007-12-14 04:02:34 +0100 (Fri, 14 Dec 2007) | 1 line
Fixed a warning in _codecs_iso2022.c and some non C89 conform // comments.
........
r59493 | christian.heimes | 2007-12-14 05:38:13 +0100 (Fri, 14 Dec 2007) | 1 line
Fixed warning in ssl module
........
r59500 | raymond.hettinger | 2007-12-14 19:08:20 +0100 (Fri, 14 Dec 2007) | 1 line
Add line spacing for readability
........
r59501 | raymond.hettinger | 2007-12-14 19:12:21 +0100 (Fri, 14 Dec 2007) | 3 lines
Update method names for named tuples.
........
r59503 | georg.brandl | 2007-12-14 20:03:36 +0100 (Fri, 14 Dec 2007) | 3 lines
Add a section about nested listcomps to the tutorial.
Thanks to Ian Bruntlett and Robert Lehmann.
........
r59504 | raymond.hettinger | 2007-12-14 20:19:59 +0100 (Fri, 14 Dec 2007) | 1 line
Faster and simpler _replace() method
........
r59505 | raymond.hettinger | 2007-12-14 22:51:50 +0100 (Fri, 14 Dec 2007) | 1 line
Add usage note
........
r59507 | andrew.kuchling | 2007-12-14 23:41:18 +0100 (Fri, 14 Dec 2007) | 1 line
Remove warning about URL
........
r59510 | andrew.kuchling | 2007-12-14 23:52:36 +0100 (Fri, 14 Dec 2007) | 1 line
Bump the version number, and make a few small edits
........
r59511 | christian.heimes | 2007-12-15 00:42:36 +0100 (Sat, 15 Dec 2007) | 2 lines
Fixed bug #1628
The detection now works on Unix with Makefile, Makefile with VPATH and on Windows.
........
Diffstat (limited to 'Lib/collections.py')
-rw-r--r-- | Lib/collections.py | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/Lib/collections.py b/Lib/collections.py index 5fb0e05..2a7bb62 100644 --- a/Lib/collections.py +++ b/Lib/collections.py @@ -26,12 +26,12 @@ def namedtuple(typename, field_names, verbose=False): (11, 22) >>> p.x + p.y # fields also accessable by name 33 - >>> d = p.__asdict__() # convert to a dictionary + >>> d = p._asdict() # convert to a dictionary >>> d['x'] 11 >>> Point(**d) # convert from a dictionary Point(x=11, y=22) - >>> p.__replace__(x=100) # __replace__() is like str.replace() but targets named fields + >>> p._replace(x=100) # _replace() is like str.replace() but targets named fields Point(x=100, y=22) """ @@ -49,8 +49,8 @@ def namedtuple(typename, field_names, verbose=False): raise ValueError('Type names and field names cannot start with a number: %r' % name) seen_names = set() for name in field_names: - if name.startswith('__') and name.endswith('__') and len(name) > 3: - raise ValueError('Field names cannot start and end with double underscores: %r' % name) + if name.startswith('_'): + raise ValueError('Field names cannot start with an underscore: %r' % name) if name in seen_names: raise ValueError('Encountered duplicate field name: %r' % name) seen_names.add(name) @@ -59,19 +59,19 @@ def namedtuple(typename, field_names, verbose=False): argtxt = repr(field_names).replace("'", "")[1:-1] # tuple repr without parens or quotes reprtxt = ', '.join('%s=%%r' % name for name in field_names) template = '''class %(typename)s(tuple): - '%(typename)s(%(argtxt)s)' - __slots__ = () - __fields__ = property(lambda self: %(field_names)r) + '%(typename)s(%(argtxt)s)' \n + __slots__ = () \n + _fields = property(lambda self: %(field_names)r) \n def __new__(cls, %(argtxt)s): - return tuple.__new__(cls, (%(argtxt)s)) + return tuple.__new__(cls, (%(argtxt)s)) \n def __repr__(self): - return '%(typename)s(%(reprtxt)s)' %% self - def __asdict__(self, dict=dict, zip=zip): - 'Return a new dict mapping field names to their values' - return dict(zip(%(field_names)r, self)) - def __replace__(self, **kwds): + return '%(typename)s(%(reprtxt)s)' %% self \n + def _asdict(self, dict=dict, zip=zip): + 'Return a new dict which maps field names to their values' + return dict(zip(%(field_names)r, self)) \n + def _replace(self, **kwds): 'Return a new %(typename)s object replacing specified fields with new values' - return %(typename)s(**dict(zip(%(field_names)r, self), **kwds)) \n''' % locals() + return %(typename)s(*map(kwds.get, %(field_names)r, self)) \n\n''' % locals() for i, name in enumerate(field_names): template += ' %s = property(itemgetter(%d))\n' % (name, i) if verbose: |