� ��^i���ddlZddlZddlZddlZddlmZddlmZmZm Z m Z m Z m Z ddl mZddlmZddlmZeje��Zejdededfd ���Zejded fd ���ZGd �d ��ZdS) �N)� TracebackType)�Dict�Iterator�Optional�Set�Type�Union)�Link)�InstallRequirement)� TempDirectory�changes�returnc+��K�tj}t��}i}|���D],\}} ||||<n#t$r|||<YnwxYw|||<�- dV�|���D])\}}||ur||=� t |t ��sJ�|||<�*dS#|���D])\}}||ur||=� t |t ��sJ�|||<�*wxYw�N)�os�environ�object�items�KeyError� isinstance�str)r �target�non_existent_marker� saved_values�name� new_value�original_values ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/req/req_tracker.py�update_env_context_managerrsS���� �Z�F�!�(�(��24�L�"�=�=�?�?�!�!���i� 5�!'���L�� � ��� 5� 5� 5�!4�L�� � � � 5���� ��t� � � .� ����%1�$6�$6�$8�$8� .� .� �D�.��!4�4�4��4�L�L�!�.�#�6�6�6�6�6�-��t� � �  .� .��L�$6�$6�$8�$8� .� .� �D�.��!4�4�4��4�L�L�!�.�#�6�6�6�6�6�-��t� � �  .���s� A�A�A�!B%�%AC%�RequirementTrackerc#��K�tj�d��}tj��5}|�f|�t d�����j}|�t|�����t� d|��t|��5}|V�ddd��n #1swxYwYddd��dS#1swxYwYdS)N�PIP_REQ_TRACKERz req-tracker)�kind)r"z Initialized build tracking at %s) rr�get� contextlib� ExitStack� enter_contextr �pathr�logger�debugr )�root�ctx�trackers r�get_requirement_trackerr.)sN���� �:�>�>�+� ,� ,�D� � � � ��3� �<��$�$�]� �%F�%F�%F�G�G�L�D� � � �8��N�N�N� O� O� O� �L�L�;�T� B� B� B� �� %� %� ���M�M�M� � � � � � � � � � � ���� � � � � ��������������������s6�A8C�-B>�2 C�>C �C�C �C�C�Cc���eZdZdeddfd�Zdd�Zdeeedeedee ddfd �Z d e defd �Z d e ddfd �Zd e ddfd�Zdd�Zejd e dedfd���ZdS)r r+rNc�z�||_t��|_t�d|j��dS)NzCreated build tracker: %s)�_root�set�_entriesr)r*)�selfr+s r�__init__zRequirementTracker.__init__7s1���� �14���� �� � �0�$�*�=�=�=�=�=�c�F�t�d|j��|S)NzEntered build tracker: %s)r)r*r1)r4s r� __enter__zRequirementTracker.__enter__<s��� � �0�$�*�=�=�=�� r6�exc_type�exc_val�exc_tbc�.�|���dSr)�cleanup)r4r9r:r;s r�__exit__zRequirementTracker.__exit__@s�� � � �����r6�linkc���tj|j��������}t j�|j|��Sr) �hashlib�sha224�url_without_fragment�encode� hexdigestrr(�joinr1)r4r?�hasheds r� _entry_pathzRequirementTracker._entry_pathHsD����� 9� @� @� B� B�C�C�M�M�O�O���w�|�|�D�J��/�/�/r6�reqc�\�|jsJ�|�|j��} t|��5}|���}ddd��n #1swxYwYd�|j|��}t |���#t $rYnwxYw||jvsJ�t|dd���5}|�t|����ddd��n #1swxYwY|j� |��t� d||j ��dS)z,Add an InstallRequirement to build tracking.Nz{} is already being built: {}�wzutf-8)�encodingzAdded %s to build tracker %r)r?rH�open�read�format� LookupError�FileNotFoundErrorr3�writer�addr)r*r1)r4rI� entry_path�fp�contents�messages rrSzRequirementTracker.addLs����x���x��%�%�c�h�/�/� � '��j�!�!� %�R��7�7�9�9�� %� %� %� %� %� %� %� %� %� %� %���� %� %� %� %� 6�<�<�S�X�x�P�P�G��g�&�&� &�� !� � � � �D� �����$�-�'�'�'�'��*�c�G� 4� 4� 4� �� �H�H�S��X�X� � � � � � � � � � � � � � ���� � � � � � ���#����� � �3�S�$�*�E�E�E�E�EsF�B �A� B �A�B �A�B � B�B�7#C&�&C*�-C*c���|jsJ�tj|�|j����|j�|��t �d||j��dS)z1Remove an InstallRequirement from build tracking.z Removed %s from build tracker %rN) r?r�unlinkrHr3�remover)r*r1�r4rIs rrZzRequirementTracker.removehsd���x���x� � �$�"�"�3�8�,�,�-�-�-� � ���S�!�!�!�� � �7��d�j�I�I�I�I�Ir6c��t|j��D]}|�|���t�d|j��dS)NzRemoved build tracker: %r)r2r3rZr)r*r1r[s rr=zRequirementTracker.cleanuprsM���t�}�%�%� � �C� �K�K�� � � � �� � �0�$�*�=�=�=�=�=r6c#�fK�|�|��dV�|�|��dSr)rSrZr[s r�trackzRequirementTracker.trackxs6���� ���� � � � ���� � � �C�����r6)rr )rN)�__name__� __module__� __qualname__rr5r8rr� BaseExceptionrr>r rHr rSrZr=r%�contextmanagerrr^�r6rr r 6sW������>�S�>�T�>�>�>�>� ������4� �.�/���-�(����'� � � ����0��0��0�0�0�0�F�)�F�d�F�F�F�F�8J�,�J��J�J�J�J�>�>�>�>� ���+������������r6)r%rA�loggingr�typesr�typingrrrrrr �pip._internal.models.linkr �pip._internal.req.req_installr �pip._internal.utils.temp_dirr � getLoggerr_r)rcrrr.r rdr6r�rlsY�������������� � � � �������=�=�=�=�=�=�=�=�=�=�=�=�=�=�=�=�*�*�*�*�*�*�<�<�<�<�<�<�6�6�6�6�6�6� �� �8� $� $�� ��.�#�.�(�4�.�.�.�.���.�2 �� ��*>�!?� � � ��� �F�F�F�F�F�F�F�F�F�Fr6