
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aü¿  ã                
   @   sb  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Zd dlZ	d dl
mZ d dlZd dlmZ zd dlZW n ek
r„   dZY nX dd„ Zdejdd	…  Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!G dd„ de"ƒZ#G dd„ de#ƒZ$G dd„ de#ƒZ%G dd„ de#ƒZ&e' Z(Z)edddƒZ*e* +d¡d k�rFd!d"„ Z,n"e* +d#¡d k�r`d$d"„ Z,nd%d"„ Z,[*d&d'„ Z-G d(d)„ d)ƒZ.d*d+„ Z/d,d-„ Z0G d.d/„ d/ƒZ1d0d1„ Z2e.e1fZ3G d2d3„ d3ƒZ4G d4d5„ d5ƒZ5G d6d7„ d7ƒZ6G d8d9„ d9ƒZ7G d:d;„ d;ƒZ8G d<d=„ d=ƒZ9d Z: Z;Z<dXd?d@„Z=dYdAdB„Z>dZdCdD„Z?dEdF„ Z@d[dHdI„ZAG dJdK„ dKe�rTejBneCƒZDG dLdM„ dMƒZEG dNdO„ dOƒZFG dPdQ„ dQeFƒZGG dRdS„ dSƒZHeHZIeJdTk�r^eHdUƒZKzeLeKjM N¡ ƒ W n. e#k
�rê ZO zeLdVeOƒ W 5 dZO[OX Y nX e9eKƒZPeP Q¡  eP Rd	dW¡ eP Sdd	¡ zePƒ D ]ZTeLeTƒ �qW n. e#k
�r\ ZO zeLdVeOƒ W 5 dZO[OX Y nX dS )\é    N)Údatetime)ÚDecimal)Úexpat)ÚBytesIOc                 C   s$   |   dd¡} |   dd¡} |   dd¡S )Nú&z&amp;ú<z&lt;ú>z&gt;)Úreplace)Ús© r   ú2/opt/alt/python38/lib64/python3.8/xmlrpc/client.pyÚescape•   s    r   z%d.%dé   iÿÿÿi   €iD€ÿÿi¨€ÿÿi�ÿÿip�ÿÿiÔ�ÿÿiC€ÿÿiB€ÿÿi§€ÿÿi¦€ÿÿi¥€ÿÿc                   @   s   e Zd ZejZdS )ÚErrorN)Ú__name__Ú
__module__Ú__qualname__ÚobjectÚ__str__r   r   r   r   r   »   s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚProtocolErrorc                 C   s&   t  | ¡ || _|| _|| _|| _d S ©N)r   Ú__init__ÚurlÚerrcodeÚerrmsgÚheaders)Úselfr   r   r   r   r   r   r   r   Ë   s
    
zProtocolError.__init__c                 C   s   d| j j| j| j| jf S )Nz<%s for %s: %s %s>)Ú	__class__r   r   r   r   ©r   r   r   r   Ú__repr__Ñ   s    ÿÿzProtocolError.__repr__N©r   r   r   r   r   r   r   r   r   r   É   s   r   c                   @   s   e Zd ZdS )ÚResponseErrorN)r   r   r   r   r   r   r   r!   Ü   s   r!   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚFaultc                 K   s   t  | ¡ || _|| _d S r   )r   r   Ú	faultCodeÚfaultString)r   r#   r$   Zextrar   r   r   r   ë   s    
zFault.__init__c                 C   s   d| j j| j| jf S )Nz<%s %s: %r>)r   r   r#   r$   r   r   r   r   r   ï   s     ÿzFault.__repr__Nr    r   r   r   r   r"   é   s   r"   é   z%YZ0001c                 C   s
   |   d¡S ©Nú%Y%m%dT%H:%M:%S©Ústrftime©Úvaluer   r   r   Ú_iso8601_format  s    r,   z%4Yc                 C   s
   |   d¡S )Nz%4Y%m%dT%H:%M:%Sr(   r*   r   r   r   r,     s    c                 C   s   |   d¡ d¡S )Nr'   é   )r)   Úzfillr*   r   r   r   r,     s    c                 C   sL   t | tƒrt| ƒS t | ttjfƒs<| dkr2t ¡ } t | ¡} d| d d…  S )Nr   z%04d%02d%02dT%02d:%02d:%02dé   )Ú
isinstancer   r,   ÚtupleÚtimeÚstruct_timeÚ	localtimer*   r   r   r   Ú	_strftime  s    

