3
Ug                 @   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j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  j| tjj|}|j| _|| _d S )N)super__init__urllibparseurlparsescheme_scheme_session)selfr
   r   r   Zindex_parts)	__class__ @/tmp/pip-unpacked-wheel-0ht26j5g/pip/_internal/network/xmlrpc.pyr      s    zPipXmlrpcTransport.__init__r   r   .)hosthandlerrequest_bodyverboser   c       
      C   s   t |tst| j||d d d f}tjj|}y6ddi}| jj|||dd}t	| || _
| j|jS  tk
r }	 z$|	js~ttjd|	jj|  W Y d d }	~	X nX d S )NzContent-Typeztext/xmlT)dataheadersstreamzHTTP error %s while getting %s)
isinstancestrAssertionErrorr   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)r   .)__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   
