[Python-Dev] PEP 292, Simpler String Substitutions

Barry A. Warsaw barry@zope.com
Wed, 19 Jun 2002 08:29:39 -0400

>>>>> "DB" == Duncan Booth <duncan@rcp.co.uk> writes:

    DB> What I really don't understand is why there is such pressure
    DB> to get an alternative interpolation added as methods to str &
    DB> unicode rather than just adding an interpolation module to the
    DB> library?  e.g.

Because I don't think there's all that much useful variation, open
issues in this PEP notwithstanding.  A module seems pretty heavy for
such a simple addition.  It might obviate the need for a PEP
though. :)

    | from interpolation import sub
    | def birth(self, name):
    |     country = self.countryOfOrigin['name']
    |     return sub('${name} was born in ${country}', vars())

    DB> I added in the explicit vars() parameter because the idea of a
    DB> possibly unknown template string picking up arbitrary
    DB> variables is, IMHO, a BAD idea.

Only if the template string comes from an untrusted source.  If it's
in your code, there should be no problem, and if there is, it's a
programming bug.

vars() doesn't cut it as mentioned in a previous reply.