r5   c                   @   sn   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚDateTimer   c                 C   s    t |tƒr|| _n
t|ƒ| _d S r   )r0   Ústrr+   r5   )r   r+   r   r   r   r   (  s    
zDateTime.__init__c                 C   sš   t |tƒr| j}|j}nzt |tƒr2| j}t|ƒ}n`t |tƒrH| j}|}nJt|dƒrd|  ¡ }| ¡ }n.t|dƒrv|jj	p|t
|ƒ}td| jj	|f ƒ‚||fS )NÚ	timetupler   zCan't compare %s and %s)r0   r6   r+   r   r,   r7   Úhasattrr8   r   r   ÚtypeÚ	TypeError)r   Úotherr
   ÚoZotyper   r   r   Úmake_comparable.  s*    






ÿþ
ÿzDateTime.make_comparablec                 C   s   |   |¡\}}||k S r   ©r>   ©r   r<   r
   r=   r   r   r   Ú__lt__C  s    zDateTime.__lt__c                 C   s   |   |¡\}}||kS r   r?   r@   r   r   r   Ú__le__G  s    zDateTime.__le__c                 C   s   |   |¡\}}||kS r   r?   r@   r   r   r   Ú__gt__K  s    zDateTime.__gt__c                 C   s   |   |¡\}}||kS r   r?   r@   r   r   r   Ú__ge__O  s    zDateTime.__ge__c                 C   s   |   |¡\}}||kS r   r?   r@   r   r   r   Ú__eq__S  s    zDateTime.__eq__c                 C   s   t  | jd¡S r&   )r2   Ústrptimer+   r   r   r   r   r8   W  s    zDateTime.timetuplec                 C   s   | j S r   r*   r   r   r   r   r   _  s    zDateTime.__str__c                 C   s   d| j j| jt| ƒf S )Nz<%s %r at %#x>)r   r   r+   Úidr   r   r   r   r   b  s    zDateTime.__repr__c                 C   s   t |ƒ ¡ | _d S r   )r7   Ústripr+   ©r   Údatar   r   r   Údecodee  s    zDateTime.decodec                 C   s$   |  d¡ |  | j¡ |  d¡ d S ©Nz<value><dateTime.iso8601>z</dateTime.iso8601></value>
)Úwriter+   )r   Úoutr   r   r   Úencodeh  s    
zDateTime.encodeN)r   )r   r   r   r   r>   rA   rB   rC   rD   rE   r8   r   r   rK   rO   r   r   r   r   r6   "  s   
r6   c                 C   s   t ƒ }| | ¡ |S r   )r6   rK   ©rJ   r+   r   r   r   Ú	_datetimem  s    
rQ   c                 C   s   t  | d¡S r&   )r   rF   )rJ   r   r   r   Ú_datetime_types  s    rR   c                   @   s6   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚBinaryNc                 C   s>   |d krd}n&t |ttfƒs,td|jj ƒ‚t|ƒ}|| _d S )Nó    z#expected bytes or bytearray, not %s)r0   ÚbytesÚ	bytearrayr;   r   r   rJ   rI   r   r   r   r     s    ÿzBinary.__init__c                 C   s   t | jdƒS )Nzlatin-1)r7   rJ   r   r   r   r   r   Ž  s    zBinary.__str__c                 C   s   t |tƒr|j}| j|kS r   )r0   rS   rJ   )r   r<   r   r   r   rE   ‘  s    
zBinary.__eq__c                 C   s   t  |¡| _d S r   )Úbase64ÚdecodebytesrJ   rI   r   r   r   rK   –  s    zBinary.decodec                 C   s4   |  d¡ t | j¡}|  | d¡¡ |  d¡ d S ©Nz<value><base64>
Úasciiz</base64></value>
)rM   rW   ÚencodebytesrJ   rK   )r   rN   Úencodedr   r   r   rO   ™  s    
zBinary.encode)N)r   r   r   r   r   rE   rK   rO   r   r   r   r   rS   |  s
   
rS   c                 C   s   t ƒ }| | ¡ |S r   )rS   rK   rP   r   r   r   Ú_binaryŸ  s    
r]   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚExpatParserc                 C   sD   t  d d ¡ | _}|| _|j|_|j|_|j|_	d }| 
|d ¡ d S r   )r   ZParserCreateÚ_parserÚ_targetÚstartZStartElementHandlerÚendZEndElementHandlerrJ   ZCharacterDataHandlerÚxml)r   ÚtargetÚparserÚencodingr   r   r   r   ¬  s    zExpatParser.__init__c                 C   s   | j  |d¡ d S ©Nr   )r_   ÚParserI   r   r   r   Úfeedµ  s    zExpatParser.feedc                 C   s8   z
| j }W n tk
r   Y nX | `| ` | dd¡ d S )NrT   T)r_   ÚAttributeErrorr`   rh   )r   re   r   r   r   Úclose¸  s    
zExpatParser.closeN)r   r   r   r   ri   rk   r   r   r   r   r^   ª  s   	r^   c                   @   sú   e Zd Zddd„Zi Zdd„ Zdd„ Zd	d
„ Zeeedƒ< dd„ Z	e	ee
< dd„ Zeee< eZdd„ Zeee< efdd„Zeee< dd„ Zeee< eee< dd„ Zeee< eee< efdd„Zeee< dd„ Zeee< dd„ Zeee< eee< eed< dS )Ú
MarshallerNFc                 C   s   i | _ d | _|| _|| _d S r   )ÚmemorJ   rf   Ú
allow_none)r   rf   rn   r   r   r   r   Ø  s    zMarshaller.__init__c                 C   s‚   g }|j }| j}t|tƒr@|dƒ ||j|jdœ|ƒ |dƒ n4|dƒ |D ]}|dƒ |||ƒ |dƒ qL|dƒ d |¡}|S )	Nz<fault>
)r#   r$   z	</fault>
z	<params>
z<param>
z	</param>
z
</params>
Ú )ÚappendÚ_Marshaller__dumpr0   r"   r#   r$   Újoin)r   ÚvaluesrN   rM   ÚdumpÚvÚresultr   r   r   Údumpsà  s&    
ÿþ



