Martin v. Löwis wrote:
Raymond Hettinger wrote:
[Brett]
I suspect stating exactly what a valid Python identifier contains as you did in parentheses above will be enough.
Given the template, u'¿Puede volver $hoy o $mañana?', you think $ma is an intended placeholder name and that ñ should be a delimiter just like whitespace and punctuation?
No, I think Brett (and apparently nearly everybody else) thinks that such a template will not be written over the course of the next five years, except for demonstration purposes. Instead, what will be written is u'¿Puede volver $today o $tomorrow?' because the template will be a translation of the original English template, and, during translation, placeholder names must not be changed (although I have difficulties imagining possible values for today or tomorrow so that this becomes meaningful).
Actually, that wasn't what I was thinking, but that also works. My original thinking is that Template will throw a fit and that's fine since they didn't follow the rules.
If end users always follow the rules, this will never come up. If they don't, should there be error message or a silent failure?
There is always a chance of a silent failure in SafeTemplates, even with this rule added - this is the purpose of SafeTemplates. With a Template, you will get a KeyError. In any case, the failure will not be completely silent, as the user will see $mañana show up in the output.
Right, my other reason for not thinking this is a big issue. If you use SafeTemplate you will have to watch out for silent problems like this anyway. I just don't think it will be a big problem. And if people want the support they will just use a pure Unicode Template subclass (perhaps we should include that in the module?). -Brett