>>> When using a PickleCol with default={ } the behaviour is not exactly
>>> what I would expect:
>>>
>>> ######################################################################
>>> from sqlobject import *
>>> sqlhub.processConnection = connectionForURI( 'sqlite:///:memory:',
>>> debug=True )
>>> class t( SQLObject ):
>>>     x = PickleCol( default={} )
>>> t.createTable( )
>>> row = t( )
>>> print row.x   # this will print None
>>> ######################################################################
>>>
>>> Having a non-empty dict works as expected though. I had a feeling it
>>> was related to mutable keyword argument values and the associated
>>> problems, but the same problem is there with an empty tuple which is
>>> certainly unmutable.
>>>
>>> Is this a bug or a feature?
>>
>>    Seems like a bug related to boolean testing of objects. I.e.,
>> somewhere
>> there is a code that does
>>
>> if object:...
>>
>>    instead of
>>
>> if object is None:...
>>
>>    But a quick glance at PickleCol code didn't reveal a clue.
>
> I thought the same first, but StringCol( default='' ) works as
> expected, although the empty string also evaluates to False as
> boolean. And I'd think this part of the code (testing for default) is
> the same for every col type. So I'm sufficiently confused, I'll keep
> looking at the code.

I've investigated this further and the problem is with the validator
PickleCol wants to use.
If I insert a 'print kw' before and after

line 1066: kw[name] = dbValue = from_python(value, self._SO_validatorState)

in main.py and do the following:

######################################################################
from sqlobject import *
sqlhub.processConnection = connectionForURI( 'sqlite:///:memory:' )
class t( SQLObject ):
    x = PickleCol( default={} )
t.createTable( )
row = t( )
######################################################################

I'll get:

{'x': {}}
{'x': None}

I.e. the empty dict here gets validated to None. But I couldn't find
out the reason for this, PickleCol uses a complicated validator.

Cheers,
Daniel




-- 
Psss, psss, put it down! - http://www.cafepress.com/putitdown

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to