a
    hbòfÿ  ã                   @   s†   d Z ddlZddlZddlZddlmZmZ ddl	m
Z
 ddlmZ ddlmZ erdddlmZmZ e e¡ZG dd	„ d	ejjƒZdS )
z#xmlrpclib.Transport implementation
é    N)ÚTYPE_CHECKINGÚTuple)ÚNetworkConnectionError)Ú
PipSession)Úraise_for_status)Ú	_HostTypeÚ_Marshallablec                       sJ   e Zd ZdZdeeeddœ‡ fdd„Zddeeee	d d	œd
d„Z
‡  ZS )ÚPipXmlrpcTransportzRProvide a `xmlrpclib.Transport` implementation via a `PipSession`
    object.
    FN)Ú	index_urlÚsessionÚuse_datetimeÚreturnc                    s*   t ƒ  |¡ tj |¡}|j| _|| _d S )N)ÚsuperÚ__init__ÚurllibÚparseÚurlparseÚschemeÚ_schemeÚ_session)Úselfr
   r   r   Zindex_parts©Ú	__class__© úY/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.pyr      s    zPipXmlrpcTransport.__init__r   )r   .)ÚhostÚhandlerÚrequest_bodyÚverboser   c           
   
   C   s¬   t |tƒsJ ‚| j||d d d f}tj |¡}z8ddi}| jj|||dd�}t|ƒ || _	|  
|j¡W S  ty¦ }	 z*|	js~J ‚t d|	jj|¡ ‚ W Y d }	~	n
d }	~	0 0 d S )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    s,    ü
ýzPipXmlrpcTransport.request)F)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r#   r   Úboolr   Úbytesr   r/   Ú__classcell__r   r   r   r   r	      s    ÿþ ûúr	   )r3   ÚloggingÚurllib.parser   Úxmlrpc.clientZxmlrpcÚtypingr   r   Úpip._internal.exceptionsr   Úpip._internal.network.sessionr   Úpip._internal.network.utilsr   r   r   Ú	getLoggerr0   r)   ÚclientÚ	Transportr	   r   r   r   r   Ú<module>   s   
