� !A?h�����dZgd�ZiZdd�Zd�Z ed�Zeeee��n #e$rYnwxYwd�Zee e e z��e��d�Z dZ e e j��Zd �Zd �Zd �Zd �ZiZiZiZd �Zd�Zd�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_cacheNc�|�t|��std���|t|<|�t|��dSdS)Nz$reduction functions must be callable)�callable� TypeError�dispatch_tabler)�ob_type�pickle_function�constructor_obs �4/opt/alt/python-internal/lib64/python3.11/copyreg.pyrr sP�� �O� $� $�@��>�?�?�?�-�N�7���!��N�#�#�#�#�#�"�!�c�B�t|��std���dS)Nzconstructors must be callable)rr )�objects rrrs+�� �F� � �9��7�8�8�8�9�9rc�,�t|j|jffS�N)�complex�real�imag)�cs r�pickle_complexr"s�������(�(�(rc�<�ddl}ddl}|j|j|jffS)N�)� functools�operator�reduce�or_�__args__)�objrrs r� pickle_unionr!'s1���������� � �h�l�C�L�9� 9�9rc���|turt�|��}nA|�||��}|jtjkr|�||��|Sr)r�__new__�__init__)�cls�base�stater s r�_reconstructorr(/sY�� �v�~�~��n�n�S�!�!����l�l�3��&�&�� �=�F�O� +� +� �M�M�#�u� %� %� %� �Jric���|dksJ�|j}|jD]J}t|d��r|jtzsn/|j}t |t��r |j|urn�Kt}|turd}n'||urtd|j �d����||��}|||f} |j }t|��j tj ur t|dd��rtd���|��}nW#t$rJt|dd��rtd|j �d|����d� |j}n#t$rd}YnwxYwYnwxYw|r t"||fSt"|fS)N�� __flags__zcannot pickle z object� __slots__zNa class that defines __slots__ without defining __getstate__ cannot be pickledzf object: a class that defines __slots__ without defining __getstate__ cannot be pickled with protocol )� __class__�__mro__�hasattrr+� _HEAPTYPEr#� isinstance� _new_type�__self__rr �__name__� __getstate__�type�getattr�AttributeError�__dict__r() �self�protor%r&�newr'�args�getstate�dicts r� _reduce_exr@=s��� �1�9�9�9�9� �.�C�� ���� �4�� %� %� �d�n�y�.H� � �E��l�� �c�9� %� %� �#�,�$�*>�*>� �E���� �v�~�~���� �3�;�;��D�S�\�D�D�D�E�E� E���T� � �� ��u� �D���$�� ��J�J� #�v�':� :� :� �D�+�t� ,� ,� ;��F�G�G� G��x�z�z���� � � � � �4��d� +� +� @��5�S�\�5�5�.3�5�5�6�6�<@� @� ��=�D�D��� � � ��D�D�D� ������ ����  �$��t�T�)�)��t�#�#s6�"C4�46E�+D3�2E�3 E�?E�E�E�Ec��|j|g|�R�Sr�r#)r%r=s r� __newobj__rChs�� �3�;�s� "�T� "� "� "�"rc�$�|j|g|�Ri|��S)zUsed by pickle protocol 4, instead of __newobj__ to allow classes with keyword-only arguments to be pickled correctly. rB)r%r=�kwargss r� __newobj_ex__rFks&�� �3�;�s� ,�T� ,� ,� ,�V� ,� ,�,rc�$�|j�d��}|�|Sg}t|d��sn�|jD]�}d|jvr�|jd}t |t ��r|f}|D]�}|dvr�|�d��rb|�d��sM|j� d��}|r|� d|�|�����h|� |���~|� |������ ||_ n#YnxYw|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__Nr,)r9� __weakref__�__�_) r9�getr/r.r1�str� startswith�endswithr4�lstrip�appendrH)r%�namesr�slots�name�strippeds r� _slotnamesrVqsU�� �L� � �_� -� -�E� ��� � �E� �3� � $� $�+� ��� +� +�A��a�j�(�(�� �;�/���e�S�)�)�%�"�H�E�!� +� +�D��:�:�:� �����.�.�+�t�}�}�T�7J�7J�+�#$�:�#4�#4�S�#9�#9��#�/�!�L�L�L�H�H�d�d�)C�D�D�D�D�!�L�L��.�.�.�.�� � �T�*�*�*�*�� �!����� � ����� �Ls �D � D c��t|��}d|cxkrdksntd���||f}t�|��|kr t�|��|krdS|tvr td|�dt|�����|tvr td|�dt|�����|t|<|t|<dS) zRegister an extension code.�i���zcode out of rangeN�key z! is already registered with code zcode z is already in use for key )�int� ValueError�_extension_registryrL�_inverted_registry��modulerT�code�keys rrr�s�� �t�9�9�D� �� "� "� "� "� � "� "� "� "��,�-�-�-� �4�.�C�����$�$��,�,����t�$�$��+�+��� �!�!�!��j��#�#�2�3�7�7�9�:�:� :� �!�!�!��j��$�$� 2�4� 8� 8�:�;�;� ;�#����"��t���rc���||f}t�|��|kst�|��|krtd|�d|�����t|=t|=|tvr t|=dSdS)z0Unregister an extension code. For testing only.rYz is not registered with code N)r\rLr]r[�_extension_cacher^s rrr�s��� �4�.�C�����$�$��,�,����t�$�$��+�+��j��#�#�t�t�%�&�&� &��C� ��4� � ���� �T� "� "� "� �rc�8�t���dSr)rc�clear�rrrr�s���������rr)�__doc__�__all__r rrrr� NameErrorr!r6rZrMr(r0r#r2r@rCrFrVr\r]rcrrrrfrr�rjs�����  I� I� I����$�$�$�$�9�9�9� -� �G� )�)�)� �F�7�N�G�,�,�,�,��� � � ��D� ����:�:�:���t�t�C�#�I��� �%�%�%���� � � �D��� � � �'$�'$�'$�V#�#�#�-�-�-� 1�1�1�x������#�#�#�$ #� #� #�����s �$�,�,