I just updated my trunk only to find several scripts not working properly 
and acting strangely. I thought it was a change made to MSSQL, but I have 
narrowed down the problem to revision 1980 titled, 'many semplifications'. A 
change made to storage.py's __getattr__() function is causing the problem.

The old function used to read:

    def __getattr__(self, key):
        if key in self:
            return self[key]
        else:
            return None

That means that if you create a new Storage object like so:

data = Storage()
data.foo = 'bar'

And you tried to access a field that didn't exist:

return data.some_field

This would return None. However, the new __getattr__ now reads:

    def __getattr__(self,key):
        if not key in self:
            self[key] = Storage()
        return self[key]

So the same exact code would return <Storage {}> instead of None.

This is causing a lot of problems for me, as I rely on the Storage object 
throughout my application.

Reply via email to