From 3b043d67c6e860a5b558bfafa9569a9ae6d54700 Mon Sep 17 00:00:00 2001 From: mmckerns Date: Sun, 6 Jan 2019 21:00:02 +0000 Subject: [PATCH] enable is_dill to handle ForkingPickler and derived classes git-svn-id: svn+ssh://svn.mystic.cacr.caltech.edu/pathos/dill@1109 8bfda07e-5b16-0410-ab1d-fd04ec2748df --- dill/_dill.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dill/_dill.py b/dill/_dill.py index 52638314..66d9b388 100644 --- a/dill/_dill.py +++ b/dill/_dill.py @@ -38,6 +38,7 @@ def _trace(boolean): PY3 = (sys.hexversion >= 0x30000f0) # OLDER: 3.0 <= x < 3.4 *OR* x < 2.7.10 #NOTE: guessing relevant versions OLDER = (PY3 and sys.hexversion < 0x30400f0) or (sys.hexversion < 0x2070af0) +PY34 = (0x30400f0 <= sys.hexversion < 0x30500f0) if PY3: #XXX: get types from .objtypes ? import builtins as __builtin__ from pickle import _Pickler as StockPickler, Unpickler as StockUnpickler @@ -1458,10 +1459,11 @@ def check(obj, *args, **kwds): return # use to protect against missing attributes -def is_dill(pickler): +def is_dill(pickler, child=None): "check the dill-ness of your pickler" - return 'dill' in pickler.__module__ - #return hasattr(pickler,'_main') + if (child is False) or PY34 or (not hasattr(pickler.__class__, 'mro')): + return 'dill' in pickler.__module__ + return Pickler in pickler.__class__.mro() def _extend(): """extend pickle with all of dill's registered types"""