o
    Zh.                     @   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r8d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Tuple)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   Zindex_parts	__class__ S/var/www/html/lang_env/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   r   r0   __classcell__r   r   r   r   r
      s0    r
   )r4   loggingurllib.parser   xmlrpc.clientZxmlrpctypingr   r   pip._internal.exceptionsr   pip._internal.network.sessionr   pip._internal.network.utilsr   r   r   Z	_typeshedr	   	getLoggerr1   r*   client	Transportr
   r   r   r   r   <module>   s    
