[issue46307] string.Template should allow inspection of identifiers

Barry A. Warsaw report at bugs.python.org
Sat Jan 8 22:28:16 EST 2022


Barry A. Warsaw <barry at python.org> added the comment:

I think you’re right that the iterator API isn’t very helpful.  I also agree that you probably really want to answer the “why identifiers are in this template?” question.  As for repeats, there’s two ways to think about it.  You could return all the identifiers in the order in which they’re found in the template (and you can unique-ify them if you want by passing that list to set()).  But maybe you don’t really need that either.

get_identifiers() works for me!

On Jan 8, 2022, at 18:51, Ben Kehoe <report at bugs.python.org> wrote:
> 
> Ben Kehoe <ben at kehoe.io> 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:
>  # what would I do here?
>  # would it include repeats if they appear more than once in the template?
> 
> I guess there are two ways to think about it: one is "what identifiers are in this template?" which I think should return a list with no repeats, which I can then iterate over or check if a value is in it. The other is, "what are the contents of the template?" in the style of string.Formatter.parse().
> 
> Given that string.Template is supposed to be the "simple, no-frills" thing in comparison to string.Formatter, I see less use for the latter option.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue46307>
_______________________________________


More information about the Python-bugs-list mailing list