ispicklable() --> bool, possible?

Jp Calderone exarkun at intarweb.us
Tue Feb 25 01:53:07 CET 2003


On Tue, Feb 25, 2003 at 12:10:36AM +0100, Gerrit Holl wrote:
> Hi,
> 
> I am currently using the following code to check whether an object is
> picklable or not:
> 
> _canpickle = (NoneType, bool, int, long, float, complex, basestring, FunctionType, ClassType)
> _cantpickle = (GeneratorType, pygame.sprite.Group, pygame.sprite.GroupSingle, pygame.sprite.Sprite, pygame.rect.Rect, pygame.Surface)
> def picklable(obj):
>     for inst in _canpickle:
>         if isinstance(obj, inst):
>             return True
>     for inst in _cantpickle:
>         if isinstance(obj, inst):
>             return False
>     if isinstance(obj, dict):
>         obj = obj.values()
>     if isinstance(obj, list) or isinstance(obj, tuple):
>         for subobj in obj:
>             if not picklable(subobj):
>                 return False
>         return True
>     debug("unknown", obj)

  I would use just this last portion

>     try:
>         cPickle.dumps(obj)
>     except (TypeError, cPickle.UnpickleableError):
>         return False
>     else:
>         return True

  Did you discard this approach for performance reasons?

  Jp

-- 
 up 16 days, 4:29, 5 users, load average: 0.30, 0.12, 0.04
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-list/attachments/20030224/23b0473a/attachment.pgp>


More information about the Python-list mailing list