From 7d17338f9aa8d3b99f28b537218d3349d0590940 Mon Sep 17 00:00:00 2001 From: Leonardo Gama Date: Tue, 9 Aug 2022 22:56:06 -0300 Subject: [PATCH] Fix `pickles()` flagging `__builtins__` as unpickleable due to the `all()` function (#538) Currently: ```python >>> import dill >>> dill.pickles(__builtins__) # __builtins__.all() raises a TypeError for a missing argument False >>> dill.copy(__builtins__) >>> _ is __builtins__ True ``` Expected: ```python >>> import dill >>> dill.pickles(__builtins__, exact=True) True ``` --- dill/_dill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dill/_dill.py b/dill/_dill.py index be0aeba2..614a522c 100644 --- a/dill/_dill.py +++ b/dill/_dill.py @@ -1983,7 +1983,7 @@ def pickles(obj,exact=False,safe=False,**kwds): try: #FIXME: should be "(pik == obj).all()" for numpy comparison, though that'll fail if shapes differ result = bool(pik.all() == obj.all()) - except AttributeError: + except (AttributeError, TypeError): warnings.filterwarnings('ignore') result = pik == obj warnings.resetwarnings()