(original) (raw)
The text of the PEP
has too much on motivation and rationale: maybe that would be suitable
for an informative PEP.
The proposal itself is under-specified.
But the real weakness cannot be fixed by improving the text: it is in the key characteristic of the proposal, which wants to have its cake and eat it, too.
This is initially likable: to recipients who don't know about e-strings they behave just like regular strings; but recipients who \*do\* know about them can extract the template and the values to be interpolated and use these to build an alternative string, e.g. to be used as a translation.
However, in order to fulfill the former requirement, the type must inherit from str (it's one of those built-in types for which duck typing doesn't always work). And at the same time this is a real problem, because it's too easy to lose the e-string. For example, any function that operates on strings will operate on e-strings, but the result will in general be a plain str instead of an e-string, which can be confusing for functions that want the e-string. But \*not\* inheriting from str causes the reverse problem.The proposal itself is under-specified.
But the real weakness cannot be fixed by improving the text: it is in the key characteristic of the proposal, which wants to have its cake and eat it, too.
This is initially likable: to recipients who don't know about e-strings they behave just like regular strings; but recipients who \*do\* know about them can extract the template and the values to be interpolated and use these to build an alternative string, e.g. to be used as a translation.