zMarshaller.dumpsc                 C   sŠ   z| j t|ƒ }W nf tk
rx   t|dƒs<tdt|ƒ ƒ‚t|ƒjD ]"}|| j  ¡ krFtdt|ƒ ƒ‚qF| j d }Y nX || ||ƒ d S )NÚ__dict__zcannot marshal %s objectsÚ_arbitrary_instance)Údispatchr:   ÚKeyErrorr9   r;   Ú__mro__Úkeys)r   r+   rM   ÚfZtype_r   r   r   Z__dumpû  s    
zMarshaller.__dumpc                 C   s   | j stdƒ‚|dƒ d S )Nz0cannot marshal None unless allow_none is enabledz<value><nil/></value>)rn   r;   ©r   r+   rM   r   r   r   Údump_nil  s    zMarshaller.dump_nilc                 C   s$   |dƒ ||rdpdƒ |dƒ d S )Nz<value><boolean>Ú1Ú0z</boolean></value>
r   r   r   r   r   Ú	dump_bool  s    zMarshaller.dump_boolc                 C   s<   |t ks|tk rtdƒ‚|dƒ |tt|ƒƒƒ |dƒ d S )Nzint exceeds XML-RPC limitsz<value><int>z</int></value>
)ÚMAXINTÚMININTÚOverflowErrorr7   Úintr   r   r   r   Ú	dump_long  s
    zMarshaller.dump_longc                 C   s    |dƒ |t |ƒƒ |dƒ d S )Nz<value><double>z</double></value>
)Úreprr   r   r   r   Údump_double$  s    zMarshaller.dump_doublec                 C   s    |dƒ |||ƒƒ |dƒ d S )Nz<value><string>z</string></value>
r   )r   r+   rM   r   r   r   r   Údump_unicode*  s    zMarshaller.dump_unicodec                 C   s,   |dƒ t  |¡}|| d¡ƒ |dƒ d S rY   )rW   r[   rK   )r   r+   rM   r\   r   r   r   Ú
dump_bytes0  s    
zMarshaller.dump_bytesc                 C   sZ   t |ƒ}|| jkrtdƒ‚d | j|< | j}|dƒ |D ]}|||ƒ q6|dƒ | j|= d S )Nz"cannot marshal recursive sequencesz<value><array><data>
z</data></array></value>
)rG   rm   r;   rq   )r   r+   rM   Úirt   ru   r   r   r   Ú
dump_array8  s    

