Add string.templatelib in 3.14 (#14044)

This commit is contained in:
sobolevn
2025-05-13 14:56:11 +03:00
committed by GitHub
parent bc244028d7
commit c7ca24ab24
4 changed files with 29 additions and 1 deletions
+28
View File
@@ -0,0 +1,28 @@
from collections.abc import Iterator
from typing import Any, Literal, final
__all__ = ["Interpolation", "Template"]
@final
class Template: # TODO: consider making `Template` generic on `TypeVarTuple`
strings: tuple[str, ...]
interpolations: tuple[Interpolation, ...]
def __new__(cls, *args: str | Interpolation) -> Template: ...
def __iter__(self) -> Iterator[str | Interpolation]: ...
def __add__(self, other: Template | str) -> Template: ...
@property
def values(self) -> tuple[Any, ...]: ... # Tuple of interpolation values, which can have any type
@final
class Interpolation:
value: Any # TODO: consider making `Interpolation` generic in runtime
expression: str
conversion: Literal["a", "r", "s"] | None
format_spec: str
__match_args__ = ("value", "expression", "conversion", "format_spec")
def __new__(
cls, value: Any, expression: str, conversion: Literal["a", "r", "s"] | None = None, format_spec: str = ""
) -> Interpolation: ...