[Python-Dev] Re: Alternative ImplementationforPEP292:SimpleString Substitutions (original) (raw)
Raymond Hettinger raymond.hettinger at verizon.net
Sat Sep 11 00:22:54 CEST 2004
- Previous message: [Python-Dev] Re: Alternative Implementation forPEP292:SimpleString Substitutions
- Next message: [Python-Dev] Re: Alternative ImplementationforPEP292:SimpleString Substitutions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> * For someone who understands exactly what they are doing, perhaps $ma > is the intended placeholder -- why force them to uses braces: > ${ma}ñana.
It also makes it more difficult to document. IOW, right now the PEP and the documentation say that the first non-identifier character terminates the placeholder. How would you word the rules with your change?
"""Placeholders must be a valid Python identifier (containing only ASCII alphanumeric characters and an underscore). If an unbraced identifier ends with a non-ASCII alphanumeric character, such as the latin letter n with tilde in $mañana, then a ValueError is raised for the specious identifier.
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().
Raymond
- Previous message: [Python-Dev] Re: Alternative Implementation forPEP292:SimpleString Substitutions
- Next message: [Python-Dev] Re: Alternative ImplementationforPEP292:SimpleString Substitutions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]