� ��^i�� ��dZddlZddlZddlZddlZddlmZmZmZddl m Z m Z ddl m Z ddlmZddlmZddlmZdd lmZdd lmZdd lmZmZmZdd lmZmZmZej e!��Z"d e dee#fd�Z$d e dede%dee&fd�Z'de%de%fd�Z(de%de%de%fd�Z)d e dede%fd�Z*dedede fd�Z+Gd�d��Z,Gd�d��Z-dS)z)Download files with progress indicators. �N)�Iterable�Optional�Tuple)�CONTENT_CHUNK_SIZE�Response)�DownloadProgressProvider)�NetworkConnectionError)�PyPI)�Link)� is_from_cache)� PipSession)�HEADERS�raise_for_status�response_chunks)� format_size�redact_auth_from_url�splitext�resp�returnc�t� t|jd��S#tttf$rYdSwxYw)Nzcontent-length)�int�headers� ValueError�KeyError� TypeError)rs ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/network/download.py�_get_http_response_sizersF����4�<� 0�1�2�2�2�� ��)� ,�����t�t����s ��7�7�link� progress_barc�Z�t|��}|jtjkr|j}n|j}t |��}|r#d�|t|����}t|��rt� d|��nt� d|��t� ��tjkrd}n"t|��rd}n|sd}n |dkrd}nd}t|t ��}|s|St#||���|��S)Nz{} ({})zUsing cached %szDownloading %sFTi@�)�max)r�netlocr �file_storage_domain�show_url�url_without_fragmentr�formatrr �logger�info�getEffectiveLevel�logging�INFOrrr)rrr� total_length�url� logged_url� show_progress�chunkss r�_prepare_downloadr1s:�� +�4�0�0�L� �{�d�.�.�.��m����'��%�c�*�*�J��M��%�%�j�+�l�2K�2K�L�L� ��T���2�� � �%�z�2�2�2�2�� � �$�j�1�1�1� ���!�!�G�L�0�0�� � � �t� � ��� � � ��� � � �� #� #�� � �� � �T�#5� 6� 6�F� ��� � C� #�L�l� C� C� C�F� K� K�K��filenamec�@�tj�|��S)zJ Sanitize the "filename" value from a Content-Disposition header. )�os�path�basename)r3s r�sanitize_content_filenamer8Gs�� �7� � �H� %� %�%r2�content_disposition�default_filenamec��tj|��\}}|�d��}|rt|��}|p|S)z� Parse the "filename" value from a Content-Disposition header, and return the default filename if the result is empty. r3)�cgi� parse_header�getr8)r9r:�_type�paramsr3s r�parse_content_dispositionrANsM�� �$�%8�9�9�M�E�6��z�z�*�%�%�H��7�-�X�6�6�� � '�'�'r2c��|j}|j�d��}|rt||��}t |��d}|s4t j|j�dd����}|r||z }|sA|j|jkr1tj �|j��d}|r||z }|S)zoGet an ideal filename from the given HTTP response, falling back to the link filename if not provided. zcontent-disposition�z content-type�) r3rr>rAr� mimetypes�guess_extensionr-r5r6)rrr3r9�exts r�_get_http_response_filenamerH\s����}�H��,�*�*�+@�A�A���L�,�-@�(�K�K��!�(�+�+�A�.�C� ���'�� �(8�(8���(L�(L�M�M�� � � ��O�H� ��4�8�t�x�'�'��g���t�x�(�(��+�� � � ��O�H� �Or2�sessionc��|j�dd��d}|�|td���}t |��|S)N�#rCrT)r�stream)r-�splitr>rr)rIr� target_urlrs r�_http_get_downloadrOqsF�������Q�'�'��*�J� �;�;�z�7�4�;� @� @�D��T���� �Kr2c�F�eZdZdededdfd�Zdededeeeffd�ZdS) � DownloaderrIrrNc�"�||_||_dS�N��_session� _progress_bar��selfrIrs r�__init__zDownloader.__init__y���  �� �)����r2r�locationc�� t|j|��}nB#t$r5}|j�J�t�d|jj|���d}~wwxYwt||��}tj � ||��}t|||j ��}t|d��5}|D]} |�| ��� ddd��n #1swxYwY|j�dd��} || fS)z.Download the file given by link into location.N�HTTP error %s while getting %s�wb� Content-TyperD�rOrUr �responser'�critical� status_coderHr5r6�joinr1rV�open�writerr>) rXrr[r�er3�filepathr0� content_file�chunk� content_types r�__call__zDownloader.__call__�sY�� �%�d�m�T�:�:�D�D��%� � � ��:�)�)�)� �O�O�0�!�*�2H�$� � � � �����  ����/�t�T�:�:���7�<�<��(�3�3��"�4��t�/A�B�B�� �(�D� !� !� *�\�� *� *���"�"�5�)�)�)�)� *� *� *� *� *� *� *� *� *� *� *� *���� *� *� *� *��|�'�'���;�;� ���%�%s&�� A�0A�A�0C�C�C) �__name__� __module__� __qualname__r �strrYr rrl�r2rrQrQxsu������*��*��*� � *�*�*�*�&�T�&�S�&�U�3��8�_�&�&�&�&�&�&r2rQc �n�eZdZdededdfd�Zdeededeeeeeefffd�Z dS) �BatchDownloaderrIrrNc�"�||_||_dSrSrTrWs rrYzBatchDownloader.__init__�rZr2�linksr[c#�"K�|D�]} t|j|��}nB#t$r5}|j�J�t�d|jj|���d}~wwxYwt||��}tj � ||��}t|||j ��}t|d��5} |D]} | �| ��� ddd��n #1swxYwY|j�dd��} ||| ffV��� dS)z0Download the files given by links into location.Nr]r^r_rDr`) rXrur[rrrgr3rhr0rirjrks rrlzBatchDownloader.__call__�s������ 1� 1�D� �)�$�-��>�>����)� � � ��z�-�-�-����4��J�*����� ����� ����3�4��>�>�H��w�|�|�H�h�7�7�H�&�t�T�4�3E�F�F�F��h��%�%� .��#�.�.�E� �&�&�u�-�-�-�-�.� .� .� .� .� .� .� .� .� .� .� .���� .� .� .� .� �<�+�+�N�B�?�?�L���<�0�0� 0� 0� 0� 0�) 1� 1s&�� A�0A�A�7C�C# �&C# ) rmrnror rprYrr rrlrqr2rrsrs�s�������*��*��*� � *�*�*�*�1��d�^�1�/2�1� �%��e�C��H�o�-�.� /�1�1�1�1�1�1r2rs).�__doc__r<r*rEr5�typingrrr�pip._vendor.requests.modelsrr�pip._internal.cli.progress_barsr�pip._internal.exceptionsr �pip._internal.models.indexr �pip._internal.models.linkr �pip._internal.network.cacher �pip._internal.network.sessionr �pip._internal.network.utilsrrr�pip._internal.utils.miscrrr� getLoggerrmr'rrrp�bytesr1r8rArHrOrQrsrqr2r�r�s����� � � � ��������� � � � �,�,�,�,�,�,�,�,�,�,�D�D�D�D�D�D�D�D�D�D�D�D�D�D�;�;�;�;�;�;�+�+�+�+�+�+�*�*�*�*�*�*�5�5�5�5�5�5�4�4�4�4�4�4�R�R�R�R�R�R�R�R�R�R�P�P�P�P�P�P�P�P�P�P� �� �8� $� $���(��x��}�����&L� �&L� �&L��&L��e�_� &L�&L�&L�&L�R&��&��&�&�&�&� (�3� (�#� (�RU� (� (� (� (��h��d��s�����*� ��$��8�����&�&�&�&�&�&�&�&�>!1�!1�!1�!1�!1�!1�!1�!1�!1�!1r2