News for hackers. Stuff that matters.
Re:Diagnosing a Linux-only unit test failure by cyphar on Monday October 09, 2017 @09:47AM (#15433722)
Python added "f strings" recently (read: in 2015)[1], which look like

    f"{some_var}"
which evaluates "some_var" in the local scope. Sort of like Ruby's "#{...}" (if I'm remembering that syntax correctly). Rust supports named parameters in format strings[2] but that's not quite the same.

[1]: https://www.python.org/dev/peps/pep-0498/ [2]: https://doc.rust-lang.org/std/fmt/#named-parameters

Re:Diagnosing a Linux-only unit test failure by vog on Monday October 09, 2017 @12:04PM (#15435037)
Note that you can do this in old version of Python, too, using the "format-locals" idiom:

    some_var = ...

    "{some_var}".format(**locals())
Although this does have some limitations regarding variables to strictly being in the local scope, this is a fine idiom if you need to be compatible with older Python versions.
Re:Diagnosing a Linux-only unit test failure by cyphar on Monday October 09, 2017 @08:47PM (#15438534)
That is a bit of a hack though ;). You could also do it with %-style formatting as well:

  some_var = ...
  "%(some_var)s" % locals()
If you want to do both locals and globals you can do:

  some_var = ...
  "%(some_var)s" % dict(globals(), **locals())
New Python versions (>=3.5) have this syntax:

  "%(some_var)s" % {**globals(), **locals()}
But those versions also have f-strings so that's sort of moot.