Skip to main content

tstrings: PEP 750-style Template Strings for Python < 3.14

This package provides a backport of the new PEP 750 "t-string" template string syntax, for use with Python versions before 3.14.

Usage

Install from PyPI with uv add tstrings-backport or python -m pip install tstrings-backport.

Instead of the new syntax t"..." (which is only available in Python 3.14+), use the function call form:

from tstrings import t

name = "World"
tpl = t("Hello, {name}!")
print(tpl.strings)         # ("Hello, ", "!")
print(tpl.interpolations)  # (Interpolation(value="World", expression="name", ...),)

The returned object is a Template with .strings and .interpolations attributes, which should be a drop-in replacement for the built-in t-strings.

Features

  • String interpolation: Supports {expr} expressions, including complex expressions.
  • Debug specifier: {var=} and {var=:.2f} forms, as in f-strings.
  • Conversion specifiers: {val!r}, {val!s}, {val!a}.
  • Format specifiers: {num:.2f}.
  • Multiline expressions: Supported.
  • Error handling: Raises NameError or SyntaxError for invalid expressions, as in f-strings (but at runtime, not at compile time).
  • PEP 750 API: Returns Template and Interpolation dataclasses matching the PEP.

Limitations

  • No t-string literal syntax: You must use t("..."), not t"...".
  • No support for all edge cases: Some advanced t-string edge cases may not be fully supported.

Examples

from tstrings import t

name = ""
value = 1
num = 3.1415
obj = {}
data = [1, 2, 3]

# Simple
tpl = t("Hello, {name}!")
# Debug
tpl = t("{value=}")
# Format
tpl = t("{num:.2f}")
# Conversion
tpl = t("{obj!r}")
# Multiline
tpl = t("""
    {sum(data)}
""")

Development & Testing

Install with uv sync and activate the virtualenv (. .venv/bin/activate or similar).

Run the test suite with:

make test

or just:

uv run --python 3.13 pytest

See tests/test_all.py for coverage of all supported features.

Tests also include the tdom source code (modified for pre-3.14 syntax) and test suite.

How to help

This was (initially) hacked together in less than 2 hours. If you find it useful, please consider contributing fixes, improvements, or documentation!

Pull requests and issues are welcome.

Metadata

Release files for tstrings-backport 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tstrings-backport 0.1.5
File Size Uploaded
tstrings_backport-0.1.5.tar.gz 4.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tstrings-backport 0.1.5
File Interpreter ABI Platform
tstrings_backport-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 9.9 kB

Release files / tstrings_backport-0.1.5.tar.gz

Download URL tstrings_backport-0.1.5.tar.gz
Size 4.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9b39455fee76a9b986f517489253d8408a1cbaf5259f81665a51b8f464b1455c
BLAKE2b-256 checksum
How to use checksums
bbfa7ec2ee014a55b9a98c763e472993b2563b065caa8777bcdde8a784effe5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.4

Release files / tstrings_backport-0.1.5-py3-none-any.whl

Download URL tstrings_backport-0.1.5-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
835e1e8ec6f87342605f5a71d16cb3a303f1b1840c4935d8107f7038f0065127
BLAKE2b-256 checksum
How to use checksums
5bb8dea0b1f3b3d78915983d03a2bcce2fbfb422c95cc173bb644f6b08309b81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.4

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page