aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/string/templatelib.py
diff options
context:
space:
mode:
authorLysandros Nikolaou <lisandrosnik@gmail.com>2025-04-30 11:46:41 +0200
committerGitHub <noreply@github.com>2025-04-30 11:46:41 +0200
commit60202609a2c2d0971aadfa4729ba30b50e89c6ea (patch)
treed821f3f8f277de56e5d8da457d492f1288cb2bb9 /Lib/string/templatelib.py
parent5ea9010e8910cb97555c3aef4ed95cca93a74aab (diff)
downloadcpython-60202609a2c2d0971aadfa4729ba30b50e89c6ea.tar.gz
cpython-60202609a2c2d0971aadfa4729ba30b50e89c6ea.zip
gh-132661: Implement PEP 750 (#132662)
Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Wingy <git@wingysam.xyz> Co-authored-by: Koudai Aono <koxudaxi@gmail.com> Co-authored-by: Dave Peck <davepeck@gmail.com> Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> Co-authored-by: Paul Everitt <pauleveritt@me.com> Co-authored-by: sobolevn <mail@sobolevn.me>
Diffstat (limited to 'Lib/string/templatelib.py')
-rw-r--r--Lib/string/templatelib.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/Lib/string/templatelib.py b/Lib/string/templatelib.py
new file mode 100644
index 00000000000..14b40e1e36e
--- /dev/null
+++ b/Lib/string/templatelib.py
@@ -0,0 +1,26 @@
+"""Support for template string literals (t-strings)."""
+
+__all__ = [
+ "Interpolation",
+ "Template",
+]
+
+t = t"{0}"
+Template = type(t)
+Interpolation = type(t.interpolations[0])
+del t
+
+def _template_unpickle(*args):
+ import itertools
+
+ if len(args) != 2:
+ raise ValueError('Template expects tuple of length 2 to unpickle')
+
+ strings, interpolations = args
+ parts = []
+ for string, interpolation in itertools.zip_longest(strings, interpolations):
+ if string is not None:
+ parts.append(string)
+ if interpolation is not None:
+ parts.append(interpolation)
+ return Template(*parts)