Feature or enhancement
Proposal:
Update pprint functions to understand and format Template and Interpolation types:
>>> from pprint import pp >>> name = "World" >>> pp(t"Hello {name}") Template(strings=('Hello ', ''), interpolations=(Interpolation('World', 'name', None, ''),))""")
I believe it will be quite common to play with t-strings in the REPL and other dynamic environments, where pretty formatting could help a lot. I don't know how high is the bar for adding types to the pprint registry, though.
If this is deemed worthwhile, I have a working implementation, pretty straightforward.
More complex examples (inspired from the PEP), to give a sense of what it could look like:
>>> attributes = {"id": "main"} >>> attribute_value = "shrubbery" >>> content = "hello" >>> template = t"<span {attributes} data-value={attribute_value}>{content}</span>" >>> pp(template) Template(strings=('<span ', ' data-value=', '>', '</span>'), interpolations=(Interpolation({'id': 'main'}, 'attributes', None, ''), Interpolation('shrubbery', 'attribute_value', None, ''), Interpolation('hello', 'content', None, ''))) >>> >>> nested = t"<div>{template}</div>" >>> pp(nested) Template(strings=('<div>', '</div>'), interpolations=(Interpolation(Template(strings=('<span ', ' data-value=', '>', '</span>'), interpolations=(Interpolation({'id': 'main'}, 'attributes', None, ''), Interpolation('shrubbery', 'attribute_value', None, ''), Interpolation('hello', 'content', None, ''))), 'template', None, ''),))
Unfortunately, "interpolation" being a quite long word repeated 2 times in the repr of a t-string, with default formatting rules we soon have text crumpled to the right of the screen... but I believe it is still more readable than
Template(strings=('<div>', '</div>'), interpolations=(Interpolation(Template(strings=('<span ', ' da ta-value=', '>', '</span>'), interpolations=(Interpolation({'id': 'main'}, 'attributes', None, ''), Interpolation('shrubbery', 'attribute_value', None, ''), Interpolation('hello', 'content', None, '') )), 'template', None, ''),))
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response