HEX
Server: nginx/1.24.0
System: Linux webserver 6.8.0-87-generic #88-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 09:28:41 UTC 2025 x86_64
User: wpuser (1002)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc
�

��h��	��dZddlZddlZddlZddlZddlmZmZm	Z	ddl
mZmZddl
mZddlmZddlmZddlmZdd	lmZdd
lmZddlmZmZmZddlmZmZm Z ejBe"�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.y)z)Download files with progress indicators.
�N)�Iterable�Optional�Tuple)�CONTENT_CHUNK_SIZE�Response)�get_download_progress_renderer)�NetworkConnectionError)�PyPI)�Link)�
is_from_cache)�
PipSession)�HEADERS�raise_for_status�response_chunks)�format_size�redact_auth_from_url�splitext�resp�returnc�h�	t|jd�S#tttf$rYywxYw)Nzcontent-length)�int�headers�
ValueError�KeyError�	TypeError)rs �@/usr/lib/python3/dist-packages/pip/_internal/network/download.py�_get_http_response_sizers5����4�<�<� 0�1�2�2����)�,����s��1�1�link�progress_barc��t|�}|jtjk(r
|j}n|j
}t
|�}|r|�dt|��d�}t|�rtjd|�ntjd|�tj�tjkDrd}nt|�rd}n|sd}n
|dkDrd}nd}t|t�}|s|St!||��}||�S)	Nz (�)zUsing cached %szDownloading %sFTi@�)�bar_type�size)r�netlocr
�file_storage_domain�show_url�url_without_fragmentrrr�logger�info�getEffectiveLevel�logging�INFOrrr)	rrr�total_length�url�
logged_url�
show_progress�chunks�renderers	         r�_prepare_downloadr3s���
+�4�0�L��{�{�d�.�.�.��m�m���'�'��%�c�*�J��"�|�2�k�,�&?�%@��B�
��T�����%�z�2����$�j�1�
���!�G�L�L�0��
�	�t�	��
�
��
�	��	#��
��
�
�T�#5�
6�F���
�-�|�,�W�H��F����filenamec�@�tjj|�S)zJ
    Sanitize the "filename" value from a Content-Disposition header.
    )�os�path�basename)r5s r�sanitize_content_filenamer:Hs���7�7���H�%�%r4�content_disposition�default_filenamec��tjj�}||d<|jd�}|rt	t|��}|xs|S)z�
    Parse the "filename" value from a Content-Disposition header, and
    return the default filename if the result is empty.
    �content-typer5)�email�message�Message�	get_paramr:�str)r;r<�mr5s    r�parse_content_dispositionrEOsM��
	�
�
����A�+�A�n���{�{�:�&�H��-�S��]�;���'�'�'r4c��|j}|jjd�}|rt||�}t	|�d}|s6tj|jjdd��}|r||z
}|sL|j|jk7r3tjj	|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�r>�)
r5r�getrEr�	mimetypes�guess_extensionr.r7r8)rrr5r;�exts     r�_get_http_response_filenamerM^s����}�}�H��,�,�*�*�+@�A���,�-@�(�K��!�(�+�A�.�C���'�'����(8�(8���(L�M�����O�H��4�8�8�t�x�x�'��g�g���t�x�x�(��+�����O�H��Or4�sessionc��|jjdd�d}|j|td��}t	|�|S)N�#rGrT)r�stream)r.�splitrIrr)rNr�
target_urlrs    r�_http_get_downloadrTss<��������Q�'��*�J��;�;�z�7�4�;�@�D��T���Kr4c�>�eZdZdededdfd�Zdededeeeffd�Zy)	�
DownloaderrNrrNc� �||_||_y�N��_session�
_progress_bar��selfrNrs   r�__init__zDownloader.__init__{���
 ��
�)��r4r�locationc��	t|j|�}t||�}tjj||�}t|||j�}t|d�5}|D]}	|j|	��	ddd�|jj!dd�}
||
fS#t$r?}|j�J�tjd|jj|��d}~wwxYw#1swY�txYw)z.Download the file given by link into location.N�HTTP error %s while getting %s�wb�Content-TyperH�rTrZr	�responser(�critical�status_coderMr7r8�joinr3r[�open�writerrI)r]rr`r�er5�filepathr1�content_file�chunk�content_types           r�__call__zDownloader.__call__�s���	�%�d�m�m�T�:�D�/�t�T�:���7�7�<�<��(�3��"�4��t�/A�/A�B��
�(�D�
!�	*�\��
*���"�"�5�)�
*�	*��|�|�'�'���;����%�%��&�	��:�:�)�)�)��O�O�0�!�*�*�2H�2H�$�
�
��	��	*�	*�s#�B)�'C4�)	C1�2:C,�,C1�4C=)	�__name__�
__module__�__qualname__r
rCr^rrrq�r4rrVrVzsE��*��*��*�
�	*�&�T�&�S�&�U�3��8�_�&r4rVc�T�eZdZdededdfd�Zdeededeeeeeefffd�Z	y)	�BatchDownloaderrNrrNc� �||_||_yrXrYr\s   rr^zBatchDownloader.__init__�r_r4�linksr`c#� K�|D]�}	t|j|�}t||�}tjj||�}t|||j�}t|d�5}	|D]}
|	j|
��	ddd�|jj!dd�}|||ff����y#t$r?}|j�J�tjd|jj|��d}~wwxYw#1swY�{xYw�w)z0Download the files given by links into location.NrbrcrdrHre)r]ryr`rrrlr5rmr1rnrorps            rrqzBatchDownloader.__call__�s
�����	1�D�	
�)�$�-�-��>��3�4��>�H��w�w�|�|�H�h�7�H�&�t�T�4�3E�3E�F�F��h��%�
.��#�.�E� �&�&�u�-�.�
.� �<�<�+�+�N�B�?�L���<�0�0�0�)	1��*�
��z�z�-�-�-����4��J�J�*�*���
��
��
.�
.�s@�D�B7�AD�.D�/D�7	C?�:C:�:C?�?D�D	�D)
rrrsrtr
rCr^rrrrqrur4rrwrw�s[��*��*��*�
�	*�1��d�^�1�/2�1�	�%��e�C��H�o�-�.�	/�1r4rw)/�__doc__�
email.messager?r+rJr7�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�	getLoggerrrr(rrrC�bytesr3r:rErMrTrVrwrur4r�<module>r�s
������	�,�,�D�J�;�+�*�5�4�R�R�P�P�	��	�	�8�	$���(��x��}��'�
�'�
�'��'��e�_�	'�T&��&��&�(�3�(�#�(�RU�(��h��d��s��*�
��$��8��&�&�>!1�!1r4