Open
Conversation
Python 3.14 introduces [t-strings][PEP750], a generalisation of f-strings which yields a processable `Template` object instead of reifying a string. The safety assumption around t-strings is that the literal parts of the template are considered "safe" and the interpolations are considered unsafe. So for markupsafe the literal parts are `Markup`-ed while the interpolations are `escape`-ed. This commit adds support for t-strings to both `Markup` and `escape`, essentially matching the handling of `__html__`. It does *not* add support for t-strings to: - `Markup.__add__` / `Markup.__radd__`, the semantics seem a bit dubious and it should be easy enough to `Markup` or `escape` the t-string / template object in that case. - `EscapeFormatter` as I'm not entirely sure whether / how a template object should interact with format specs. Fixes pallets#511 [PEP750]: https://peps.python.org/pep-0750/
This comment was marked as outdated.
This comment was marked as outdated.
Member
|
@aleks0099 please do not use an "AI" to "review" PRs. It is not helpful. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Python 3.14 introduces t-strings, a generalisation of f-strings which yields a processable
Templateobject instead of reifying a string. The safety assumption around t-strings is that the literal parts of the template are considered "safe" and the interpolations are considered unsafe. So for markupsafe the literal parts areMarkup-ed while the interpolations areescape-ed.This commit adds support for t-strings to both
Markupandescape, essentially matching the handling of__html__.It does not add support for t-strings to:
Markup.__add__/Markup.__radd__, the semantics seem a bit dubious and it should be easy enough toMarkuporescapethe t-string / template object in that case.EscapeFormatteras I'm not entirely sure whether / how a template object should interact with format specs.Fixes #511