<div dir="ltr"><div class="gmail_quote">On Tue, Nov 23, 2010 at 11:16 PM, cool-RR <span dir="ltr">&lt;<a href="mailto:cool-rr@cool-rr.com">cool-rr@cool-rr.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div dir="ltr"><div class="gmail_quote"><div class="im">On Tue, Nov 23, 2010 at 11:01 PM, Shai Berger <span dir="ltr">&lt;<a href="mailto:shai@platonix.com" target="_blank">shai@platonix.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi Ram and all,<br>
<br>
1) To me, it makes more sense to define the property you seek on the negative:<br>
an object is &quot;atomically unpicklable&quot;, or &quot;inherently unpicklable&quot;, if it<br>
cannot be pickled, for any value of its attributes.<br></blockquote><div><br></div></div><div>Yeah, I guess that makes more sense; However, I&#39;d still like to present a positive function to the user (`is_atomically_pickleable`) and not a negative one. (`is_inherently_unpickleable`). But I wouldn&#39;t complain if I was given the latter :)</div>
<div class="im">
<div> </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">2) I&#39;m not sure how you&#39;d characterize a good answer; I think Laurence<br>
Gonsalves&#39; answer on StackOverflow is quite good.<br></blockquote><div><br></div></div><div>Laurence&#39;s answer seems wrong to me. He&#39;s calling the pickler, and on consequence is that the pickler does the `__reduce__` dance, but that seems like overkill. I think this causes waste. (Probably doing the actual pickling of the object instead of just checking if it&#39;s possible.) Checking if an object is atomically pickleable should not involve the object at all; Only its type.</div>

<div> </div><div><br></div><div>Ram.</div></div>
</div>
</blockquote></div><br>Hello all,<div><br></div><div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">I released the `pickle_tools` module which does exactly what I asked for:</div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><br></div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><a href="https://github.com/cool-RR/GarlicSim/blob/master/garlicsim/garlicsim/general_misc/pickle_tools.py">https://github.com/cool-RR/GarlicSim/blob/master/garlicsim/garlicsim/general_misc/pickle_tools.py</a></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><br></div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">Here are its <a href="https://github.com/cool-RR/GarlicSim/tree/master/garlicsim/test_garlicsim/test_general_misc/test_pickle_tools">tests</a>.</div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><br></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">You can use it by installing `garlicsim` and doing `from garlicsim.general_misc import pickle_tools`. The function I was talking about in this thread is </span></font>`is_atomically_pickleable`. Everything is explained in the docstrings.</div>
<div><br></div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">There <span style="font-family: arial; font-size: small; border-collapse: separate; ">is even a Python 3 version on the <a href="http://pypi.python.org/pypi/garlicsim_py3" target="_blank" style="color: rgb(0, 0, 204); ">Python 3 fork of GarlicSim</a>. So you can use it on Python 3 code.</span></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><span style="font-family: arial; font-size: small; border-collapse: separate; "><br></span></div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">
Enjoy,</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">Ram.</div><br>
</div></div>