I think this point deserves a lot more attention. The “Valid Tag Names” section acknowledges that any existing string prefix must not be a valid tag name, but doesn’t mention the corollary that, once we have tag strings, adding any new string prefix would be a backwards-incompatible change since it might change the behavior of existing code using that prefix as a user-defined tag. This seems to be making a bet that we’ll never need another string prefix again, but that doesn’t seem like a wise bet to me.
At the very least, I’d suggest that the PEP should require that tags be at least 2 (or perhaps even 3) characters, enforcing that with a SyntaxError
, to allow the implementation to support more built-in 1 character prefixes in the future without breaking backwards compatibility.