Ben Kehoe added the comment:
That doesn’t really seem like a Pythonic way of extracting that
information? Nor does it seem like it would be an obvious trick for the
average developer to come up with. A method that provides the information
directly seems useful
Ben Kehoe added the comment:
The point is to be able to programmatically determine what is needed for a
successful substitute() call. A basic use case for this is better error
messages; calling substitute() with an incomplete mapping will tell you
only the first missing identifier it encounters
Ben Kehoe added the comment:
Having slept on it, I realized that if I was presenting interactive prompts for
a template, I would expect the prompts to be in order that the identifiers
appear in the template. Accordingly, I've updated the PR to maintain ord
Ben Kehoe added the comment:
I opened a PR. By default, it raises an exception if there's an invalid
identifier; there's a keyword argument raise_on_invalid to control that.
The implementation I have adds them to a set first, which means the order is
not guaranteed. I'm of
Change by Ben Kehoe :
--
keywords: +patch
pull_requests: +28698
stage: -> patch review
pull_request: https://github.com/python/cpython/pull/30493
___
Python tracker
<https://bugs.python.org/issu
Ben Kehoe added the comment:
Happy to make a PR! In my mind I had been thinking it would be the
get_identifiers() method with the implementation above, returning a list.
As for __iter__, I'm less clear on what that would look like:
t = string.Template(...)
for identifier in t:
#
New submission from Ben Kehoe :
Currently, the only thing that can be done with a string.Template instance and
a mapping is either attempt to substitute with substitute() and catch a
KeyError if some identifier has not been provided in the mapping, or substitute
with safe_substitute() and