News for hackers. Stuff that matters.
Re:Python's new t-strings by davepeck on Monday April 21, 2025 @04:39PM (#43756219)
> If you can use a string anywhere you can use a t-string

You can't; they're different types. t-strings are not `str`

It's up to good framework/API design to take advantage of this.

Re:Python's new t-strings by 0cf8612b2e1e on Monday April 21, 2025 @05:43PM (#43756834)
A library writer ultimately has to decide if they accept both types. For a database cursor, do you take regular strings + parameter arguments and template strings? Or dedicate a new API to the idea?

  cursor.execute(“select * from x where foo=?”, {foo=1})
  # while also allowing
  cursor.execute(t“select * from x where foo={foo}”)
  #Vs 
  cursor.executetemplate(“select * from x where foo={foo}”)
If ‘execute’ takes string and t-string, then I would consider it a problem to use a t-string without parameters. If there is a novel API just for t-strings, then you are implying widespread breaking changes as you have a schism between the two ways of providing parameters.
Re:Python's new t-strings by davepeck on Monday April 21, 2025 @07:28PM (#43757595)
My point was that library authors will need to consider this carefully. If you're writing a library where injection attacks matter, then -- long term -- you almost certainly do not want a single method that accepts `Union[str, Template]`. You probably either want to avoid accepting `str` entirely, or perhaps provide two separate methods. Some period of deprecation seems inevitable.
Re:Python's new t-strings by WorldMaker on Monday April 21, 2025 @05:16PM (#43756583)
Yeah, "t-string" is possibly a misnomer, because they are in fact at runtime a Template object (from string.templatelib).