Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
Description
Feature or enhancement
Proposal:
Updatepprint
functions to understand and formatTemplate
andInterpolation
types:
>>>from pprintimport pp>>> name="World">>> pp(t"Hello{World}")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 thepprint
registry, though.
If this is deemed worthwhile, I have aworking 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 ', 'data-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