grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 û“qc±ã @sñdZdddddgZiZddd„Zdd„ZyeWnek rXYnXd d „Zeeeeƒd d „ZdZ dd„Z dd„Z dd„Z dd„Z iZiZiZdd„Zdd„Zdd„ZdS)z¤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. ÚpickleÚ constructorÚ add_extensionÚremove_extensionÚclear_extension_cacheNcCs<t|ƒstdƒ‚|t|<|dk r8t|ƒdS)Nz$reduction functions must be callable)ÚcallableÚ TypeErrorÚdispatch_tabler)Úob_typeÚpickle_functionÚconstructor_ob©r ú,/opt/alt/python35/lib64/python3.5/copyreg.pyr s     cCst|ƒstdƒ‚dS)Nzconstructors must be callable)rr)Úobjectr r r rs cCst|j|jffS)N)ÚcomplexÚrealÚimag)Úcr r r Úpickle_complex"srcCsV|tkrtj|ƒ}n4|j||ƒ}|jtjkrR|j||ƒ|S)N)rÚ__new__Ú__init__)ÚclsÚbaseÚstateÚobjr r r Ú_reconstructor)s  réé cCs"x8|jjD]$}t|dƒr |jt@ r Pq Wt}|tkrPd}n.||jkrrtd|jƒ‚||ƒ}|j||f}y |j}WnXt k r÷t |ddƒrËtdƒ‚y |j }Wnt k ròd}YnXYn X|ƒ}|rt ||fSt |fSdS)NÚ __flags__zcan't pickle %s objectsÚ __slots__zNa class that defines __slots__ without defining __getstate__ cannot be pickled) Ú __class__Ú__mro__ÚhasattrrÚ _HEAPTYPErrÚ__name__Ú __getstate__ÚAttributeErrorÚgetattrÚ__dict__r)ÚselfÚprotorrÚargsÚgetstateÚdictr r r Ú _reduce_ex6s.          r-cGs|j||ŒS)N)r)rr*r r r Ú __newobj__Wsr.cCs|j|||ŽS)zUsed by pickle protocol 4, instead of __newobj__ to allow classes with keyword-only arguments to be pickled correctly. )r)rr*Úkwargsr r r Ú __newobj_ex__Zsr0c Cs |jjdƒ}|dk r"|Sg}t|dƒs:n´x±|jD]¦}d|jkrD|jd}t|tƒr~|f}xi|D]a}|dkr�q…q…|jdƒrÙ|jdƒ rÙ|jd|j |fƒq…|j|ƒq…WqDWy ||_ WnYnX|S) a›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.) Ú __slotnames__Nrr'Ú __weakref__Ú__z_%s%s)r'r2) r'Úgetr!r Ú isinstanceÚstrÚ startswithÚendswithÚappendr#r1)rÚnamesrÚslotsÚnamer r r Ú _slotnames`s,       r=cCsÒt|ƒ}d|ko#dkns4tdƒ‚||f}tj|ƒ|krntj|ƒ|krndS|tkr”td|t|fƒ‚|tkrºtd|t|fƒ‚|t|<|t|s.     !   8