zMarshaller.dump_arrayc                 C   s”   t |ƒ}|| jkrtdƒ‚d | j|< | j}|dƒ | ¡ D ]D\}}|dƒ t|tƒs\tdƒ‚|d||ƒ ƒ |||ƒ |dƒ q:|dƒ | j|= d S )Nz%cannot marshal recursive dictionariesz<value><struct>
z	<member>
zdictionary key must be stringz<name>%s</name>
z
</member>
z</struct></value>
)rG   rm   r;   rq   Úitemsr0   r7   )r   r+   rM   r   r�   rt   Úkru   r   r   r   Údump_structF  s    




zMarshaller.dump_structc                 C   s    |dƒ |t |ƒƒ |dƒ d S rL   )r5   r   r   r   r   Údump_datetimeX  s    zMarshaller.dump_datetimec                 C   s2   |j tkr || _| | ¡ | `n|  |j|¡ d S r   )r   ÚWRAPPERSrM   rO   r‘   rx   r   r   r   r   Údump_instance^  s
    

zMarshaller.dump_instancery   )NF) r   r   r   r   rz   rw   rq   r€   r:   rƒ   Úboolrˆ   r‡   Zdump_intrŠ   Úfloatr   r‹   r7   rŒ   rU   rV   rŽ   r1   Úlistr‘   Údictr’   r   r”   r6   rS   r   r   r   r   rl   Ë  s:   
	rl   c                   @   sj  e Zd ZdDdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
i Zdd„ Zeed< dd„ Zeed< dd„ Zeed< eed< eed< eed< eed< eed< d d!„ Zeed"< eed#< d$d%„ Zeed&< d'd(„ Zeed)< eed*< d+d,„ Zeed-< d.d/„ Zeed0< d1d2„ Zeed3< d4d5„ Zeed6< d7d8„ Zeed9< d:d;„ Zeed<< d=d>„ Zeed?< d@dA„ ZeedB< dCS )EÚUnmarshallerFc                 C   sH   d | _ g | _g | _g | _d| _d | _d| _| jj| _|p:|| _|| _	d S )NFúutf-8)
Ú_typeÚ_stackÚ_marksÚ_dataÚ_valueÚ_methodnameÚ	_encodingrp   Ú_use_datetimeÚ
_use_bytes)r   Úuse_datetimeÚuse_builtin_typesr   r   r   r   ~  s    

zUnmarshaller.__init__c                 C   s:   | j d ks| jrtƒ ‚| j dkr0tf | jd Ž‚t| jƒS )NÚfaultr   )r›   r�   r!   r"   rœ   r1   r   r   r   r   rk   Š  s
    
zUnmarshaller.closec                 C   s   | j S r   )r    r   r   r   r   Úgetmethodname’  s    zUnmarshaller.getmethodnamec                 C   s
   || _ d S r   )r¡   )r   rf   Z
standaloner   r   r   rc   ˜  s    zUnmarshaller.xmlc                 C   sh   d|kr|  d¡d }|dks&|dkr8| j t| jƒ¡ g | _| jrZ|| jkrZtd| ƒ‚|dk| _d S )Nú:éÿÿÿÿÚarrayÚstructzunknown tag %rr+   )	Úsplitr�   rp   Úlenrœ   rž   rŸ   rz   r!   )r   ÚtagZattrsr   r   r   ra   œ  s    zUnmarshaller.startc                 C   s   | j  |¡ d S r   )rž   rp   )r   Útextr   r   r   rJ   §  s    zUnmarshaller.datac                 C   sv   z| j | }W nT tk
rb   d|kr,Y d S z| j | d¡d  }W n tk
r\   Y Y d S X Y nX || d | j¡ƒS )Nr¨   r©   ro   )rz   r{   r¬   rr   rž   )r   r®   r~   r   r   r   rb   ª  s    zUnmarshaller.endc                 C   sn   z| j | }W nT tk
rb   d|kr,Y d S z| j | d¡d  }W n tk
r\   Y Y d S X Y nX || |ƒS )Nr¨   r©   )rz   r{   r¬   )r   r®   rJ   r~   r   r   r   Úend_dispatchº  s    zUnmarshaller.end_dispatchc                 C   s   |   d ¡ d| _d S rg   )rp   rŸ   rI   r   r   r   Úend_nilÌ  s    
zUnmarshaller.end_nilZnilc                 C   s:   |dkr|   d¡ n|dkr(|   d¡ ntdƒ‚d| _d S )Nr‚   Fr�   Tzbad boolean valuer   )rp   r;   rŸ   rI   r   r   r   Úend_booleanÑ  s    zUnmarshaller.end_booleanÚbooleanc                 C   s   |   t|ƒ¡ d| _d S rg   )rp   r‡   rŸ   rI   r   r   r   Úend_intÛ  s    zUnmarshaller.end_intZi1Zi2Zi4Zi8r‡   Z
bigintegerc                 C   s   |   t|ƒ¡ d| _d S rg   )rp   r–   rŸ   rI   r   r   r   Ú
end_doubleå  s    zUnmarshaller.end_doubleZdoubler–   c                 C   s   |   t|ƒ¡ d| _d S rg   )rp   r   rŸ   rI   r   r   r   Úend_bigdecimalë  s    zUnmarshaller.end_bigdecimalZ
bigdecimalc                 C   s&   | j r| | j ¡}|  |¡ d| _d S rg   )r¡   rK   rp   rŸ   rI   r   r   r   Ú
end_stringð  s    
zUnmarshaller.end_stringÚstringÚnamec                 C   s.   | j  ¡ }| j|d … g| j|d …< d| _d S rg   )r�   Úpoprœ   rŸ   )r   rJ   Úmarkr   r   r   Ú	end_arrayø  s    
zUnmarshaller.end_arrayrª   c                 C   s`   | j  ¡ }i }| j|d … }tdt|ƒdƒD ]}||d  ||| < q,|g| j|d …< d| _d S )Nr   r   r%   )r�   rº   rœ   Úranger­   rŸ   )r   rJ   r»   r˜   r�   r�   r   r   r   Ú
end_structÿ  s    
zUnmarshaller.end_structr«   c                 C   s6   t ƒ }| | d¡¡ | jr"|j}|  |¡ d| _d S )NrZ   r   )rS   rK   rO   r£   rJ   rp   rŸ   ©r   rJ   r+   r   r   r   Ú
end_base64
  s    
