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
NameErrororSyntaxErrorfor invalid expressions, as in f-strings (but at runtime, not at compile time). - PEP 750 API: Returns
TemplateandInterpolationdataclasses matching the PEP.
Limitations
- No t-string literal syntax: You must use
t("..."), nott"...". - 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)
| File | Size | Uploaded | |
|---|---|---|---|
| tstrings_backport-0.1.5.tar.gz | 4.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|