[Freeipa-devel] keys[-1] idiom?
Martin Kosek
mkosek at redhat.com
Sun Jun 10 19:33:42 UTC 2012
On Fri, 2012-06-08 at 10:56 -0400, John Dennis wrote:
> I frequently see this idiom in the code in plugins and pre/post callbacks:
>
> keys[-1]
>
> My understanding is that keys in the positional parameter list of the
> command, correct?
Correct.
>
> keys always appears in a formal parameter list with the parameter
> "options", which I believe are the keyword arguments of the command
> (i.e. *args, **kwds)
>
> Thus keys[-1] would be the last positional parameter. What is special
> about it such that one can always reference the last positional
> parameter? (or have I misunderstood, if so please elucidate).
I am a bit lost here. As you correctly stated, keys contains the
positional parameters. Each keys value should uniquely point to one LDAP
entry represented by LDAPObject class. We use keys[-1] for a case when
LDAPObjects are nested and keys list holds more than one value and thus
keys[0] would not work. For example keys list for DNS record could hold
('example.com', 'ipa').
>
> If keys is the positional parameter list (e.g. *args) why is is called
> "keys"? That seems really confusing because keys usually has an entirely
> different meaning (i.e. keys of a dict). Why isn't it named "args"?
>
Maybe Rob will know why we started calling it keys, I think it is not a
total non-sense, after all it holds primary _key_ values for referred
LDAPObjects...
HTH,
Martin
More information about the Freeipa-devel
mailing list