� ��^i4����dZddlZddlmZddlmZmZddlmZddl m Z ddl m Z ddl mZmZdd lmZd e d efd �Zed edfd ���ZGd�de��ZdS)zHTTP cache implementation. �N)�contextmanager)�Iterator�Optional)� BaseCache)� FileCache)�Response)�adjacent_tmp_file�replace)� ensure_dir�response�returnc�$�t|dd��S)N� from_cacheF)�getattr)r s ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/network/cache.py� is_from_cachers�� �8�\�5� 1� 1�1�c#�6K� dV�dS#t$rYdSwxYw)zvIf we can't access the cache then we can just skip caching and process requests as if caching wasn't enabled. N)�OSError�rr�suppressed_cache_errorsrs:����  � ������� � � � � ��� ���s � � �c�|��eZdZdZdeddf�fd� Zdedefd�Zdedeefd �Z ded eddfd �Z deddfd �Z �xZ S) � SafeFileCachezw A file based cache which is safe to use even when the target directory may not be accessible or writable. � directoryr Nc�n��|� Jd���t�����||_dS)Nz!Cache directory must not be None.)�super�__init__r)�selfr� __class__s �rrzSafeFileCache.__init__%s9����$�$�&I�$�$�$� ��������"����r�namec��tj|��}t|dd���|gz}tjj|jg|�R�S)N�)r�encode�list�os�path�joinr)rr �hashed�partss r�_get_cache_pathzSafeFileCache._get_cache_path*sL���!�$�'�'���V�B�Q�B�Z� � �F�8�+���w�|�D�N�3�U�3�3�3�3r�keyc��|�|��}t��5t|d��5}|���cddd��cddd��S#1swxYwY ddd��dS#1swxYwYdS)N�rb)r*r�open�read)rr+r&�fs r�getzSafeFileCache.get2s���#�#�C�(�(�� $� &� &� � ��d�D�!�!� �Q��v�v�x�x� � � � � � � � � � � � � � � � � � � ���� � � � � � � � � � � � � � � � � ���� � � � � � s4�A;�A"� A;�"A& �&A;�)A& �*A;�;A?�A?�valuec�x�|�|��}t��5ttj�|����t |��5}|�|��ddd��n #1swxYwYt|j |��ddd��dS#1swxYwYdS�N) r*rr r%r&�dirnamer �writer r )rr+r2r&r0s r�setzSafeFileCache.set8s$���#�#�C�(�(�� $� &� &� "� "� �r�w���t�,�,� -� -� -�"�4�(�(� �A�������� � � � � � � � � � � ���� � � � � �A�F�D� !� !� !�  "� "� "� "� "� "� "� "� "� "� "� "���� "� "� "� "� "� "s5�r%� contextlibr�typingrr�pip._vendor.cachecontrol.cacher�pip._vendor.cachecontrol.cachesr�pip._vendor.requests.modelsr�pip._internal.utils.filesystemr r �pip._internal.utils.miscr �boolrrrrrr�rJs%���� � � � �%�%�%�%�%�%�%�%�%�%�%�%�%�%�4�4�4�4�4�4�5�5�5�5�5�5�0�0�0�0�0�0�E�E�E�E�E�E�E�E�/�/�/�/�/�/�2�H�2��2�2�2�2�� ��$�� � � ��� �&�&�&�&�&�I�&�&�&�&�&r