[kforge-dev] Python bug?

John Bywater john.bywater at appropriatesoftwarefoundation.org
Fri Dec 16 16:07:34 UTC 2005


There isn't a Python bug, just that Registers implement Python dict, and 
so are False when empty:

I Googled "truth Python" and found this page:

http://docs.python.org/lib/truth.html

"Any object can be tested for truth value, for use in an if or while 
condition...

"The following values are considered false:

* any empty sequence, for example, '', (), []
* any empty mapping, for example, {}"

The Register I was checking for 'truth' is implemented to behave as a 
Python dict, and so when a new Register, with no registered 
DomainObjects, is evaluated for truth it can be expected to evaluate to 
False.

So, "if plugin.register" means "does the register have any 
DomainObjects" rather than "has a register been set".

For example:

registry.persons == True

registry.persons['admin'].sessions == False


I'll add "hasRegister(self): return self.register != None" to the plugin 
system PluginBase class: (I was checking if a Plugin extends the Domain 
Model in the service view class).

John.





More information about the kforge-dev mailing list