Ñò §ÚêLc@sØdZddklZdddddgZhZdd„Zd „Zye Wne j onXd „Z ee e e ƒd „Z dZ d„Zd„Zd„ZhZhZhZd„Zd„Zd„ZdS(s¬Helper to provide extensibility for pickle/cPickle. This is only useful to add pickle support for extension types defined in C, not for instances of user-defined classes. iÿÿÿÿ(t ClassTypetpicklet constructort add_extensiontremove_extensiontclear_extension_cachecCslt|ƒtjotdƒ‚nt|dƒptdƒ‚n|t|<|dj ot|ƒndS(Ns-copy_reg is not intended for use with classest__call__s$reduction functions must be callable(ttypet _ClassTypet TypeErrorthasattrtdispatch_tabletNoneR(tob_typetpickle_functiontconstructor_ob((s /usr/lib64/python2.6/copy_reg.pyRs  cCs$t|dƒptdƒ‚ndS(NRsconstructors must be callable(R R (tobject((s /usr/lib64/python2.6/copy_reg.pyRscCst|i|iffS(N(tcomplextrealtimag(tc((s /usr/lib64/python2.6/copy_reg.pytpickle_complex'scCs]|tjoti|ƒ}n:|i||ƒ}|itijo|i||ƒn|S(N(Rt__new__t__init__(tclstbasetstatetobj((s /usr/lib64/python2.6/copy_reg.pyt_reconstructor.s  ii cCsI|djpt‚x>|iiD]*}t|dƒo|it@ oPq!q!Wt}|tjo d}n1||ijotd|i ‚n||ƒ}|i||f}y |i }Wn_t j oSt |ddƒotdƒ‚ny |i }Wq&t j o d}q&Xn X|ƒ}|ot||fSt|fSdS(Nit __flags__scan't pickle %s objectst __slots__sNa class that defines __slots__ without defining __getstate__ cannot be pickled(tAssertionErrort __class__t__mro__R Rt _HEAPTYPERR R t__name__t __getstate__tAttributeErrortgetattrt__dict__R(tselftprotoRRtargstgetstatetdict((s /usr/lib64/python2.6/copy_reg.pyt _reduce_ex;s2        cGs|i||ŒS(N(R(RR*((s /usr/lib64/python2.6/copy_reg.pyt __newobj__\scCs|iidƒ}|dj o|Sg}t|dƒpnÄxÀ|iD]µ}d|ijoŸ|id}t|tƒo |f}nxr|D]f}|djoqq|idƒo/|idƒ o|i d|i |fƒq|i |ƒqWqHqHWy ||_ WnnX|S( s›Return a list of slot names for a given class. This needs to find slots defined by the class and its bases, so we can't simply return the __slots__ attribute. We must walk down the Method Resolution Order and concatenate the __slots__ of each class found there. (This assumes classes don't modify their __slots__ attribute to misrepresent their slots after the class is defined.) t __slotnames__RR't __weakref__t__s_%s%sN(s__dict__s __weakref__( R'tgetR R R!t isinstancet basestringt startswithtendswithtappendR#R/(RtnamesRtslotstname((s /usr/lib64/python2.6/copy_reg.pyt _slotnames_s0      ! cCsât|ƒ}d|jo djnp td‚n||f}ti|ƒ|joti|ƒ|jodS|tjotd|t|fƒ‚n|tjotd|t|fƒ‚n|t|<|t|R2R?R=t_extension_cache(R@R:RARB((s /usr/lib64/python2.6/copy_reg.pyR¯s  cCstiƒdS(N(RCtclear(((s /usr/lib64/python2.6/copy_reg.pyR»sNi(t__doc__ttypesRRt__all__R R RRRt NameErrorRRR"R-R.R;R>R?RCRRR(((s /usr/lib64/python2.6/copy_reg.pyts.    !  8