
    e                         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rddlmZmZ  ej        e          Z G d d	ej        j                  ZdS )
z#xmlrpclib.Transport implementation
    N)TYPE_CHECKINGTuple)NetworkConnectionError)
PipSession)raise_for_status)	_HostType_Marshallablec                   d     e Zd ZdZ	 ddedededdf fdZ	 dd	d
dededede	d         f
dZ
 xZS )PipXmlrpcTransportzRProvide a `xmlrpclib.Transport` implementation via a `PipSession`
    object.
    F	index_urlsessionuse_datetimereturnNc                     t                                          |           t          j                            |          }|j        | _        || _        d S )N)super__init__urllibparseurlparsescheme_scheme_session)selfr   r   r   index_parts	__class__s        S/var/www/html/api/venv/lib/python3.11/site-packages/pip/_internal/network/xmlrpc.pyr   zPipXmlrpcTransport.__init__   sG     	&&&l++I66")    hostr   handlerrequest_bodyverbose)r	   .c                    t          |t                    sJ | j        ||d d d f}t          j                            |          }	 ddi}| j                            |||d          }t          |           || _	        | 
                    |j                  S # t          $ r5}	|	j        sJ t                              d|	j        j        |            d }	~	ww xY 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,   excs
             r   requestzPipXmlrpcTransport.request    s     $$$$$$tWdD$?l%%e,,	%z2G}))!	 *  H X&&&"DL&&x|444% 	 	 	<OO0(  
 	s   AB 
C!0CC)F)__name__
__module____qualname____doc__r'   r   boolr   bytesr   r3   __classcell__)r   s   @r   r   r      s         
 IN    '1 AE 	               	
  
#	$       r   r   )r7   loggingurllib.parser   xmlrpc.clientxmlrpctypingr   r   pip._internal.exceptionsr   pip._internal.network.sessionr   pip._internal.network.utilsr   r   r	   	getLoggerr4   r-   client	Transportr    r   r   <module>rG      s              ' ' ' ' ' ' ' ' ; ; ; ; ; ; 4 4 4 4 4 4 8 8 8 8 8 8 766666666		8	$	$) ) ) ) )0 ) ) ) ) )r   