diff --git a/peps/pep-0750.rst b/peps/pep-0750.rst index 92ec3c34cea..c1e2c92a000 100644 --- a/peps/pep-0750.rst +++ b/peps/pep-0750.rst @@ -455,7 +455,9 @@ The debug specifier, ``=``, is supported in template strings and behaves similar to how it behaves in f-strings, though due to limitations of the implementation there is a slight difference. -In particular, ``t'{value=}'`` is treated as ``t'value={value!r}'``: +In particular, ``t'{value=}'`` is treated as ``t'value={value!r}'``. The first +static string is rewritten from ``""`` to ``"value="`` and the ``conversion`` +defaults to ``r``: .. code-block:: python @@ -465,8 +467,11 @@ In particular, ``t'{value=}'`` is treated as ``t'value={value!r}'``: assert template.interpolations[0].value == "World" assert template.interpolations[0].conversion == "r" -If a separate format string is also provided, ``t'{value=:fmt}`` is treated -instead as ``t'value={value!s:fmt}'``. +If a conversion is explicitly provided, it is kept: ``t'{value=!s}'`` +is treated as ``t'value={value!s}'``. + +If a format string is provided without a conversion, the ``conversion`` +is set to ``None``: ``t'{value=:fmt}'`` is treated as ``t'value={value:fmt}'``. Whitespace is preserved in the debug specifier, so ``t'{value = }'`` is treated as ``t'value = {value!r}'``.