zUnmarshaller.end_base64rW   c                 C   s,   t ƒ }| |¡ | jrt|ƒ}|  |¡ d S r   )r6   rK   r¢   rR   rp   r¿   r   r   r   Úend_dateTime  s
    
zUnmarshaller.end_dateTimezdateTime.iso8601c                 C   s   | j r|  |¡ d S r   )rŸ   r·   rI   r   r   r   Ú	end_value  s    zUnmarshaller.end_valuer+   c                 C   s
   d| _ d S )NÚparams©r›   rI   r   r   r   Ú
end_params"  s    zUnmarshaller.end_paramsrÃ   c                 C   s
   d| _ d S )Nr¦   rÄ   rI   r   r   r   Ú	end_fault&  s    zUnmarshaller.end_faultr¦   c                 C   s"   | j r| | j ¡}|| _d| _d S )NÚ
methodName)r¡   rK   r    r›   rI   r   r   r   Úend_methodName*  s    zUnmarshaller.end_methodNamerÇ   N)FF)r   r   r   r   rk   r§   rc   ra   rJ   rb   r°   rz   r±   r²   r´   rµ   r¶   r·   r¼   r¾   rÀ   rÁ   rÂ   rÅ   rÆ   rÈ   r   r   r   r   r™   r  sX   
	r™   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_MultiCallMethodc                 C   s   || _ || _d S r   )Ú_MultiCallMethod__call_listÚ_MultiCallMethod__name)r   Z	call_listr¹   r   r   r   r   7  s    z_MultiCallMethod.__init__c                 C   s   t | jd| j|f ƒS ©Nz%s.%s)rÉ   rÊ   rË   ©r   r¹   r   r   r   Ú__getattr__:  s    z_MultiCallMethod.__getattr__c                 G   s   | j  | j|f¡ d S r   )rÊ   rp   rË   ©r   Úargsr   r   r   Ú__call__<  s    z_MultiCallMethod.__call__N©r   r   r   r   rÎ   rÑ   r   r   r   r   rÉ   4  s   rÉ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚMultiCallIteratorc                 C   s
   || _ d S r   )Úresults)r   rÔ   r   r   r   r   C  s    zMultiCallIterator.__init__c                 C   sR   | j | }t|ƒti ƒkr.t|d |d ƒ‚n t|ƒtg ƒkrF|d S tdƒ‚d S )Nr#   r$   r   z#unexpected type in multicall result)rÔ   r:   r"   Ú
