o
    ­—Žj&  ã                   @   sŽ   d Z ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ er6ddlmZmZ ddlmZ e e¡ZG d	d
„ d
ejjƒZdS )z"xmlrpclib.Transport implementationé    N)ÚTYPE_CHECKING)ÚNetworkConnectionError)Ú
PipSession)Úraise_for_status)Ú	_HostTypeÚ_Marshallable)ÚSizedBufferc                       s\   e Zd ZdZ	ddedededdf‡ fdd	„Z	dd
ddedddeded f
dd„Z	‡  Z
S )ÚPipXmlrpcTransportzRProvide a `xmlrpclib.Transport` implementation via a `PipSession`
    object.
    FÚ	index_urlÚsessionÚuse_datetimeÚreturnNc                    s*   t ƒ  |¡ tj |¡}|j| _|| _d S )N)ÚsuperÚ__init__ÚurllibÚparseÚurlparseÚschemeÚ_schemeÚ_session)Úselfr
   r   r   Úindex_parts©Ú	__class__© úY/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.pyr      s   
zPipXmlrpcTransport.__init__Úhostr   ÚhandlerÚrequest_bodyr   Úverbose)r   .c           
   
   C   sœ   t |tƒsJ ‚| j||d d d f}tj |¡}zddi}| jj|||dd�}t|ƒ || _	|  
|j¡W S  tyM }	 z|	js?J ‚t d|	jj|¡ ‚ d }	~	ww )NzContent-Typeztext/xmlT)ÚdataÚheadersÚstreamzHTTP error %s while getting %s)Ú
isinstanceÚstrr   r   r   Ú
urlunparser   Úpostr   r   Úparse_responseÚrawr   ÚresponseÚloggerÚcriticalÚstatus_code)
r   r   r   r   r   ÚpartsÚurlr!   r)   Úexcr   r   r   Úrequest!   s0   ü
ý€ùzPipXmlrpcTransport.request)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r   Úboolr   Útupler0   Ú__classcell__r   r   r   r   r	      s0    ÿÿÿÿþûþýüûúr	   )r4   ÚloggingÚurllib.parser   Úxmlrpc.clientÚxmlrpcÚtypingr   Úpip._internal.exceptionsr   Úpip._internal.network.sessionr   Úpip._internal.network.utilsr   r   r   Ú	_typeshedr   Ú	getLoggerr1   r*   ÚclientÚ	Transportr	   r   r   r   r   Ú<module>   s    
