On Wed, Feb 06, 2019 at 03:56:37PM +0000, Daniel P. Berrangé wrote:
On Wed, Feb 06, 2019 at 04:53:46PM +0100, Andrea Bolognani wrote:
> On Tue, 2019-02-05 at 17:53 +0000, Daniel P. Berrangé wrote:
> [...]
> > @@ -202,8 +202,9 @@ class Inventory:
> > try:
> > self._facts[host] = self._read_all_facts(host)
> > self._facts[host]["inventory_hostname"] = host
> > - except Exception:
> > - raise Error("Can't load facts for
'{}'".format(host))
> > + except Exception as ex:
> > + raise Error("Can't load facts for '%(host)s':
%(ex)s" %
> > + { "host": host, "ex": ex})
>
> Did you actually run into a situation where this was useful? It's
> one of those diagnostics that I didn't really expect to trigger in
> practice...
Yes, if you create malformed yaml file this triggers. It means the
error message now tells you the place where the yaml syntax error is
> Either way, I don't really have a problem with adding it, but what
> I don't like is using a completely different way to format strings
> than the rest of the code.
>
> I don't use Python nearly enough to have an opinion on the merits
> of either syntax compared to the other, so if the one you're using
> here is considered a best practice then we can definitely switch to
> it; however, it will have to be done in a separate commit that
> converts the entire script at once rather than in a piecemail
> fashion.
I've never come across the "{}" syntax before so didn't even
know how to use named params for it until now.
I kind of agree with Andrea, the preferred formatting in python is to
use {} and .format() method, the '%' formatting is old and should not
be used. In this case you have these options:
"Can't load facts for '{}': {}".format(host, ex)
"Can't load facts for '{0}': {1}".format(host, ex)
"Can't load facts for '{host}': {ex}".format(host=host, ex=ex)
Pavel