ValueError)r   r�   Úitemr   r   r   Ú__getitem__F  s    
zMultiCallIterator.__getitem__N)r   r   r   r   r×   r   r   r   r   rÓ   ?  s   rÓ   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú	MultiCallc                 C   s   || _ g | _d S r   )Ú_MultiCall__serverÚ_MultiCall__call_list)r   Úserverr   r   r   r   `  s    zMultiCall.__init__c                 C   s   d| j jt| ƒf S )Nz<%s at %#x>)r   r   rG   r   r   r   r   r   d  s    zMultiCall.__repr__c                 C   s   t | j|ƒS r   )rÉ   rÚ   rÍ   r   r   r   rÎ   g  s    zMultiCall.__getattr__c                 C   s6   g }| j D ]\}}| ||dœ¡ q
t| jj |¡ƒS )N)rÇ   rÃ   )rÚ   rp   rÓ   rÙ   ÚsystemZ	multicall)r   Zmarshalled_listr¹   rÐ   r   r   r   rÑ   j  s    zMultiCall.__call__N)r   r   r   r   r   rÎ   rÑ   r   r   r   r   rØ   O  s   rØ   Fc                 C   sr   t rHtrH|rt}tj}n| r&t}t}nt}t}tdd||tƒ}t |ƒ}n"t| |d�}t rbt |ƒ}nt	|ƒ}||fS )NTF©r¤   r¥   )
Ú
FastParserÚFastUnmarshallerrR   rW   rX   r]   rQ   r"   r™   r^   )r¤   r¥   Z
mkdatetimeZmkbytesrd   re   r   r   r   Ú	getparser|  s     

rà   c                 C   s˜   t | tƒrd}n|rt | tƒr|s&d}tr4t|ƒ}n
t||ƒ}| | ¡}|dkr^dt|ƒ }nd}|rx|d|d|df}n|rŠ|d|d	f}n|S d
 |¡S )Nr%   rš   z$<?xml version='1.0' encoding='%s'?>
z<?xml version='1.0'?>
z<methodCall>
<methodName>z</methodName>
z</methodCall>
z<methodResponse>
z</methodResponse>
ro   )r0   r"   r1   ÚFastMarshallerrl   rw   r7   rr   )rÃ   Ú
methodnameZmethodresponserf   rn   ÚmrJ   Z	xmlheaderr   r   r   rw   £  s8    



 ûürw   c                 C   s2   t ||d�\}}| | ¡ | ¡  | ¡ | ¡ fS ©NrÝ   )rà   ri   rk   r§   )rJ   r¤   r¥   ÚpÚur   r   r   Úloadsî  s    	
rç   c              	   C   s<   t st‚tƒ }t jd|dd��}| | ¡ W 5 Q R X | ¡ S )NÚwbr%   )ÚmodeÚfileobjZcompresslevel)ÚgzipÚNotImplementedErrorr   ÚGzipFilerM   Úgetvalue)rJ   r~   Úgzfr   r   r   Úgzip_encode  s    rð   é  @c              	   C   sˆ   t st‚t jdt| ƒd��H}z$|dk r0| ¡ }n| |d ¡}W n tk
r\   tdƒ‚Y nX W 5 Q R X |dkr„t|ƒ|kr„tdƒ‚|S )NÚrb©ré   rê   r   r%   zinvalid dataz#max gzipped payload length exceeded)rë   rì   rí   r   ÚreadÚOSErrorrÕ   r­   )rJ   Z
max_decoderï   Zdecodedr   r   r   Úgzip_decode  s    
rö   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚGzipDecodedResponsec                 C   s.   t st‚t| ¡ ƒ| _t jj| d| jd� d S )Nrò   ró   )rë   rì   r   rô   Úiorí   r   )r   Úresponser   r   r   r   :  s    zGzipDecodedResponse.__init__c                 C   s"   ztj | ¡ W 5 | j  ¡  X d S r   )rø   rk   rë   rí   r   r   r   r   rk   B  s    zGzipDecodedResponse.closeN)r   r   r   r   rk   r   r   r   r   r÷   6  s   r÷   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_Methodc                 C   s   || _ || _d S r   ©Ú_Method__sendÚ_Method__name)r   Úsendr¹   r   r   r   r   O  s    z_Method.__init__c                 C   s   t | jd| j|f ƒS rÌ   )rú   rü   rý   rÍ   r   r   r   rÎ   R  s    z_Method.__getattr__c                 G   s   |   | j|¡S r   rû   rÏ   r   r   r   rÑ   T  s    z_Method.__call__NrÒ   r   r   r   r   rú   L  s   rú   c                   @   s€   e Zd Zde ZdZdZdddœdd„Zdd	d
„Zddd„Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) Ú	TransportzPython-xmlrpc/%sTNFr   )r   c                C   s&   || _ || _d| _t|ƒ| _g | _d S ©N)NN)r¢   Ú_use_builtin_typesÚ_connectionr—   Ú_headersÚ_extra_headers)r   r¤   r¥   r   r   r   r   r   k  s
    
zTransport.__init__c                 C   s€   dD ]v}z|   ||||¡W   S  tjjk
r<   |r8‚ Y q tk
rx } z |sf|jtjtjtjfkrh‚ W 5 d }~X Y qX qd S )N)r   r%   )	Úsingle_requestÚhttpÚclientZRemoteDisconnectedrõ   ÚerrnoZ
ECONNRESETZECONNABORTEDZEPIPE)r   ÚhostÚhandlerÚrequest_bodyÚverboser�   Úer   r   r   Úrequest}  s    ÿzTransport.requestc                 C   s¢   z8|   ||||¡}| ¡ }|jdkr6|| _|  |¡W S W n2 tk
rN   ‚ Y n tk
rj   |  ¡  ‚ Y nX | dd¡r€| 	¡  t
|| |j|jt| ¡ ƒƒ‚d S )NéÈ   zcontent-lengthro   )Úsend_requestZgetresponseZstatusr  Úparse_responser"   Ú	Exceptionrk   Ú	getheaderrô   r   Úreasonr˜   Z
getheaders)r   r	  r
  r  r  Z	http_connZrespr   r   r   r  Š  s&    
 
ýzTransport.single_requestc                 C   s   t | j| jd�S rä   )rà   r¢   r  r   r   r   r   rà   «  s    ÿzTransport.getparserc                 C   sr   i }t |tƒr|\}}tj |¡\}}|rdtj |¡}t |¡ d¡}d 	| 
¡ ¡}dd| fg}ng }|||fS )Nrš   ro   ZAuthorizationzBasic )r0   r1   ÚurllibÚparseZ
_splituserZunquote_to_bytesrW   r[   rK   rr   r¬   )r   r	  Úx509ZauthZextra_headersr   r   r   Úget_host_infoº  s    

ÿzTransport.get_host_infoc                 C   sL   | j r|| j d kr| j d S |  |¡\}| _}|tj |¡f| _ | j d S )Nr   r%   )r  r  r  r  r  ZHTTPConnection©r   r	  Zchostr  r   r   r   Úmake_connectionÔ  s
    
zTransport.make_connectionc                 C   s    | j \}}|rd| _ | ¡  d S r   )r  rk   )r   r	  Ú
connectionr   r   r   rk   â  s    
zTransport.closec                 C   sŒ   |   |¡}| j| j }|r$| d¡ | jrJtrJ|jd|dd� | d¡ n| d|¡ | d¡ | d| jf¡ |  	||¡ |  
||¡ |S )Nr%   ZPOSTT)Zskip_accept_encoding)zAccept-Encodingrë   )zContent-Typeztext/xmlz
User-Agent)r  r  r  Zset_debuglevelÚaccept_gzip_encodingrë   Z
putrequestrp   Ú
user_agentÚsend_headersÚsend_content)r   r	  r
  r  Údebugr  r   r   r   r   r  ñ  s    



zTransport.send_requestc                 C   s   |D ]\}}|  ||¡ qd S r   )Ú	putheader)r   r  r   ÚkeyÚvalr   r   r   r    s    zTransport.send_headersc                 C   sR   | j d k	r0| j t|ƒk r0tr0| dd¡ t|ƒ}| dtt|ƒƒ¡ | |¡ d S )NúContent-Encodingrë   zContent-Length)Úencode_thresholdr­   rë   r!  rð   r7   Z
endheaders)r   r  r  r   r   r   r    s    
ÿþzTransport.send_contentc                 C   sŠ   t |dƒr*| dd¡dkr$t|ƒ}q.|}n|}|  ¡ \}}| d¡}|sJqj| jr^tdt|ƒƒ | |¡ q:||k	rz| 	¡  | 	¡  | 	¡ S )Nr  r$  ro   rë   i   zbody:)
r9   r  r÷   rà   rô   r  Úprintr‰   ri   rk   )r   rù   Ústreamrå   ræ   rJ   r   r   r   r  $  s     


zTransport.parse_response)FF)F)F)r   r   r   Ú__version__r  r  r%  r   r  r  rà   r  r  rk   r  r  r  r  r   r   r   r   rÿ   ]  s    ÿ

!rÿ   c                       s.   e Zd Zd	dddœ‡ fdd„Zdd„ Z‡  ZS )
ÚSafeTransportFr   N©r   Úcontextc                   s   t ƒ j|||d� || _d S )N©r¤   r¥   r   )Úsuperr   r+  )r   r¤   r¥   r   r+  ©r   r   r   r   E  s
    þzSafeTransport.__init__c                 C   st   | j r|| j d kr| j d S ttjdƒs2tdƒ‚|  |¡\}| _}|tjj|d fd| ji|p`i —Žf| _ | j d S )Nr   r%   ÚHTTPSConnectionz1your version of http.client doesn't support HTTPSr+  )	r  r9   r  r  rì   r  r  r/  r+  r  r   r   r   r  N  s    
