3 \_ã @s®dZdddddgZiZddd„Zdd„ZyeWnek rDYnXd 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 r(t|ƒdS)Nz$reduction functions must be callable)ÚcallableÚ TypeErrorÚdispatch_tabler)Úob_typeÚpickle_functionÚconstructor_ob©r ú/usr/lib64/python3.6/copyreg.pyr s cCst|ƒstdƒ‚dS)Nzconstructors must be callable)rr)Úobjectr r r rscCst|j|jffS)N)ÚcomplexÚrealÚimag)Úcr r r Úpickle_complex"srcCs<|tkrtj|ƒ}n$|j||ƒ}|jtjkr8|j||ƒ|S)N)rÚ__new__Ú__init__)ÚclsÚbaseÚstateÚobjr r r Ú_reconstructor)s     réé cCsàx,|jjD]}t|dƒr |jt@ r Pq Wt}|tkrÚcodeÚkeyr r r r¢scCsR||f}tj|ƒ|ks$tj|ƒ|kr4td||fƒ‚t|=t|=|tkrNt|=dS)z0Unregister an extension code. For testing only.z%key %s is not registered with code %sN)rCr5rDrBÚ_extension_cache)rEr>rFrGr r r r´s cCs tjƒdS)N)rHÚclearr r r r rÀs)Ni)Ú__doc__Ú__all__rrrrÚ NameErrorrrr"r-r.r0r@rCrDrHrrrr r r r Ús.    !<