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.    !<