U e5d��@s�dZdddddgZiZddd�Zdd�ZzeWnek rDYnXd d �Zeeee�d d �Zd Z 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.8/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<|tkrt�|�}n$|�||�}|jtjkr8|�||�|Sr)r�__new__�__init__)�cls�base�state�objr r r �_reconstructor)s     ric Cs�|j}|jD]}t|d�r |jt@s q.q t}|tkr�code�keyr r r r�s$ � � �cCsR||f}t�|�|ks$t�|�|kr4td||f��t|=t|=|tkrNt|=dS)z0Unregister an extension code. For testing only.z%key %s is not registered with code %sN)rDr5rErC�_extension_cacherFr r r r�s ��cCs t��dSr)rJ�clearr r r r r�s)N)�__doc__�__all__rrrr� NameErrorrrr!r,r.r0r@rDrErJrrrr r r r �s4�   $<