ÿ
ÿÿÿ
zSafeTransport.make_connection)FF)r   r   r   r   r  Ú__classcell__r   r   r.  r   r)  B  s
    ÿ	r)  c                   @   sV   e Zd Zddddœdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚServerProxyNFr   r*  c                C   sœ   t j |¡\}
}|
dkr tdƒ‚t j |¡\| _| _| js@d| _|d kr||
dkr^t}d|	i}nt}i }|f |||dœ|—Ž}|| _	|pˆd| _
|| _|| _d S )N)r  Úhttpszunsupported XML-RPC protocolz/RPC2r2  r+  r,  rš   )r  r  Z
_splittyperõ   Z
_splithostÚ_ServerProxy__hostÚ_ServerProxy__handlerr)  rÿ   Ú_ServerProxy__transportÚ_ServerProxy__encodingÚ_ServerProxy__verboseÚ_ServerProxy__allow_none)r   ZuriÚ	transportrf   r  rn   r¤   r¥   r   r+  r:   r
  Zextra_kwargsr   r   r   r   ƒ  s,    
þý
zServerProxy.__init__c                 C   s   | j  ¡  d S r   )r5  rk   r   r   r   r   Z__close¡  s    zServerProxy.__closec                 C   sP   t ||| j| jd� | jd¡}| jj| j| j|| jd�}t	|ƒdkrL|d }|S )N)rf   rn   Úxmlcharrefreplace)r  r%   r   )
rw   r6  r8  rO   r5  r  r3  r4  r7  r­   )r   râ   rÃ   r  rù   r   r   r   Z	__request¤  s    
ÿ ÿüzServerProxy.__requestc                 C   s   d| j j| j| jf S )Nz<%s for %s%s>)r   r   r3  r4  r   r   r   r   r   ¶  s    ÿÿzServerProxy.__repr__c                 C   s   t | j|ƒS r   )rú   Ú_ServerProxy__requestrÍ   r   r   r   rÎ   ¼  s    zServerProxy.__getattr__c                 C   s.   |dkr| j S |dkr| jS td|f ƒ‚d S )Nrk   r9  zAttribute %r not found)Ú_ServerProxy__closer5  rj   )r   Úattrr   r   r   rÑ   Ã  s
    zServerProxy.__call__c                 C   s   | S r   r   r   r   r   r   Ú	__enter__Í  s    zServerProxy.__enter__c                 G   s   |   ¡  d S r   )r<  rÏ   r   r   r   Ú__exit__Ð  s    zServerProxy.__exit__)NNFFFF)r   r   r   r   r<  r;  r   rÎ   rÑ   r>  r?  r   r   r   r   r1  m  s         ÿ þ
r1  Ú__main__zhttp://localhost:8000ZERRORé	   )FF)NNNF)FF)rñ   )UrW   Úsysr2   r   Údecimalr   Zhttp.clientr  Zurllib.parser  Zxml.parsersr   r  rø   r   rë   ÚImportErrorr   Úversion_infor(  r„   r…   ZPARSE_ERRORZSERVER_ERRORZAPPLICATION_ERRORZSYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORr  r   r   r!   r"   r•   r³   ZBooleanZ_day0r)   r,   r5   r6   rQ   rR   rS   r]   r“   r^   rl   r™   rÉ   rÓ   rØ   rá   rÞ   rß   rà   rw   rç   rð   rö   rí   r   r÷   rú   rÿ   r)  r1  ZServerr   rÛ   r&  ZcurrentTimeZgetCurrentTimeru   ZmultiZgetDataÚpowÚaddrù   r   r   r   r   Ú<module>ƒ   s¬   


K	#! ( C%
'  ÿ
K

 f+h

