←back to thread

620 points tambourine_man | 6 comments | | HN request time: 0.876s | source | bottom
1. davepeck ◴[] No.43754220[source]
Hi! I wrote this. :-)

I'm a little late to the conversation (and a bit surprised to see this trending on HN) but am happy to answer any questions; I'll try to pop in throughout the day.

replies(3): >>43754275 #>>43754336 #>>43754430 #
2. 18172828286177 ◴[] No.43754275[source]
This is super cool, thank you.
3. maxloh ◴[] No.43754336[source]
Hi. I come from a JavaScript background.

I am wondering what is the reason behind not using a similar syntax to JavaScript? Seems simpler to me.

  # Compare this:
  template = t"<p>{evil}</p>"
  safe = html(template)

  # To this:
  safe = html"<p>{evil}</p>"
replies(1): >>43754479 #
4. varunneal ◴[] No.43754430[source]
Would be interested in inclusion of PEP 292 [1] in your discussion here, which introduced `string.Template`. Is this Template going to be deprecated?

[1] https://peps.python.org/pep-0292/

replies(1): >>43754467 #
5. davepeck ◴[] No.43754467[source]
PEP 292's `string.Template` will remain; there are no plans to deprecate it.

PEP 750's `string.templatelib.Template` is a separate and unrelated type. Amongst many differences, unlike PEP 292, `Template` has a literal form too.

I'm hopeful that the confusion will be minimal; in practice, PEP 292 (aka $-strings) is used only in specialized cases, like flufl.i18n, a really deep I18N framework.

6. davepeck ◴[] No.43754479[source]
The PEP originally started with a similar-to-javascript syntax but over time we decided it wasn't the right way to expose these ideas in Python. There's more detail about why this approach was rejected in the PEP: https://peps.python.org/pep-0750/#arbitrary-string-literal-p...