[Python-Dev] Re: Alternative
ImplementationforPEP292:SimpleString Substitutions
Barry Warsaw
barry at python.org
Mon Sep 13 16:32:55 CEST 2004
On Fri, 2004-09-10 at 18:22, Raymond Hettinger wrote:
> > My only problem with that is the interference that the 'mapping'
> > argument presents. IOW, kwds can't contain 'mapping'.
>
> To support a case where both a mapping and keywords are present, perhaps
> an auxiliary class could simplify matters:
>
> def substitute(self, mapping=None, **kwds):
> if mapping is None:
> mapping = kwds
> elif kwds:
> mapping = _altmap(kwds, mapping)
> . . .
>
> class _altmap:
> def __init__(self, primary, secondary):
> self.primary = primary
> self.secondary = secondary
> def __getitem__(self, key):
> try:
> return self.primary[key]
> except KeyError:
> return self.secondary[key]
> This matches the way keywords are used with the dict().
This isn't exactly what I was concerned about, but I agree that it's a
worthwhile approach. (I'm going to accept your patch and check it in,
with slight modifications.)
What I was worried about was if you providing 'mapping' positionally,
and kwds contained a 'mapping' key, you'll get a TypeError. I'm going
to change the positional argument to '__mapping' so collisions of that
kind are less likely, and will document it in libstring.tex.
-Barry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 307 bytes
Desc: This is a digitally signed message part
Url : http://mail.python.org/pipermail/python-dev/attachments/20040913/c4d9e37d/attachment.pgp
More information about the Python-Dev
mailing list