����JFIF���������
1#@!#!123s
D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
alt
/
python37
/
lib64
/
python3.7
/
urllib
/
__pycache__
/
Filename :
request.cpython-37.opt-2.pyc
back
Copy
B ����YI~d���������������!���@���s���d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dl Z d�dl Z d�dlZd�dlZd�dl Z d�dlZd�dlZd�dlZd�dlmZmZmZ�d�dlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'�d�dl(m)Z)m*Z*�yd�dl+Z+W�n�e,k �r���dZ-Y�nX�dZ-ddd d ddd ddddddddddddddddddd d!d"d#d$d%d&d'g!Z.d(ej/dd)���Z0da1de j2fddddd*�d+d�Z3d,d��Z4g�Z5d}d-d$�Z6d.d%��Z7e �8d/e j9�Z:d0d1��Z;G�d2d��d�Z<G�d3d��d�Z=d4d ��Z>G�d5d ��d �Z?G�d6d��de?�Z@G�d7d ��d e?�ZAG�d8d��de?�ZBd9d:��ZCG�d;d ��d e?�ZDG�d<d��d�ZEG�d=d��deE�ZFG�d>d��deF�ZGG�d?d��d�ZHG�d@d��deHe?�ZIG�dAd��deHe?�ZJejKZLG�dBd��d�ZMG�dCd��de?eM�ZNG�dDd��de?eM�ZOG�dEdF��dFe?�ZPG�dGd��deP�ZQeRejSdH��r&G�dIdJ��dJeP�ZTe.�UdJ��G�dKd��de?�ZVG�dLd��de?�ZWdMdN��ZXdOdP��ZYG�dQd��de?�ZZdRdS��Z[G�dTd��de?�Z\G�dUd��de\�Z]G�dVd��de?�Z^dWZ_ej`dXk�r�d�dYlambZbmcZc�ndZd"��Zbd[d!��Zci�ZdG�d\d&��d&�ZeG�d]d'��d'ee�Zfdagd^d_��Zhdaid`da��Zjdakdbdc��Zldamddde��ZnG�dfdg��dg�Zodhdi��Zpd~djdk�Zqdldm��Zrejsdnk�r�d�doltmuZumvZv�dpdq��Zwdrds��Zxdtdu��Zydvd#��Zzn6ej`dXk�r�dwdx��Z{dyd#��Zzdzd{��Z|d|du��ZynepZzeqZydS�)�����N)�URLError� HTTPError�ContentTooShortError)�urlparse�urlsplit�urljoin�unwrap�quote�unquote� splittype� splithost� splitport� splituser�splitpasswd� splitattr� splitquery� splitvalue�splittag�to_bytes�unquote_to_bytes� urlunparse)� addinfourl�addclosehookFT�Request�OpenerDirector�BaseHandler�HTTPDefaultErrorHandler�HTTPRedirectHandler�HTTPCookieProcessor�ProxyHandler�HTTPPasswordMgr�HTTPPasswordMgrWithDefaultRealm�HTTPPasswordMgrWithPriorAuth�AbstractBasicAuthHandler�HTTPBasicAuthHandler�ProxyBasicAuthHandler�AbstractDigestAuthHandler�HTTPDigestAuthHandler�ProxyDigestAuthHandler�HTTPHandler�FileHandler� FTPHandler�CacheFTPHandler�DataHandler�UnknownHandler�HTTPErrorProcessor�urlopen�install_opener�build_opener�pathname2url�url2pathname� getproxies�urlretrieve� urlcleanup� URLopener�FancyURLopenerz%d.%d����)�cafile�capath� cadefault�contextc������ ������C���s����|s|s|rfdd�l�}|�dtd��|d�k r2td��ts>td��tjtjj||d�}t |d�}t |�} n0|r~t |d�}t |�} ntd�kr�t ���a} nt} | �|�||�S�)Nr���zJcafile, capath and cadefault are deprecated, use a custom context instead.r:���zDYou can't pass both context and any of cafile, capath, and cadefaultzSSL support not available)r;���r<���)r>���) �warnings�warn�DeprecationWarning� ValueError� _have_ssl�sslZcreate_default_contextZPurposeZSERVER_AUTH�HTTPSHandlerr2����_opener�open) �url�data�timeoutr;���r<���r=���r>���r?���Z https_handler�opener��rL����3/opt/alt/python37/lib64/python3.7/urllib/request.pyr0�������s*����< c�������������C���s���|�a�d�S�)N)rF���)rK���rL���rL���rM���r1�������s����c���������� ���C���s2��t�|��\}}t�t|�|����}|���}|dkrB|sBtj�|�|fS�|rRt|d�}nt j dd�}|j}t� |��|���||f} d} d}d}d} d|kr�t|d ��}|r�|| | |��xB|�| �}|s�P�|t|�7�}|�|��| d 7�} |r�|| | |��q�W�W�d�Q�R�X�W�d�Q�R�X�|dk�r.||k��r.td||f�| ��| S�)N�file�wbF)�deletei� �����r���zcontent-lengthzContent-Length����z1retrieval incomplete: got only %i out of %i bytes)r���� contextlib�closingr0����info�os�path�normpathrG����tempfileZNamedTemporaryFile�name�_url_tempfiles�append�int�read�len�writer���)rH����filename� reporthookrI���Zurl_typerW����fp�headers�tfp�result�bs�sizer^����blocknum�blockrL���rL���rM���r6�������sD���� $c����������� ���C���sH���x0t�D�](}�yt�|���W�q�tk r,���Y�qX�qW�t�d�d��=�trDd�ad�S�)N)r[���rV����unlink�OSErrorrF���)Z temp_filerL���rL���rM���r7���$��s���� z:\d+$c�������������C���s<���|�j�}t|�d�}|dkr&|��dd�}t�d|d�}|���S�)NrR������Host)�full_urlr���� get_header�_cut_port_re�sub�lower)�requestrH����hostrL���rL���rM����request_host3��s����rv���c���������������@���s����e�Zd�Zdi�dddfdd�Zedd���Zejdd���Zejdd���Zed d ���Zejdd ���Zejdd ���Zd d��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zd#dd�Zdd ��Zd!d"��ZdS�)$r���NFc������� ������C���sp���||�_�i�|�_i�|�_d�|�_||�_d�|�_x |���D�]\}}|��||��q.W�|d�krVt|��}||�_ ||�_ |rl||�_d�S�)N)ro���rd����unredirected_hdrs�_datarI����_tunnel_host�items� add_headerrv����origin_req_host�unverifiable�method) �selfrH���rI���rd���r|���r}���r~����key�valuerL���rL���rM����__init__E��s����zRequest.__init__c�������������C���s���|�j�rd�|�j|�j��S�|�jS�)Nz{}#{})�fragment�format� _full_url)r���rL���rL���rM���ro���W��s����zRequest.full_urlc�������������C���s(���t�|�|�_t|�j�\|�_|�_|�����d�S�)N)r���r����r���r�����_parse)r���rH���rL���rL���rM���ro���]��s���� c�������������C���s���d�|�_�d�|�_d|�_d�S�)Nrm���)r����r�����selector)r���rL���rL���rM���ro���d��s����c�������������C���s���|�j�S�)N)rx���)r���rL���rL���rM���rI���j��s����zRequest.datac�������������C���s(���||�j�kr$||�_�|��d�r$|��d��d�S�)NzContent-length)rx���� has_header� remove_header)r���rI���rL���rL���rM���rI���n��s���� c�������������C���s ���d�|�_�d�S�)N)rI���)r���rL���rL���rM���rI���x��s����c�������������C���sN���t�|�j�\|�_}|�jd�kr(td|�j���t|�\|�_|�_|�jrJt|�j�|�_d�S�)Nzunknown url type: %r) r���r�����typerB���ro���r���ru���r����r ���)r����restrL���rL���rM���r����|��s���� zRequest._parsec�������������C���s���|�j�d�k rdnd}t|�d|�S�)N�POST�GETr~���)rI����getattr)r���Zdefault_methodrL���rL���rM���� get_method���s����zRequest.get_methodc�������������C���s���|�j�S�)N)ro���)r���rL���rL���rM����get_full_url���s����zRequest.get_full_urlc�������������C���s2���|�j�dkr|�js|�j|�_n||�_�|�j|�_||�_d�S�)N�https)r����ry���ru���ro���r����)r���ru���r����rL���rL���rM���� set_proxy���s ���� zRequest.set_proxyc�������������C���s���|�j�|�jkS�)N)r����ro���)r���rL���rL���rM���� has_proxy���s����zRequest.has_proxyc�������������C���s���||�j�|���<�d�S�)N)rd���� capitalize)r���r�����valrL���rL���rM���r{������s����zRequest.add_headerc�������������C���s���||�j�|���<�d�S�)N)rw���r����)r���r����r����rL���rL���rM����add_unredirected_header���s����zRequest.add_unredirected_headerc�������������C���s���||�j�kp||�jkS�)N)rd���rw���)r����header_namerL���rL���rM���r�������s���� zRequest.has_headerc�������������C���s���|�j��||�j�||��S�)N)rd����getrw���)r���r�����defaultrL���rL���rM���rp������s����zRequest.get_headerc�������������C���s ���|�j��|d���|�j�|d���d�S�)N)rd����poprw���)r���r����rL���rL���rM���r�������s����zRequest.remove_headerc�������������C���s"���|�j����}|�|�j��t|����S�)N)rw����copy�updaterd����listrz���)r����hdrsrL���rL���rM����header_items���s���� zRequest.header_items)N)�__name__� __module__�__qualname__r�����propertyro����setter�deleterrI���r����r����r����r����r����r{���r����r����rp���r����r����rL���rL���rL���rM���r���C��s(��� c���������������@���sN���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd ejfd d�Z ddd �Z dd��Zd S�)r���c�������������C���s6���dt��}d|fg|�_g�|�_i�|�_i�|�_i�|�_i�|�_d�S�)NzPython-urllib/%sz User-agent)�__version__� addheaders�handlers�handle_open�handle_error�process_response�process_request)r���Zclient_versionrL���rL���rM���r�������s����zOpenerDirector.__init__c���������� ���C���sZ��t�|d�stdt|����d}�xt|�D��]}|dkr:q*|�d�}|d�|��}||d�d���}|�d�r�|�d�|�d�}||d�d���}yt|�}W�n�tk r����Y�nX�|�j� |i��} | |�j|<�n>|dkr�|}|�j } n*|d kr�|}|�j} n|d kr*|}|�j} nq*| � |g��} | �r&t�| |��n | �|��d}q*W�|�rVt�|�j|��|�|���d�S�)N� add_parentz%expected BaseHandler instance, got %rF)�redirect_request�do_open� proxy_open�_rR����errorrG����responsert���T)�hasattr� TypeErrorr�����dir�find� startswithr]���rB���r����r����r����r����r����� setdefault�bisectZinsortr\���r����r����)r����handlerZadded�meth�i�protocolZ condition�j�kind�lookupr����rL���rL���rM����add_handler���sJ���� zOpenerDirector.add_handlerc�������������C���s���d�S�)NrL���)r���rL���rL���rM����close���s����zOpenerDirector.closec������� ������G���s<���|��|d�}x*|D�]"}t||�}||��}|d�k r|S�qW�d�S�)NrL���)r����r����) r����chainr����� meth_name�argsr����r�����funcrf���rL���rL���rM����_call_chain���s���� zOpenerDirector._call_chainNc������� ������C���s����t�|t�rt||�}n|}|d�k r(||_||_|j}|d�}x(|�j�|g��D�]}t||�}||�}qLW�|�� ||�} |d�}x*|�j �|g��D�]}t||�}||| �} q�W�| S�)NZ_requestZ _response)� isinstance�strr���rI���rJ���r����r����r����r�����_openr����) r����fullurlrI���rJ����reqr����r����Z processorr����r����rL���rL���rM���rG������s"���� zOpenerDirector.openc�������������C���sP���|���|�jdd|�}|r|S�|j}|���|�j||d�|�}|r>|S�|���|�jdd|�S�)Nr����Zdefault_openr�����unknown�unknown_open)r����r����r����)r���r����rI���rf���r����rL���rL���rM���r������s���� zOpenerDirector._openc�������������G���s~���|dkr,|�j�d�}|d�}d|�}d}|}n|�j�}|d�}d}|||f|�}|�j|��}|r^|S�|rz|dd f|�}|�j|��S�d�S�) N)�httpr����r����r:���z http_error_%srR����_errorr���r�����http_error_default)r����r����)r����protor�����dictr����Zhttp_errZ orig_argsrf���rL���rL���rM���r����&��s ���� zOpenerDirector.error)N)r����r����r����r����r����r����r�����socket�_GLOBAL_DEFAULT_TIMEOUTrG���r����r����rL���rL���rL���rM���r������s���/ c����������� ���G���s����t���}ttttttttt g }t tjd�r2|� t��t��}xN|D�]F}x@|�D�]8}t|t�rlt||�r�|�|��qHt||�rH|�|��qHW�q>W�x|D�]}|�|��q�W�x|D�]}|�|����q�W�x&|�D�]}t|t�r�|��}|�|��q�W�|S�)N�HTTPSConnection)r���r���r.���r)���r���r���r+���r*���r/���r-���r����r�����clientr\���rE����setr����r����� issubclass�add�remover����)r����rK���Zdefault_classes�skip�klassZcheck�hrL���rL���rM���r2���?��s0���� c���������������@���s(���e�Zd�ZdZdd��Zdd��Zdd��ZdS�) r���i���c�������������C���s ���||�_�d�S�)N)�parent)r���r����rL���rL���rM���r����f��s����zBaseHandler.add_parentc�������������C���s���d�S�)NrL���)r���rL���rL���rM���r����i��s����zBaseHandler.closec�������������C���s���t�|d�sdS�|�j|jk�S�)N� handler_orderT)r����r����)r����otherrL���rL���rM����__lt__m��s���� zBaseHandler.__lt__N)r����r����r����r����r����r����r����rL���rL���rL���rM���r���c��s���c���������������@���s���e�Zd�ZdZdd��ZeZdS�)r/���i���c�������������C���sH���|j�|j|�����}}}d|��kr,dk�sDn�|�j�d|||||�}|S�)N�����i,��r����)�code�msgrU���r����r����)r���rt���r����r����r����r����rL���rL���rM���� http_responsez��s ����z HTTPErrorProcessor.http_responseN)r����r����r����r����r�����https_responserL���rL���rL���rM���r/���v��s���c���������������@���s���e�Zd�Zdd��ZdS�)r���c�������������C���s���t�|j||||��d�S�)N)r���ro���)r���r����rc���r����r����r����rL���rL���rM���r�������s����z*HTTPDefaultErrorHandler.http_error_defaultN)r����r����r����r����rL���rL���rL���rM���r������s���c���������������@���s4���e�Zd�ZdZdZdd��Zdd��Ze�Z�ZZ dZ dS�) r�������� ���c������� ���������st���|����}|dkr|dks:|dkr(|dks:t|j||||��|�dd�}d����fdd �|j���D��}t|||jd d�S�)N)i-��i.��i/��i3��)r����ZHEAD)i-��i.��i/��r����� z%20)zcontent-lengthzcontent-typec����������������s"���i�|�]\}}|������kr||�qS�rL���)rs���)�.0�k�v)�CONTENT_HEADERSrL���rM���� <dictcomp>���s����z8HTTPRedirectHandler.redirect_request.<locals>.<dictcomp>T)rd���r|���r}���)r����r���ro����replacerd���rz���r���r|���) r���r����rc���r����r����rd����newurl�mZ newheadersrL���)r����rM���r�������s���� z$HTTPRedirectHandler.redirect_requestc������� ������C���sL��d|kr|d�}nd|kr$|d�}nd�S�t�|�}|jdkrRt||d||f�||��|jsn|jrnt|�}d|d<�t|�}t|dtj d�}t |j|�}|��||||||�}|d�kr�d�S�t |d ��r|j�} |_| �|d �|�jks�t| �|�jk�rt|j||�j|�||��ni��} �|_|_| �|d �d�| |<�|����|����|�jj||jd�S�) N�location�uri)r����r�����ftprm���z+%s - Redirection to url '%s' is not allowed�/r:���z iso-8859-1)�encoding�safe� redirect_dictr���rR���)rJ���)r����schemer���rW���Znetlocr����r���r ����stringZpunctuationr���ro���r����r����r����r�����max_repeatsr_����max_redirections�inf_msgr^���r����r����rG���rJ���) r���r����rc���r����r����rd���r�����urlparts�newZvisitedrL���rL���rM����http_error_302���s@���� z"HTTPRedirectHandler.http_error_302zoThe HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: N)r����r����r����r����r����r����r���http_error_301�http_error_303�http_error_307r����rL���rL���rL���rM���r������s���&<c������� ������C���s����t�|��\}}|�d�s d�}|�}n:|�d�s6td|����|�dd�}|dkrNd�}|d|��}t|�\}}|d�k r|t|�\}}nd��}}||||fS�)Nr����z//zproxy URL with no authority: %rr:���rQ���)r���r����rB���r����r���r���) �proxyr����Zr_scheme� authority�endZuserinfo�hostport�user�passwordrL���rL���rM����_parse_proxy���s���� r��c���������������@���s"���e�Zd�ZdZddd�Zdd��ZdS�)r����d���Nc�������������C���sL���|d�krt���}||�_x2|���D�]&\}}t|�d|�|||�jfdd���qW�d�S�)Nz%s_openc�������������S���s���||�||�S�)NrL���)�rr��r����r����rL���rL���rM����<lambda>$��s����z'ProxyHandler.__init__.<locals>.<lambda>)r5����proxiesrz����setattrr����)r���r��r����rH���rL���rL���rM���r������s���� zProxyHandler.__init__c�������������C���s����|j�}t|�\}}}}|d�kr"|}|jr6t|j�r6d�S�|rv|rvdt|�t|�f�} t�| �����d�} |� dd| ���t|�}|� ||��||ks�|dkr�d�S�|�jj||j d�S�d�S�)Nz%s:%s�asciizProxy-authorizationzBasic r����)rJ���)r����r��ru����proxy_bypassr ����base64� b64encode�encode�decoder{���r����r����rG���rJ���)r���r����r��r����Z orig_typeZ proxy_typer ��r��r ��Z user_passZcredsrL���rL���rM���r����'��s ����zProxyHandler.proxy_open)N)r����r����r����r����r����r����rL���rL���rL���rM���r�����s��� c���������������@���s6���e�Zd�Zdd��Zdd��Zdd��Zd dd �Zd d��ZdS�)r ���c�������������C���s ���i�|�_�d�S�)N)�passwd)r���rL���rL���rM���r����E��s����zHTTPPasswordMgr.__init__c����������������s`���t�|t�r|g}|�jkr$i��j|<�x6dD�].��t���fdd�|D���}||f�j|�|<�q*W�d�S�)N)TFc�������������3���s���|�]}���|���V��qd�S�)N)� reduce_uri)r�����u)�default_portr���rL���rM���� <genexpr>P��s����z/HTTPPasswordMgr.add_password.<locals>.<genexpr>)r����r����r���tuple)r����realmr����r ��r���reduced_urirL���)r��r���rM����add_passwordH��s���� zHTTPPasswordMgr.add_passwordc������� ������C���s`���|�j��|i��}xLdD�]D}|��||�}x2|���D�]&\}}x|D�]}|��||�r<|S�q<W�q.W�qW�dS�)N)TF)NN)r��r����r��rz���� is_suburi) r���r���authuriZdomainsr���reduced_authuriZurisZauthinfor����rL���rL���rM����find_user_passwordS��s���� z"HTTPPasswordMgr.find_user_passwordTc������� ������C���s����t�|�}|d�r.|d�}|d�}|d�p*d}nd�}|}d}t|�\}}|r~|d�kr~|d�k r~ddd��|�} | d�k r~d|| f�}||fS�) NrR���r���r:���r�����P���i���)r����r����z%s:%d)r���r ���r����) r���r����r���partsr����r��rW���ru����portZdportrL���rL���rM���r��]��s ����zHTTPPasswordMgr.reduce_uric�������������C���sN���||krdS�|d�|d�kr dS�|d�}|dd���dkr@|d7�}|d���|�S�)NTr���FrR���rQ���r����)r����)r����base�test�prefixrL���rL���rM���r!��t��s����zHTTPPasswordMgr.is_suburiN)T)r����r����r����r����r ��r$��r��r!��rL���rL���rL���rM���r ���C��s ��� c���������������@���s���e�Zd�Zdd��ZdS�)r!���c�������������C���s0���t��|�||�\}}|d�k r"||fS�t��|�d�|�S�)N)r ���r$��)r���r��r"��r ��r��rL���rL���rM���r$�����s ���� z2HTTPPasswordMgrWithDefaultRealm.find_user_passwordN)r����r����r����r$��rL���rL���rL���rM���r!������s���c�������������������s<���e�Zd�Z��fdd�Zd ��fdd� Zddd�Zdd ��Z���ZS�)r"���c����������������s���i�|�_�t��j||��d�S�)N)� authenticated�superr����)r���r�����kwargs)� __class__rL���rM���r�������s����z%HTTPPasswordMgrWithPriorAuth.__init__Fc����������������s<���|���||��|d�k r&t���d�|||��t���||||��d�S�)N)�update_authenticatedr,��r ��)r���r��r����r ��r���is_authenticated)r.��rL���rM���r �����s����z)HTTPPasswordMgrWithPriorAuth.add_passwordc�������������C���sF���t�|t�r|g}x0dD�](}x"|D�]}|��||�}||�j|<�q W�qW�d�S�)N)TF)r����r����r��r+��)r���r����r0��r��r��r��rL���rL���rM���r/�����s���� z1HTTPPasswordMgrWithPriorAuth.update_authenticatedc�������������C���sD���x>dD�]6}|���||�}x$|�jD�]}|��||�r|�j|�S�qW�qW�d�S�)N)TF)r��r+��r!��)r���r"��r��r#��r����rL���rL���rM���r0�����s ���� z-HTTPPasswordMgrWithPriorAuth.is_authenticated)F)F)r����r����r����r����r ��r/��r0��� __classcell__rL���rL���)r.��rM���r"������s��� c���������������@���sT���e�Zd�Ze�dej�Zddd�Zdd��Zdd��Z d d ��Z dd��Zd d��ZeZ eZdS�)r#���z1(?:^|,)[ ]*([^ ,]+)[ ]+realm=(["']?)([^"']*)\2Nc�������������C���s"���|d�krt���}||�_|�jj|�_d�S�)N)r ���r��r ��)r���Zpassword_mgrrL���rL���rM���r�������s����z!AbstractBasicAuthHandler.__init__c�������������c���st���d}xFt�j�|�D�]6}|���\}}}|dkr:t�dtd��||fV��d}qW�|sp|rb|���d�}nd}|d�fV��d�S�)NF)�"�'zBasic Auth Realm was unquoted����Tr���rm���)r#����rx�finditer�groupsr?���r@����UserWarning�split)r����headerZfound_challenge�mor����r ���r��rL���rL���rM����_parse_realm���s���� z%AbstractBasicAuthHandler._parse_realmc������� ������C���s~���|��|�}|sd�S�d�}xL|D�]D}x>|��|�D�]0\}}|���dkrF|}q,|d�k r,|��|||�S�q,W�qW�|d�k rztd|f���d�S�)N�basiczBAbstractBasicAuthHandler does not support the following scheme: %r)Zget_allr<��rs����retry_http_basic_authrB���) r����authreqru���r����rd���Zunsupportedr:��r����r��rL���rL���rM����http_error_auth_reqed���s���� z.AbstractBasicAuthHandler.http_error_auth_reqedc�������������C���s|���|�j��||�\}}|d�k rtd||f�}dt�|�����d��}|�|�jd��|krTd�S�|�|�j|��|�j j ||jd�S�d�S�d�S�)Nz%s:%szBasic r��)rJ���)r��r$��r��r��r��r��rp����auth_headerr����r����rG���rJ���)r���ru���r����r��r ���pw�raw�authrL���rL���rM���r>�����s����z.AbstractBasicAuthHandler.retry_http_basic_authc�������������C���st���t�|�jd�r|�j�|j�s|S�|�d�sp|�j�d�|j�\}}d�||����}t� |�� ��}|�dd�|������|S�)Nr0��� Authorizationz{0}:{1}zBasic {}) r����r��r0��ro���r����r$��r����r��r��Zstandard_b64encoder��r�����strip)r���r����r ��r��ZcredentialsZauth_strrL���rL���rM����http_request��s���� z%AbstractBasicAuthHandler.http_requestc�������������C���sL���t�|�jd�rHd|j��kr"dk�r8n�n|�j�|jd��n|�j�|jd��|S�)Nr0��r����i,��TF)r����r��r����r/��ro���)r���r����r����rL���rL���rM���r������s ����z&AbstractBasicAuthHandler.http_response)N)r����r����r�����re�compile�Ir5��r����r<��r@��r>��rG��r����� https_requestr����rL���rL���rL���rM���r#������s��� c���������������@���s���e�Zd�ZdZdd��ZdS�)r$���rE��c�������������C���s���|j�}|��d|||�}|S�)Nzwww-authenticate)ro���r@��)r���r����rc���r����r����rd���rH���r����rL���rL���rM����http_error_401��s���� z#HTTPBasicAuthHandler.http_error_401N)r����r����r����rA��rL��rL���rL���rL���rM���r$�����s���c���������������@���s���e�Zd�ZdZdd��ZdS�)r%���zProxy-authorizationc�������������C���s���|j�}|��d|||�}|S�)Nzproxy-authenticate)ru���r@��)r���r����rc���r����r����rd���r��r����rL���rL���rM����http_error_407*��s���� z$ProxyBasicAuthHandler.http_error_407N)r����r����r����rA��rM��rL���rL���rL���rM���r%���&��s���c���������������@���sN���e�Zd�Zddd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Zdd��Z dd��Z dS�)r&���Nc�������������C���s4���|d�krt���}||�_|�jj|�_d|�_d|�_d�|�_d�S�)Nr���)r ���r��r ���retried�nonce_count� last_nonce)r���r��rL���rL���rM���r����D��s���� z"AbstractDigestAuthHandler.__init__c�������������C���s ���d|�_�d�S�)Nr���)rN��)r���rL���rL���rM����reset_retry_countM��s����z+AbstractDigestAuthHandler.reset_retry_countc�������������C���s|���|��|d��}|�jdkr*t|jdd|d���n|��jd7��_|rx|���d�}|���dkr`|��||�S�|���dkrxtd|���d�S�) N����i���zdigest auth failedrR���r���Zdigestr=��zEAbstractDigestAuthHandler does not support the following scheme: '%s')r����rN��r���ro���r9��rs����retry_http_digest_authrB���)r���rA��ru���r����rd���r?��r����rL���rL���rM���r@��P��s���� z/AbstractDigestAuthHandler.http_error_auth_reqedc�������������C���sz���|��dd�\}}ttd�t|���}|��||�}|rvd|�}|j�|�jd��|krRd�S�|�|�j|��|�j j ||jd�}|S�d�S�)Nr����rR���z Digest %s)rJ���)r9���parse_keqv_list�filter�parse_http_list�get_authorizationrd���r����rA��r����r����rG���rJ���)r���r����rD���tokenZ challenge�chalZauth_valZresprL���rL���rM���rS��d��s����z0AbstractDigestAuthHandler.retry_http_digest_authc�������������C���s@���d|�j�|t���f�}|�d�td��}t�|����}|d�d��S�)Nz %s:%s:%s:r����������)rO���timeZctimer���_randombytes�hashlib�sha1� hexdigest)r����nonce�s�b�digrL���rL���rM���� get_cnoncep��s����z$AbstractDigestAuthHandler.get_cnoncec�������������C���s���y6|d�}|d�}|��d�}|��dd�}|��dd��}W�n�tk rJ���d�S�X�|��|�\}} |d�krfd�S�|�j�||j�\} }| d�kr�d�S�|jd�k r�|��|j|�}nd�}d| ||f�} d|���|j f�}|d�kr�| || �d|||�f��}n~d |� d �k�rZ||�jk�r|��jd7��_nd|�_||�_d|�j�}|�� |�}d |||d ||�f�}| || �|�}ntd|���d| |||j |f�}|�r�|d|�7�}|�r�|d|�7�}|d|�7�}|�r�|d||f�7�}|S�)Nr��ra���qop� algorithm�MD5�opaquez%s:%s:%sz%s:%srD���,rR���z%08xz%s:%s:%s:%s:%szqop '%s' is not supported.z>username="%s", realm="%s", nonce="%s", uri="%s", response="%s"z , opaque="%s"z , digest="%s"z, algorithm="%s"z, qop=auth, nc=%s, cnonce="%s")r�����KeyError�get_algorithm_implsr��r$��ro���rI����get_entity_digestr����r����r9��rP��rO��re��r���)r���r����rY��r��ra��rf��rg��ri���H�KDr ��rB��ZentdigZA1ZA2ZrespdigZncvalueZcnonceZnoncebitr(��rL���rL���rM���rW��{��sV���� z+AbstractDigestAuthHandler.get_authorizationc����������������sD���|dkrdd����n|dkr$dd����nt�d|�����fdd�}��|fS�)Nrh��c�������������S���s���t��|��d�����S�)Nr��)r^��Zmd5r��r`��)�xrL���rL���rM���r����������z?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>ZSHAc�������������S���s���t��|��d�����S�)Nr��)r^��r_��r��r`��)rp��rL���rL���rM���r�����rq��z.Unsupported digest authentication algorithm %rc����������������s�����d|�|f��S�)Nz%s:%srL���)rb���d)rn��rL���rM���r�����rq��)rB���)r���rg��ro��rL���)rn��rM���rl�����s���� z-AbstractDigestAuthHandler.get_algorithm_implsc�������������C���s���d�S�)NrL���)r���rI���rY��rL���rL���rM���rm�����s����z+AbstractDigestAuthHandler.get_entity_digest)N)r����r����r����r����rQ��r@��rS��re��rW��rl��rm��rL���rL���rL���rM���r&���9��s��� > c���������������@���s���e�Zd�ZdZdZdd��ZdS�)r'���rE��i���c�������������C���s*���t�|j�d�}|��d|||�}|�����|S�)NrR���zwww-authenticate)r���ro���r@��rQ��)r���r����rc���r����r����rd���ru����retryrL���rL���rM���rL�����s ���� z$HTTPDigestAuthHandler.http_error_401N)r����r����r����rA��r����rL��rL���rL���rL���rM���r'������s���c���������������@���s���e�Zd�ZdZdZdd��ZdS�)r(���zProxy-Authorizationi���c�������������C���s"���|j�}|��d|||�}|�����|S�)Nzproxy-authenticate)ru���r@��rQ��)r���r����rc���r����r����rd���ru���rs��rL���rL���rM���rM�����s ���� z%ProxyDigestAuthHandler.http_error_407N)r����r����r����rA��r����rM��rL���rL���rL���rM���r(������s���c���������������@���s6���e�Zd�Zd dd�Zdd��Zdd��Zdd ��Zd d��ZdS�)�AbstractHTTPHandlerr���c�������������C���s ���||�_�d�S�)N)�_debuglevel)r���� debuglevelrL���rL���rM���r�������s����zAbstractHTTPHandler.__init__c�������������C���s ���||�_�d�S�)N)ru��)r����levelrL���rL���rM����set_http_debuglevel���s����z'AbstractHTTPHandler.set_http_debuglevelc�������������C���s���t�jj�|j|����S�)N)r����r�����HTTPConnection�_get_content_lengthrI���r����)r���rt���rL���rL���rM���rz�����s����z'AbstractHTTPHandler._get_content_lengthc�������������C���s��|j�}|std��|jd�k r�|j}t|t�r8d}t|��|�d�sN|�dd��|�d�s�|�d�s�|��|�}|d�k r�|�dt|���n|�dd��|}|� ��r�t |j�\}}t|�\}} |�d�s�|�d|��x2|�j jD�]&\} }| ���} |�| �s�|�| |��q�W�|S�) Nz no host givenz\POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.zContent-typez!application/x-www-form-urlencodedzContent-lengthzTransfer-encodingZchunkedrn���)ru���r���rI���r����r����r����r����r����rz��r����r���r����r���r����r����r����)r���rt���ru���rI���r����Zcontent_lengthZsel_hostr����ZselZsel_pathrZ���r����rL���rL���rM����do_request_���s>���� zAbstractHTTPHandler.do_request_c������� ��� ������sT��|j�}|std��||fd|ji|��}|�|�j��t|j��������fdd�|j� ��D����d��d<�dd����� ��D����|j r�i�}d}|��kr���|�||<���|=�|j|j |d ��y`y&|j|� ��|j|j��|�d �d��W�n,�tk �r�}�zt|��W�d�d�}~X�Y�nX�|���} W�n���|������Y�nX�|j�r>|j����d�|_|���| _| j| _| S�)Nz no host givenrJ���c����������������s���i�|�]\}}|��kr||�qS�rL���rL���)r����r����r����)rd���rL���rM���r����*��s����z/AbstractHTTPHandler.do_open.<locals>.<dictcomp>r����� Connectionc�������������S���s���i�|�]\}}||�����qS�rL���)�title)r����rZ���r����rL���rL���rM���r����7��s����zProxy-Authorization)rd���zTransfer-encoding)Zencode_chunked)ru���r���rJ���Zset_debuglevelru��r����rw���r����rd���rz���ry���Z set_tunnelrt���r����r����rI���r����rl����getresponser����Zsockr����rH����reasonr����) r���Z http_classr����Zhttp_conn_argsru���r����Ztunnel_headersZproxy_auth_hdr�errr��rL���)rd���rM���r������s@���� zAbstractHTTPHandler.do_openN)r���)r����r����r����r����rx��rz��r{��r����rL���rL���rL���rM���rt�����s ��� &rt��c���������������@���s���e�Zd�Zdd��ZejZdS�)r)���c�������������C���s���|���tjj|�S�)N)r����r����r����ry��)r���r����rL���rL���rM���� http_opena��s����zHTTPHandler.http_openN)r����r����r����r���rt��r{��rG��rL���rL���rL���rM���r)���_��s���r����c���������������@���s$���e�Zd�Zddd�Zdd��ZejZdS�)rE���r���Nc�������������C���s���t��|�|��||�_||�_d�S�)N)rt��r�����_context�_check_hostname)r���rv��r>����check_hostnamerL���rL���rM���r����j��s����zHTTPSHandler.__init__c�������������C���s���|�j�tjj||�j|�jd�S�)N)r>���r���)r����r����r����r����r���r���)r���r����rL���rL���rM���� https_openo��s����zHTTPSHandler.https_open)r���NN)r����r����r����r����r���rt��r{��rK��rL���rL���rL���rM���rE���h��s��� rE���c���������������@���s.���e�Zd�Zddd�Zdd��Zdd��ZeZeZdS�) r���Nc�������������C���s$���dd�l�}|d�kr|j���}||�_d�S�)Nr���)Zhttp.cookiejar� cookiejarZ CookieJar)r���r���r����rL���rL���rM���r����x��s���� zHTTPCookieProcessor.__init__c�������������C���s���|�j��|��|S�)N)r���Zadd_cookie_header)r���rt���rL���rL���rM���rG��~��s����z HTTPCookieProcessor.http_requestc�������������C���s���|�j��||��|S�)N)r���Zextract_cookies)r���rt���r����rL���rL���rM���r�������s����z!HTTPCookieProcessor.http_response)N)r����r����r����r����rG��r����rK��r����rL���rL���rL���rM���r���w��s ��� c���������������@���s���e�Zd�Zdd��ZdS�)r.���c�������������C���s���|j�}td|���d�S�)Nzunknown url type: %s)r����r���)r���r����r����rL���rL���rM���r�������s����zUnknownHandler.unknown_openN)r����r����r����r����rL���rL���rL���rM���r.������s���c�������������C���sR���i�}xH|�D�]@}|��dd�\}}|d�dkrB|d�dkrB|dd��}|||<�q W�|S�)N�=rR���r���r2��rQ���)r9��)�lZparsedZeltr����r����rL���rL���rM���rT�����s���� rT��c�������������C���s����g�}d}d�}}xt|�D�]l}|r,||7�}d}q|rV|dkr@d}qn|dkrLd}||7�}q|dkrn|��|��d}q|dkrzd}||7�}qW�|r�|��|��dd��|D��S�) Nrm���F�\Tr2��rj��c�������������S���s���g�|�]}|�����qS�rL���)rF��)r�����partrL���rL���rM���� <listcomp>���s����z#parse_http_list.<locals>.<listcomp>)r\���)rb��Zresr����escaper ���ZcurrL���rL���rM���rV�����s4���� rV��c���������������@���s(���e�Zd�Zdd��ZdZdd��Zdd��ZdS�)r*���c�������������C���s\���|j�}|d�d��dkrN|dd��dkrN|jrN|jdkrN|j|����krXtd��n |��|�S�d�S�)Nr:���z//r4��r����� localhostz-file:// scheme is supported only on localhost)r����ru���� get_namesr����open_local_file)r���r����rH���rL���rL���rM���� file_open���s����& zFileHandler.file_openNc�������������C���s`���t�jd�krZy*tt�d�d�t�t����d���t�_W�n$�tjk rX���t�d�ft�_Y�nX�t�jS�)Nr���r:���)r*����namesr��r�����gethostbyname_ex�gethostname�gaierror� gethostbyname)r���rL���rL���rM���r������s���� zFileHandler.get_namesc���������� ���C���s����dd�l�}dd�l}|j}|j}t|�}y�t�|�}|j}|jj |j dd�} |�|�d�} |�d| pbd|| f��}|r~t |�\}}|r�|s�t|�|����kr�|r�d|�|�} nd|�} tt|d�|| �S�W�n*�tk r��}�zt|��W�d�d�}~X�Y�nX�td��d�S�) Nr���T)�usegmtz6Content-type: %s Content-length: %d Last-modified: %s z text/plainzfile://�rbzfile not on local host)�email.utils� mimetypesru���r����r4���rV����stat�st_size�utils� formatdate�st_mtime� guess_type�message_from_stringr ����_safe_gethostbynamer���r���rG���rl���r���)r���r�����emailr���ru���ra���Z localfile�statsrh����modified�mtyperd���r'��Zorigurl�exprL���rL���rM���r������s0���� zFileHandler.open_local_file)r����r����r����r���r���r���r���rL���rL���rL���rM���r*������s��� c�������������C���s&���y t��|��S��t�jk r ���d�S�X�d�S�)N)r����r���r���)ru���rL���rL���rM���r������s���� r���c���������������@���s���e�Zd�Zdd��Zdd��ZdS�)r+���c���������� ���C���s,��dd�l�}dd�l}|j}|s"td��t|�\}}|d�kr>|j}nt|�}t|�\}}|rdt|�\}}nd�}t |�}|pvd}|p~d}yt �|�}W�n*�tk r��}�zt|��W�d�d�}~X�Y�nX�t |j�\} } | �d�}ttt |��}|d�d��|d��}}|�r|d��s|dd���}y�|��||||||j�} |�r6d�p8d}x:| D�]2}t|�\}}|���d k�r@|d k�r@|���}�q@W�| �||�\}}d}|�|j�d�}|�r�|d|�7�}|d�k �r�|dk�r�|d|�7�}t�|�}t|||j�S��|jk �r&�}�z"td |��}|�t� ��d���W�d�d�}~X�Y�nX�d�S�)Nr���zftp error: no host givenrm���r����rQ���rR���rJ���Dr����)�a�Ar����rJ��rr��r���zContent-type: %s zContent-length: %d z ftp error: %rr:���)!�ftplibr���ru���r���r ����FTP_PORTr]���r���r���r ���r����r���rl���r���r����r9��r�����map�connect_ftprJ���r���rs����upper�retrfiler���ro���r���r���r���� all_errors�with_traceback�sys�exc_info)r���r����r���r���ru���r'��r ��r��r����rW����attrs�dirsrN����fwr�����attrr����rc����retrlenrd���r���r����excrL���rL���rM����ftp_open���s\���� zFTPHandler.ftp_openc���������� ���C���s���t�||||||dd�S�)NF)� persistent)� ftpwrapper)r���r ��r��ru���r'��r���rJ���rL���rL���rM���r���2��s����zFTPHandler.connect_ftpN)r����r����r����r���r���rL���rL���rL���rM���r+������s���5c���������������@���s<���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zdd��Zd S�)r,���c�������������C���s"���i�|�_�i�|�_d|�_d|�_d|�_d�S�)Nr����<���r[��)�cacherJ����soonest�delay� max_conns)r���rL���rL���rM���r����9��s ����zCacheFTPHandler.__init__c�������������C���s ���||�_�d�S�)N)r���)r����trL���rL���rM���� setTimeout@��s����zCacheFTPHandler.setTimeoutc�������������C���s ���||�_�d�S�)N)r���)r���r����rL���rL���rM����setMaxConnsC��s����zCacheFTPHandler.setMaxConnsc�������������C���sr���|||d��|�|f}||�jkr4t���|�j�|�j|<�n,t||||||�|�j|<�t���|�j�|�j|<�|�����|�j|�S�)Nr����)�joinr���r\��r���rJ���r����check_cache)r���r ��r��ru���r'��r���rJ���r����rL���rL���rM���r���F��s���� zCacheFTPHandler.connect_ftpc�������������C���s����t�����}|�j|krTx@t|�j����D�].\}}||k�r"|�j|�����|�j|=�|�j|=�q"W�tt|�j�����|�_t |�j�|�j kr�x6t|�j����D�]$\}}||�jkr�|�j|=�|�j|=�P�q�W�tt|�j�����|�_d�S�)N)r\��r���r����rJ���rz���r���r�����min�valuesr_���r���)r���r���r����r����rL���rL���rM���r���Q��s���� zCacheFTPHandler.check_cachec�������������C���s4���x|�j����D�]}|����qW�|�j�����|�j����d�S�)N)r���r���r�����clearrJ���)r����connrL���rL���rM����clear_cachee��s���� zCacheFTPHandler.clear_cacheN) r����r����r����r����r���r���r���r���r���rL���rL���rL���rM���r,���6��s���c���������������@���s���e�Zd�Zdd��ZdS�)r-���c�������������C���s~���|j�}|�dd�\}}|�dd�\}}t|�}|�d�rNt�|�}|d�d��}|sVd}t�d|t|�f��}t t �|�||�S�)N�:rR���rj��z;base64i����ztext/plain;charset=US-ASCIIz$Content-type: %s Content-length: %d )ro���r9��r����endswithr���decodebytesr���r���r_���r����io�BytesIO)r���r����rH���r����rI���Z mediatyperd���rL���rL���rM���� data_openl��s���� zDataHandler.data_openN)r����r����r����r���rL���rL���rL���rM���r-���k��s���r�����nt)r4���r3���c�������������C���s���t�|��S�)N)r ���)�pathnamerL���rL���rM���r4������s����c�������������C���s���t�|��S�)N)r ���)r���rL���rL���rM���r3������s����c���������������@���s����e�Zd�ZdZde�Zd)dd�Zdd��Zdd��Zd d ��Z dd��Z d*d d�Zd+dd�Zd,dd�Z d-dd�Zdd��Zd.dd�Zd/dd�Zdd��Zer�dd��Zd0dd �Zd!d"��Zd#d$��Zd%d&��Zd1d'd(�ZdS�)2r8���NzPython-urllib/%sc�������������K���sz���dd|�j�ji�}tj|tdd��|d�kr.t��}||�_|�d�|�_|�d�|�_ d|�j fdg|�_g�|�_t j|�_d�|�_t|�_d�S�) NzW%(class)s style of invoking requests is deprecated. Use newer urlopen functions/methods�classr4��)� stacklevel�key_file� cert_filez User-Agent)ZAcceptz*/*)r.��r����r?���r@���rA���r5���r��r����r���r����versionr�����_URLopener__tempfilesrV���rk����_URLopener__unlink� tempcache�ftpcache)r���r��Zx509r����rL���rL���rM���r�������s����zURLopener.__init__c�������������C���s���|������d�S�)N)r����)r���rL���rL���rM����__del__���s����zURLopener.__del__c�������������C���s���|������d�S�)N)�cleanup)r���rL���rL���rM���r�������s����zURLopener.closec���������� ���C���sZ���|�j�rFx2|�j�D�](}y|��|��W�q�tk r4���Y�qX�qW�|�j�d�d��=�|�jrV|�j����d�S�)N)r���r���rl���r���r���)r���rN���rL���rL���rM���r������s���� zURLopener.cleanupc�������������G���s���|�j��|��d�S�)N)r����r\���)r���r����rL���rL���rM���� addheader���s����zURLopener.addheaderc���������� ���C���sl��t�t|��}t|dd�}|�jrL||�jkrL|�j|�\}}t|d�}t|||�S�t|�\}}|s`d}||�jkr�|�j|�}t|�\}} t| �\} }| |f}nd�}d|�}||�_ |� dd�}t|�|�r�|dkr�|r�|��|||�S�|�� ||�S�y,|d�k��r�t|�|�|�S�t|�|�||�S�W�nV�ttfk �r,�����Y�n<�tk �rf�} �ztd | ��t���d ���W�d�d�} ~ X�Y�nX�d�S�)Nz%/:=&?~#+!$,;'@()*[]|)r����r���rN���Zopen_�-r����r���zsocket errorr:���)r���r���r ���r���rG���r���r���r��r���r����r����r�����open_unknown_proxy�open_unknownr����r���r���rl���r���r���r���)r���r����rI���ra���rd���rc����urltyperH���r��� proxyhostru���r����rZ���r����rL���rL���rM���rG������s<���� zURLopener.openc�������������C���s���t�|�\}}tdd|��d�S�)Nz url errorzunknown url type)r���rl���)r���r����rI���r����rH���rL���rL���rM���r�����s����zURLopener.open_unknownc�������������C���s ���t�|�\}}tdd|�|��d�S�)Nz url errorzinvalid proxy for %s)r���rl���)r���r��r����rI���r����rH���rL���rL���rM���r��� ��s����zURLopener.open_unknown_proxyc���������� ���C���s��t�t|��}|�jr&||�jkr&|�j|�S�t|�\}}|d�kr�|rF|dkr�y.|��|�}|���}|����tt|�d��|fS��t k r��} �zW�d�d�} ~ X�Y�nX�|�� ||�}�z>|���} |r�t |d�}nrt|�\}} t| p�d�\}} t| p�d�\} }t| p�d�\} }t j�| �d�}t�|�\}}|�j�|��t �|d�}z�|| f}|�jd�k �rR||�j|<�d}d}d}d}d| k�rxt| d ��}|�r�||||��xH|�|�}|�s�P�|t|�7�}|�|��|d7�}|�r�||||���q�W�W�d�|����X�W�d�|����X�|dk�r||k��rtd ||f�|��|S�)NrN���rR���rO���rm���i� ��rQ���r���zcontent-lengthzContent-Lengthz1retrieval incomplete: got only %i out of %i bytes)r���r���r���r���r���rU���r����r4���r���rl���rG���r���r���rV���rW����splitextrY���Zmkstempr���r\����fdopenr]���r^���r_���r`���r���)r���rH���ra���rb���rI���r����Zurl1rc���r����r����rd���re���ZgarbagerW����suffix�fdrf���rg���rh���r^���ri���rj���rL���rL���rM����retrieve��sj���� zURLopener.retrievec�������������C���s(��d�}d�}t�|t�r<t|�\}}|r6t|�\}}t|�}|}nt|\}}t|�\}}t|�\} } | }d�}| ���dkrvd�}n:t| �\}} |r�t|�\}}|r�d| || f�}t|�r�|}|s�tdd��|r�t|�}t � |�����d�}nd�}|�rt|�}t � |�����d�}nd�}||�} i�}|�r*d|�|d<�|�r<d|�|d<�|�rJ||d <�d |d<�x|�j D�]\}}|||<��qZW�|d�k �r�d|d <�| �d|||��n| jd||d��y| ���}W�n"�tjjk �r����td��Y�nX�d|j��k�r�dk��rn�nt||jd|�|j�S�|��||j|j|j|j|�S�d�S�)Nr����z %s://%s%sz http errorz no host givenr��zBasic %szProxy-AuthorizationrE��rn���r����r|��z!application/x-www-form-urlencodedzContent-Typer����r����)rd���z$http protocol error: bad status liner����i,��zhttp:)r����r����r���r���r ���r���rs���r��rl���r��r��r��r��r����rt���r~��r����r����Z BadStatusLiner����statusr���r����� http_errorrc���r��)r���Zconnection_factoryrH���rI���Zuser_passwdZproxy_passwdru���r����Zrealhostr���r����Z proxy_authrD��Z http_connrd���r:��r����r����rL���rL���rM����_open_generic_httpQ��sr���� � zURLopener._open_generic_httpc�������������C���s���|���tjj||�S�)N)r���r����r����ry��)r���rH���rI���rL���rL���rM���� open_http���s����zURLopener.open_httpc������� ������C���sb���d|�}t�|�|�rPt|�|�}|d�kr6||||||�} n|||||||�} | rP| S�|��|||||�S�)Nz http_error_%d)r����r����r����) r���rH���rc����errcode�errmsgrd���rI���rZ���r~���rf���rL���rL���rM���r������s���� �zURLopener.http_errorc�������������C���s���|�����t||||d���d�S�)N)r����r���)r���rH���rc���r���r���rd���rL���rL���rM���r�������s����zURLopener.http_error_defaultc�������������C���s���t�jj||�j|�jd�S�)N)r���r���)r����r����r����r���r���)r���ru���rL���rL���rM����_https_connection���s����zURLopener._https_connectionc�������������C���s���|���|�j||�S�)N)r���r���)r���rH���rI���rL���rL���rM���� open_https���s����zURLopener.open_httpsc�������������C���s^���t�|t�std��|d�d��dkrP|dd��dkrP|dd�����dkrPtd��n |��|�S�d�S�) NzEfile error: proxy support for file protocol currently not implementedr:���z//r4��r��������z localhost/z-file:// scheme is supported only on localhost)r����r����r���rs���rB���r���)r���rH���rL���rL���rM���� open_file���s ���� 4 zURLopener.open_filec���������� ���C���s\��dd�l�}dd�l}t|�\}}t|�}yt�|�}W�n0�tk rb�}�zt|j|j ��W�d�d�}~X�Y�nX�|j } |jj|j dd�} |�|�d�}|�d|p�d| | f��}|s�|} |d�d��dkr�d|�} tt|d �|| �S�t|�\}}|�sPt�|�t��ft���k�rP|} |d�d��dk�r d|�} n|d�d ��dk�r>td|���tt|d �|| �S�td ��d�S�)Nr���T)r���z6Content-Type: %s Content-Length: %d Last-modified: %s z text/plainrR���r����zfile://r���r:���z./zAlocal file url may start with / or file:. Unknown url of type: %sz#local file error: not on local host)r���r���r���r4���rV���r���rl���r����strerrorra���r���r���r���r���r���r���r���rG���r ���r����r���r����thishostrB���)r���rH���r���r���ru���rN���Z localnamer����erh���r���r���rd���Zurlfiler'��rL���rL���rM���r������s:���� zURLopener.open_local_filec���������� ���C���s���t�|t�std��dd�l}t|�\}}|s2td��t|�\}}t|�\}}|r\t|�\}}nd�}t|�}t|ppd�}t|p|d�}t � |�}|s�dd�l}|j}nt |�}t|�\}} t|�}|�d�} | d�d��| d��} }| r�| d�s�| dd���} | �r | d��s d| d<�|||d�| �f}t|�j�tk�rfx8t|�j�D�]*} | |k�r8|�j| �}|�j| =�|�����q8W�y�||�jk�r�t||||| �|�j|<�|�s�d}nd }x:| D�]2}t|�\}}|���d k�r�|dk�r�|���}�q�W�|�j|��||�\}}|�d|��d�}d}|�r|d |�7�}|d�k �r4|dk�r4|d|�7�}t�|�}t||d|��S��t��k �r��}�ztd|��� t!�"��d���W�d�d�}~X�Y�nX�d�S�)NzCftp error: proxy support for ftp protocol currently not implementedr���zftp error: no host givenrm���r����rQ���rR���r���rJ��r����)r���r���r����rJ��rr��r���zftp:zContent-Type: %s zContent-Length: %d zftp error %rr:���)#r����r����r���r���r���r ���r���r���r ���r����r���r���r���r]���r���r9��r���r_���r����MAXFTPCACHEr����r����r���r���rs���r���r���r���r���r���r���� ftperrorsr���r���r���)r���rH���r���ru���rW���r'��r ��r��r���r���r���rN���r����r����r����r����r���r����rc���r���r���rd���r���rL���rL���rM����open_ftp���sp���� �� �� � zURLopener.open_ftpc������� ��� ���C���s<��t�|t�std��y|�dd�\}}W�n�tk rD���tdd��Y�nX�|sNd}|�d�}|dkr�d ||d���kr�||d�d���}|d�|��}nd }g�}|�dt� dt� t��������|�d |���|dkr�t�|� d���d�}nt|�}|�dt|����|�d ��|�|��d�|�}t�|�}t�|�}t|||�S�)NzEdata error: proxy support for data protocol currently not implementedrj��rR���z data errorzbad data URLztext/plain;charset=US-ASCII�;r���r���rm���zDate: %sz%a, %d %b %Y %H:%M:%S GMTzContent-type: %sr��r��zlatin-1zContent-Length: %d� )r����r����r���r9��rB���rl����rfindr\���r\��ZstrftimeZgmtimer��r���r��r��r ���r_���r���r���r���r����StringIOr���) r���rH���rI���r����Zsemir����r����rd����frL���rL���rM���� open_data3��s6���� zURLopener.open_data)N)N)N)N)NNN)N)N)N)N)r����r����r����r���r����r���r����r���r����r���r���rG���r���r���r���r���r���r���r����rC���r���r���r���r���r���r���rL���rL���rL���rM���r8������s,��� $ A\ :c���������������@���s����e�Zd�Zdd��Zdd��Zd"dd�Zdd ��Zd#d d�Zd$dd �Zd%dd�Z d&dd�Z d'dd�Zd(dd�Zd)dd�Z d*dd�Zd+dd�Zd,dd�Zd d!��ZdS�)-r9���c�������������O���s(���t�j|�f|�|��i�|�_d|�_d|�_d�S�)Nr���r����)r8���r����� auth_cache�tries�maxtries)r���r����r-��rL���rL���rM���r����`��s����zFancyURLopener.__init__c�������������C���s���t�||d|�|�S�)Nzhttp:)r���)r���rH���rc���r���r���rd���rL���rL���rM���r����f��s����z!FancyURLopener.http_error_defaultNc������� ������C���sn���|��j�d7��_�zR|�jrJ|�j�|�jkrJt|�d�r4|�j}n|�j}|||dd|�S�|��||||||�}|S�d|�_�X�d�S�)NrR����http_error_500i���z)Internal Server Error: Redirect Recursionr���)r��r��r����r��r�����redirect_internal) r���rH���rc���r���r���rd���rI���r����rf���rL���rL���rM���r��j��s���� zFancyURLopener.http_error_302c������� ������C���sx���d|kr|d�}nd|kr$|d�}nd�S�|�����t|�jd�|�|�}t|�}|jdkrnt|||d|��||��|��|�S�)Nr����r����r���)r����r����r����rm���z( Redirection to url '%s' is not allowed.)r����r���r����r���r����r���rG���) r���rH���rc���r���r���rd���rI���r����r���rL���rL���rM���r��|��s���� z FancyURLopener.redirect_internalc�������������C���s���|���||||||�S�)N)r��)r���rH���rc���r���r���rd���rI���rL���rL���rM���r�����s����zFancyURLopener.http_error_301c�������������C���s���|���||||||�S�)N)r��)r���rH���rc���r���r���rd���rI���rL���rL���rM���r�����s����zFancyURLopener.http_error_303c�������������C���s2���|d�kr|���||||||�S�|��|||||�S�d�S�)N)r��r����)r���rH���rc���r���r���rd���rI���rL���rL���rM���r�����s����zFancyURLopener.http_error_307Fc������� ������C���s����d|krt��|�|||||��|d�}t�d|�} | sHt��|�|||||��| ���\} }| ���dkrtt��|�|||||��|s�t��|�|||||��d|�j�d�}|d�kr�t|�|�||�S�t|�|�|||�S�d�S�)Nzwww-authenticatez![ ]*([^ ]+)[ ]+realm="([^"]*)"r=��Zretry_�_basic_auth)r8���r����rH���matchr7��rs���r����r����) r���rH���rc���r���r���rd���rI���rs���stuffr��r����r��rZ���rL���rL���rM���rL�����s&���� zFancyURLopener.http_error_401c������� ������C���s����d|krt��|�|||||��|d�}t�d|�} | sHt��|�|||||��| ���\} }| ���dkrtt��|�|||||��|s�t��|�|||||��d|�j�d�}|d�kr�t|�|�||�S�t|�|�|||�S�d�S�)Nzproxy-authenticatez![ ]*([^ ]+)[ ]+realm="([^"]*)"r=��Zretry_proxy_r��)r8���r����rH��r��r7��rs���r����r����) r���rH���rc���r���r���rd���rI���rs��r��r��r����r��rZ���rL���rL���rM���rM�����s&���� zFancyURLopener.http_error_407c�������������C���s����t�|�\}}d|�|�}|�jd�}t|�\}} t�| �\} } | �d�d�}| |d���} |��| ||�\}} |sr| srd�S�dt|dd�t| dd�| f�} d| �| �|�jd<�|d�kr�|��|�S�|��||�S�d�S�)Nzhttp://r�����@rR���z%s:%s@%srm���)r����)r���r��r���r�����get_user_passwdr ���rG���)r���rH���r��rI���ru���r����r����r��r���r���� proxyselectorr����r ��r��rL���rL���rM����retry_proxy_http_basic_auth���s ���� � z*FancyURLopener.retry_proxy_http_basic_authc�������������C���s����t�|�\}}d|�|�}|�jd�}t|�\}} t�| �\} } | �d�d�}| |d���} |��| ||�\}} |sr| srd�S�dt|dd�t| dd�| f�} d| �| �|�jd<�|d�kr�|��|�S�|��||�S�d�S�)Nzhttps://r����r��rR���z%s:%s@%srm���)r����)r���r��r���r����r ��r ���rG���)r���rH���r��rI���ru���r����r����r��r���r���r ��r����r ��r��rL���rL���rM����retry_proxy_https_basic_auth���s ���� � z+FancyURLopener.retry_proxy_https_basic_authc������� ������C���s����t�|�\}}|�d�d�}||d���}|��|||�\}}|sD|sDd�S�dt|dd�t|dd�|f�}d|�|�} |d�kr�|��| �S�|��| |�S�d�S�)Nr��rR���z%s:%s@%srm���)r����zhttp://)r���r����r ��r ���rG���) r���rH���r��rI���ru���r����r����r ��r��r����rL���rL���rM���r>�����s����� z$FancyURLopener.retry_http_basic_authc������� ������C���s����t�|�\}}|�d�d�}||d���}|��|||�\}}|sD|sDd�S�dt|dd�t|dd�|f�}d|�|�} |d�kr�|��| �S�|��| |�S�d�S�)Nr��rR���z%s:%s@%srm���)r����zhttps://)r���r����r ��r ���rG���) r���rH���r��rI���ru���r����r����r ��r��r����rL���rL���rM����retry_https_basic_auth ��s����� z%FancyURLopener.retry_https_basic_authr���c�������������C���s`���|d�|�����}||�jkr2|r(|�j|=�n |�j|�S�|��||�\}}|sJ|rX||f|�j|<�||fS�)Nr��)rs���r����prompt_user_passwd)r���ru���r��r���r����r ��r��rL���rL���rM���r �� ��s���� �zFancyURLopener.get_user_passwdc�������������C���sT���dd�l�}y,td||f��}|��d|||f��}||fS��tk rN���t���dS�X�d�S�)Nr���zEnter username for %s at %s: z#Enter password for %s in %s at %s: )NN)�getpass�input�KeyboardInterrupt�print)r���ru���r��r��r ��r��rL���rL���rM���r��$ ��s����z!FancyURLopener.prompt_user_passwd)N)N)N)N)NF)NF)N)N)N)N)r���)r����r����r����r����r����r��r��r��r��r��rL��rM��r��r��r>��r ��r ��r��rL���rL���rL���rM���r9���]��s"��� � � c���������������C���s���t�d�krt�d�a�t�S�)Nr���)� _localhostr����r���rL���rL���rL���rM���r���4 ��s���� r���c���������������C���sP���t�d�krLytt�t����d��a�W�n(�tjk rJ���tt�d�d��a�Y�nX�t�S�)Nr:���r���)� _thishostr��r����r���r���r���rL���rL���rL���rM���r���< ��s����r���c��������������C���s���t�d�krdd�l}�|�ja�t�S�)Nr���)� _ftperrorsr���r���)r���rL���rL���rM���r���G ��s����r���c���������������C���s���t�d�krt�d�a�t�S�)Nrm���)� _noheadersr���r���rL���rL���rL���rM���� noheadersP ��s���� r��c���������������@���sF���e�Zd�Zddd�Zdd��Zdd��Zd d ��Zdd��Zd d��Zdd��Z dS�)r���NTc�������������C���sX���||�_�||�_||�_||�_||�_||�_d|�_||�_y|�����W�n���|�� �����Y�nX�d�S�)Nr���) r ��r��ru���r'��r���rJ����refcount� keepalive�initr����)r���r ��r��ru���r'��r���rJ���r���rL���rL���rM���r����] ��s����zftpwrapper.__init__c�������������C���s\���dd�l�}d|�_|���|�_|�j�|�j|�j|�j��|�j�|�j |�j ��d�|�j�}|�j� |��d�S�)Nr���r����)r����busyZFTPr����Zconnectru���r'��rJ���Zloginr ��r��r���r����cwd)r���r���Z_targetrL���rL���rM���r��m ��s���� zftpwrapper.initc���������� ���C���s���dd�l�}|�����|dkr"d}d}nd|�}d}y|�j�|��W�n*�|jk rh���|�����|�j�|��Y�nX�d�}|r�|s�yd|�}|�j�|�\}}W�nR�|jk r��}�z2t|�d�d��dkr�t d |��� t���d ���W�d�d�}~X�Y�nX�|�s�|�j�d��|�rl|�j� ��} zJy|�j�|��W�n4�|jk �rN�}�zt d |��|�W�d�d�}~X�Y�nX�W�d�|�j�| ��X�d|�}nd}|�j�|�\}}d|�_t|�d �|�j�} |��jd7��_|����| |fS�)Nr���)rr��r���zTYPE ArR���zTYPE zRETR r4��Z550z ftp error: %rr:���zLIST ZLISTr���)r����endtransferr����Zvoidcmdr���r��ZntransfercmdZ error_permr����r���r���r���r����pwdr��r��r���Zmakefile� file_closer��r����)r���rN���r����r����cmd�isdirr���r���r��r��ZftpobjrL���rL���rM���r���v ��sN������� $ zftpwrapper.retrfilec�������������C���s ���d|�_�d�S�)Nr���)r��)r���rL���rL���rM���r��� ��s����zftpwrapper.endtransferc�������������C���s���d|�_�|�jdkr|�����d�S�)NFr���)r��r��� real_close)r���rL���rL���rM���r����� ��s���� zftpwrapper.closec�������������C���s2���|������|��jd8��_|�jdkr.|�js.|�����d�S�)NrR���r���)r��r��r��r"��)r���rL���rL���rM���r��� ��s����zftpwrapper.file_closec�������������C���s2���|������y|�j����W�n�t��k r,���Y�nX�d�S�)N)r��r����r����r���)r���rL���rL���rM���r"��� ��s ����zftpwrapper.real_close)NT) r����r����r����r����r��r���r��r����r��r"��rL���rL���rL���rM���r���Z ��s���� -r���c��������������C���s����i�}�xBt�j���D�]4\}}|���}|r|dd���dkr||�|d�d��<�qW�dt�jkr^|��dd���xXt�j���D�]J\}}|dd���dkrj|���}|r�||�|d�d��<�qj|��|d�d��d���qjW�|�S�)Ni�����_proxyZREQUEST_METHODr����)rV����environrz���rs���r����)r��rZ���r����rL���rL���rM����getproxies_environment� ��s���� r%��c�������������C���s����|d�krt���}y|d�}W�n�tk r.���dS�X�|dkr<dS�|����}�t|��\}}xd|�d�D�]V}|���}|r\|�d�}|���}||ks�|�|kr�dS�d|�}|�|�s�|��|�r\dS�q\W�dS�)N�noF�*Trj���.)r%��rk��rs���r ���r9��rF���lstripr���)ru���r��Zno_proxy�hostonlyr'��rZ���rL���rL���rM����proxy_bypass_environment� ��s*���� r+��c���������� ���C���s��ddl�m�}�t|��\}}dd��}d|�kr4|d�r4dS�d�}x�|�dd �D�]�}|sPqFt�d |�}|d�k �r|d�kr�yt�|�}||�}W�n�tk r����wFY�nX�||�d��} |�d�} | d�kr�d |�d�� d�d��} nt | dd����} d| �} || ?�| | ?�k�rdS�qF||�|�rFdS�qFW�dS�)Nr���)�fnmatchc�������������S���sh���|���d�}ttt|��}t|�dkr<|ddddg�d�d��}|d�d>�|d�d>�B�|d�d>�B�|d �B�S�) Nr(��r����r�������rR���r[��r:���rZ��r4��)r9��r����r���r]���r_���)ZipAddrr&��rL���rL���rM����ip2num ��s ���� z,_proxy_bypass_macosx_sysconf.<locals>.ip2numr(��Zexclude_simpleT� exceptionsrL���z(\d+(?:\.\d+)*)(/\d+)?rR���r:���rZ��� ���F)r,��r ���r����rH��r��r����r���rl����group�countr]���)ru����proxy_settingsr,��r*��r'��r.��ZhostIPr����r����r(���maskrL���rL���rM����_proxy_bypass_macosx_sysconf� ��s:����� r5���darwin)�_get_proxy_settings�_get_proxiesc�������������C���s���t���}t|�|�S�)N)r7��r5��)ru���r3��rL���rL���rM����proxy_bypass_macosx_sysconf< ��s����r9��c���������������C���s���t���S�)N)r8��rL���rL���rL���rM����getproxies_macosx_sysconf@ ��s����r:��c�������������C���s ���t���}|rt|�|�S�t|��S�d�S�)N)r%��r+��r9��)ru���r��rL���rL���rM���r��J ��s���� r��c���������������C���s���t���p t��S�)N)r%��r:��rL���rL���rL���rM���r5���W ��s����c����������� ���C���s��i�}�ydd�l�}W�n�tk r$���|�S�X�y�|�|jd�}|�|d�d�}|r�t|�|d�d��}d|kr�x�|�d�D�]4}|�dd�\}}t�d|�s�d ||f�}||�|<�qrW�n>|d�d ��dkr�||�d<�n$d |�|�d<�d|�|�d<�d|�|�d<�|� ���W�n�t ttfk �r���Y�nX�|�S�)Nr���z;Software\Microsoft\Windows\CurrentVersion\Internet Settings�ProxyEnableZProxyServerr���r���rR���z (?:[^/:]+)://z%s://%srR��zhttp:r����z http://%sz https://%sr����zftp://%sr����) �winreg�ImportError�OpenKey�HKEY_CURRENT_USER�QueryValueExr����r9��rH��r��ZCloserl���rB���r����)r��r<���internetSettings�proxyEnableZproxyServer�pr����ZaddressrL���rL���rM����getproxies_registry\ ��s8���� rD��c���������������C���s���t���p t��S�)N)r%��rD��rL���rL���rL���rM���r5���� ��s����c�������������C���sx��ydd�l�}W�n�tk r ���dS�X�y6|�|jd�}|�|d�d�}t|�|d�d��}W�n�tk rl���dS�X�|rv|szdS�t|��\}}|g}�y t� |�}||kr�|�� |��W�n�tk r����Y�nX�y t�|�}||kr�|�� |��W�n�tk r����Y�nX�|�d�}xp|D�]h} | dk�r$d|k�r$dS�| � dd �} | � d d�} | � dd�} x$|�D�]} t�| | tj��rNdS��qNW��qW�dS�) Nr���z;Software\Microsoft\Windows\CurrentVersion\Internet Settingsr;��Z ProxyOverrider���z<local>r(��rR���z\.r'��z.*�?)r<��r=��r>��r?��r@��r����rl���r ���r����r���r\���Zgetfqdnr9��r����rH��r��rJ��)ru���r<��rA��rB��Z proxyOverrideZrawHostr'��ZaddrZfqdnr)��r����rL���rL���rM����proxy_bypass_registry� ��sR���� rF��c�������������C���s ���t���}|rt|�|�S�t|��S�d�S�)N)r%��r+��rF��)ru���r��rL���rL���rM���r��� ��s���� )NNN)N)}r��r����r���r^��Zhttp.clientr����r���rV���� posixpathrH��r����r����r���r\��rY���rS���r?���Zurllib.errorr���r���r���Zurllib.parser���r���r���r���r ���r ���r���r���r ���r���r���r���r���r���r���r���r���r���Zurllib.responser���r���rD���r=��rC����__all__�version_infor����rF���r����r0���r1���r[���r6���r7���rI���ASCIIrq���rv���r���r���r2���r���r/���r���r���r��r���r ���r!���r"���r#���r$���r%����urandomr]��r&���r'���r(���rt��r)���r����r����rE���r\���r���r.���rT��rV��r*���r���r+���r,���r-���r���rZ���Z nturl2pathr4���r3���r���r8���r9���r��r���r��r���r��r���r��r��r���r%��r+��r5���platformZ_scproxyr7��r8��r9��r:��r��r5���rD��rF��rL���rL���rL���rM����<module>T���s����P T ?n�$q*@ o�v +3:5!���@�W _ %< - 2