ž ¬ÿfÓc @sådZdddddgZiZddd„Zdd„ZyeWnek rXYnXdd „Zeeeeƒd d „Z dZ dd„Z dd„Z dd„Z iZiZiZdd„Zdd„Zdd„ZdS(u¤Helper to provide extensibility for pickle. This is only useful to add pickle support for extension types defined in C, not for instances of user-defined classes. upickleu constructoru add_extensionuremove_extensionuclear_extension_cachecCsBt|ƒstdƒ‚n|t|<|dk r>t|ƒndS(Nu$reduction functions must be callable(ucallableu TypeErrorudispatch_tableuNoneu constructor(uob_typeupickle_functionuconstructor_ob((u,/opt/alt/python33/lib64/python3.3/copyreg.pyupickle s    cCst|ƒstdƒ‚ndS(Nuconstructors must be callable(ucallableu TypeError(uobject((u,/opt/alt/python33/lib64/python3.3/copyreg.pyu constructors cCst|j|jffS(N(ucomplexurealuimag(uc((u,/opt/alt/python33/lib64/python3.3/copyreg.pyupickle_complex"supickle_complexcCsY|tkrtj|ƒ}n7|j||ƒ}|jtjkrU|j||ƒn|S(N(uobjectu__new__u__init__(uclsubaseustateuobj((u,/opt/alt/python33/lib64/python3.3/copyreg.pyu_reconstructor)s  u_reconstructorii cCs=|dkst‚x;|jjD]'}t|dƒr|jt@ rPqqWt}|tkred}n1||jkrŠtd|j ƒ‚n||ƒ}|j||f}y |j }Wn[t k rt |ddƒrætdƒ‚ny |j }Wnt k r d}YnXYn X|ƒ}|r/t||fSt|fSdS(Niu __flags__ucan't pickle %s objectsu __slots__uNa class that defines __slots__ without defining __getstate__ cannot be pickled(uAssertionErroru __class__u__mro__uhasattru __flags__u _HEAPTYPEuobjectuNoneu TypeErroru__name__u __getstate__uAttributeErrorugetattru__dict__u_reconstructor(uselfuprotoubaseustateuargsugetstateudict((u,/opt/alt/python33/lib64/python3.3/copyreg.pyu _reduce_ex6s0         u _reduce_excGs|j||ŒS(N(u__new__(uclsuargs((u,/opt/alt/python33/lib64/python3.3/copyreg.pyu __newobj__Wsu __newobj__c Cs|jjdƒ}|dk r"|Sg}t|dƒs:nºx·|jD]¬}d|jkrD|jd}t|tƒr|f}nxl|D]a}|dkr qˆqˆ|jdƒrÜ|jdƒ rÜ|j d|j |fƒqˆ|j |ƒqˆWqDqDWy ||_ WnYnX|S( u›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.) u __slotnames__u __slots__u__dict__u __weakref__u__u_%s%sN(u__dict__u __weakref__( u__dict__ugetuNoneuhasattru__mro__u isinstanceustru startswithuendswithuappendu__name__u __slotnames__(uclsunamesucuslotsuname((u,/opt/alt/python33/lib64/python3.3/copyreg.pyu _slotnamesZs,       u _slotnamescCsÛt|ƒ}d|ko#dkns7tdƒ‚n||f}tj|ƒ|krqtj|ƒ|krqdS|tkrštd|t|fƒ‚n|tkrÃtd|t|fƒ‚n|t|<|t|s,     !  8