Edit File: request.cpython-36.opt-2.pyc
3 48e~���������������)���@���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�dlZd�dlmZmZmZ�d�dlmZmZmZmZmZmZmZmZmZm Z m!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(ej0dd)���Z1da2de j3fddddd*�d+d�Z4d,d��Z5g�Z6d}d-d$�Z7d.d%��Z8e j9d/e j:�Z;d0d1��Z<G�d2d��d�Z=G�d3d��d�Z>d4d ��Z?G�d5d ��d �Z@G�d6d��de@�ZAG�d7d ��d e@�ZBG�d8d��de@�ZCd9d:��ZDG�d;d ��d e@�ZEG�d<d��d�ZFG�d=d��deF�ZGG�d>d��deG�ZHG�d?d��d�ZIG�d@d��deIe@�ZJG�dAd��deIe@�ZKejLZMG�dBd��d�ZNG�dCd��de@eN�ZOG�dDd��de@eN�ZPG�dEdF��dFe@�ZQG�dGd��deQ�ZReSejTdH��r.G�dIdJ��dJeQ�ZUe/jVdJ��G�dKd��de@�ZWG�dLd��de@�ZXdMdN��ZYdOdP��ZZG�dQd��de@�Z[dRdS��Z\G�dTd��de@�Z]G�dUd��de]�Z^G�dVd��de@�Z_dWZ`ejadXk�r�d�dYlbmcZcmdZd�ndZd"��Zcd[d!��Zdi�ZeG�d\d&��d&�ZfG�d]d'��d'ef�Zgdahd^d_��Zidajd`da��Zkdaldbdc��Zmdanddde��ZoG�dfdg��dg�Zpdhdi��Zqd~djdk�Zrdldm��Zsejtdnk�r�d�dolumvZvmwZw�dpdq��Zxdrds��Zydtdu��Zzdvd#��Z{n6ejadXk�r�dwdx��Z|dyd#��Z{dzd{��Z}d|du��ZzneqZ{erZzdS�)�����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�}|jdtd��|d�k r2td��ts>td��tjtjj||d�}t |d�}t |�} n0|r~t |d�}t |�} ntd�kr�t ���a} nt} | j|�||�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����&/usr/lib64/python3.6/urllib/request.pyr0�������s*����< c�������������C���s���|�a�d�S�)N)rF���)rK���rL���rL���rM���r1�������s����c�������������C���s4��t�|��\}}tjt|�|����}|j��}|dkrD|�rDtjj|�|fS�|rTt|d�}nt j dd�}|j}tj |��|���||f} d} d }d}d} d |kr�t|d ��}|r�|| | |��xB|j| �}|s�P�|t|�7�}|j|��| d7�} |r�|| | |��q�W�W�d�Q�R�X�W�d�Q�R�X�|dk�r0||k��r0td||f�| ��| S�)N�file�wbF)�deletei�����������r���zcontent-lengthzContent-Lengthz1retrieval incomplete: got only %i out of %i bytesi� �����)r���� contextlib�closingr0����info�os�path�normpathrG����tempfileZNamedTemporaryFile�name�_url_tempfiles�append�int�read�len�writer���)rH����filename� reporthookrI���Zurl_typerX����fp�headers�tfp�result�bs�sizer_����blocknum�blockrL���rL���rM���r6�������sD���� $c��������������C���sH���x0t�D�](}�ytj|���W�q�tk r,���Y�qX�qW�t�d�d��=�trDd�ad�S�)N)r\���rW����unlink�OSErrorrF���)Z temp_filerL���rL���rM���r7���%��s���� z:\d+$c�������������C���s<���|�j�}t|�d�}|dkr&|�jdd�}tjd|d�}|j��S�)NrR������Host)�full_urlr���� get_header�_cut_port_re�sub�lower)�requestrH����hostrL���rL���rM����request_host4��s����rw���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 |j��D�]\}}|�j||��q.W�|d�krVt|��}||�_ ||�_ |rl||�_d�S�)N)rp���re����unredirected_hdrs�_datarI����_tunnel_host�items� add_headerrw����origin_req_host�unverifiable�method) �selfrH���rI���re���r}���r~���r����key�valuerL���rL���rM����__init__F��s����zRequest.__init__c�������������C���s���|�j�rdj|�j|�j��S�|�jS�)Nz{}#{})�fragment�format� _full_url)r����rL���rL���rM���rp���X��s����zRequest.full_urlc�������������C���s(���t�|�|�_t|�j�\|�_|�_|�j���d�S�)N)r���r����r���r�����_parse)r����rH���rL���rL���rM���rp���^��s���� c�������������C���s���d�|�_�d�|�_d|�_d�S�)Nrn���)r����r�����selector)r����rL���rL���rM���rp���e��s����c�������������C���s���|�j�S�)N)ry���)r����rL���rL���rM���rI���k��s����zRequest.datac�������������C���s(���||�j�kr$||�_�|�jd�r$|�jd��d�S�)NzContent-length)ry���� has_header� remove_header)r����rI���rL���rL���rM���rI���o��s���� c�������������C���s ���d�|�_�d�S�)N)rI���)r����rL���rL���rM���rI���y��s����c�������������C���sN���t�|�j�\|�_}|�jd�kr(td|�j���t|�\|�_|�_|�jrJt|�j�|�_d�S�)Nzunknown url type: %r) r���r�����typerB���rp���r���rv���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)rp���)r����rL���rL���rM����get_full_url���s����zRequest.get_full_urlc�������������C���s4���|�j�dkr|�j�r|�j|�_n||�_�|�j|�_||�_d�S�)N�https)r����rz���rv���rp���r����)r����rv���r����rL���rL���rM���� set_proxy���s ���� zRequest.set_proxyc�������������C���s���|�j�|�jkS�)N)r����rp���)r����rL���rL���rM���� has_proxy���s����zRequest.has_proxyc�������������C���s���||�j�|j��<�d�S�)N)re���� capitalize)r����r�����valrL���rL���rM���r|������s����zRequest.add_headerc�������������C���s���||�j�|j��<�d�S�)N)rx���r����)r����r����r����rL���rL���rM����add_unredirected_header���s����zRequest.add_unredirected_headerc�������������C���s���||�j�kp||�jkS�)N)re���rx���)r�����header_namerL���rL���rM���r�������s���� zRequest.has_headerc�������������C���s���|�j�j||�jj||��S�)N)re����getrx���)r����r�����defaultrL���rL���rM���rq������s����zRequest.get_headerc�������������C���s ���|�j�j|d���|�jj|d���d�S�)N)re����poprx���)r����r����rL���rL���rM���r�������s����zRequest.remove_headerc�������������C���s"���|�j�j��}|j|�j��t|j���S�)N)rx����copy�updatere����listr{���)r�����hdrsrL���rL���rM����header_items���s���� zRequest.header_items)N)�__name__� __module__�__qualname__r�����propertyrp����setter�deleterrI���r����r����r����r����r����r|���r����r����rq���r����r����rL���rL���rL���rM���r���D��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*|jd�}|d�|��}||d�d���}|jd �r�|jd�|�d�}||d�d���}yt|�}W�n�tk r����Y�nX�|�jj |i��} | |�j|<�n>|d kr�|}|�j } n*|dkr�|}|�j} n|dkr*|}|�j} nq*| j |g��} | �r&tj| |��n | j|��d }q*W�|�rVtj|�j|��|j|���d�S�)N� add_parentz%expected BaseHandler instance, got %rF�redirect_request�do_open� proxy_open�_rR����errorrG����responseru���T)r����r����r����)�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<���|j�|f��}x*|D�]"}t||�}||��}|d�k r|S�qW�d�S�)N)r����r����) r�����chainr����� meth_name�argsr����r�����funcrg���rL���rL���rM����_call_chain���s���� zOpenerDirector._call_chainNc������� ������C���s����t�|t�rt||�}n|}|d�k r(||_||_|j}|d�}x(|�jj|g��D�]}t||�}||�}qLW�|�j ||�} |d�}x*|�j 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���|�j�|�jdd|�}|r|S�|j}|�j�|�j||d�|�}|r>|S�|�j�|�jdd|�S�)Nr����Zdefault_openr�����unknown�unknown_open)r����r����r����)r����r����rI���rg���r����rL���rL���rM���r������s���� zOpenerDirector._openc�������������G���s~���|d kr,|�j�d�}|d�}d|�}d}|}n|�j�}|d�}d}|||f|�}|�j|��}|r^|S�|rz|dd f|�}|�j|��S�d�S�)N�httpr����r:���z http_error_%srR���Z_errorr���r�����http_error_default)r����r����)r����r����)r�����protor�����dictr����Zhttp_errZ orig_argsrg���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|j t��t��}xN|D�]F}x@|�D�]8}t|t�rlt||�r�|j|��qHt||�rH|j|��qHW�q>W�x|D�]}|j|��q�W�x|D�]}|j|����q�W�x&|�D�]}t|t�r�|��}|j|��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����g��s����zBaseHandler.add_parentc�������������C���s���d�S�)NrL���)r����rL���rL���rM���r����j��s����zBaseHandler.closec�������������C���s���t�|d�sdS�|�j|jk�S�)N� handler_orderT)r����r����)r�����otherrL���rL���rM����__lt__n��s���� zBaseHandler.__lt__N)r����r����r����r����r����r����r����rL���rL���rL���rM���r���d��s���c���������������@���s���e�Zd�ZdZdd��ZeZdS�)r/���i���c�������������C���sJ���|j�|j|j����}}}d|��ko*dk�n��sF|�jjd|||||�}|S�)N�����i,��r����)�code�msgrV���r����r����)r����ru���r����r����r����r����rL���rL���rM���� http_response{��s ����z HTTPErrorProcessor.http_responseN)r����r����r����r����r�����https_responserL���rL���rL���rM���r/���w��s���c���������������@���s���e�Zd�Zdd��ZdS�)r���c�������������C���s���t�|j||||��d�S�)N)r���rp���)r����r����rd���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������� ���������sx���|j���}|dkr|dkp&|dko&|dks:t|j||||��|jdd �}d��t��fdd �|jj��D���}t|||jdd�S�)N�-���.���/���3��r�����HEADr����� z%20�content-length�content-typec�������������3���s&���|�]\}}|j�����kr||fV��qd�S�)N)rt���)�.0�k�v)�CONTENT_HEADERSrL���rM���� <genexpr>���s����z7HTTPRedirectHandler.redirect_request.<locals>.<genexpr>T)re���r}���r~���)r����r����r����r����)r����r����)r����r����r����)r����r����) r����r���rp����replacer����re���r{���r���r}���) r����r����rd���r����r����re����newurl�mZ newheadersrL���)r����rM���r�������s���� z$HTTPRedirectHandler.redirect_requestc������� ������C���sN��d|kr|d�}nd|kr$|d�}nd�S�t�|�}|jdkrRt||d||f�||��|j�rp|jrpt|�}d|d <�t|�}t|d tj d�}t |j|�}|�j||||||�}|d�kr�d�S�t |d��r|j�} |_| j|d �|�jks�t| �|�jk�rt|j||�j|�||��ni��} �|_|_| j|d �d�| |<�|j���|j���|�jj||jd�S�)N�location�urir����r�����ftprn���z+%s - Redirection to url '%s' is not allowed�/r:���z iso-8859-1)�encoding�safe� redirect_dictr���rR���)rJ���)r����r����r����rn���)r����schemer���rX���Znetlocr����r���r ����stringZpunctuationr���rp���r����r����r��r�����max_repeatsr`����max_redirections�inf_msgr_���r����r����rG���rJ���) r����r����rd���r����r����re���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�|��\}}|jd�s d�}|�}n:|jd�s6td|����|jdd�}|dkrNd�}|d|��}t|�\}}|d�k r|t|�\}}nd��}}||||fS�)Nr����z//zproxy URL with no authority: %rr:���rR���rS���)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|j��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����proxiesr{����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�} tj| j���jd�} |j dd| ���t|�}|j ||��||ks�|dkr�d�S�|�jj||j d�S�d�S�)Nz%s:%s�asciizProxy-authorizationzBasic r����)rJ���)r����r��rv����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����F��s����zHTTPPasswordMgr.__init__c����������������s`���t�|t�r|g}|�jkr$i��j|<�x6dD�].��t���fdd�|D���}||f�j|�|<�q*W�d�S�)NTFc����������������s���g�|�]}�j�|����qS�rL���)� reduce_uri)r�����u)�default_portr����rL���rM���� <listcomp>Q��s����z0HTTPPasswordMgr.add_password.<locals>.<listcomp>)TF)r����r����r���tuple)r�����realmr����r��r���reduced_urirL���)r"��r����rM����add_passwordI��s���� zHTTPPasswordMgr.add_passwordc������� ������C���s`���|�j�j|i��}xLdD�]D}|�j||�}x2|j��D�]&\}}x|D�]}|�j||�r<|S�q<W�q.W�qW�dS�)NTF)TF)NN)r��r����r ��r{���� is_suburi) r����r%���authuriZdomainsr"���reduced_authuriZurisZauthinfor����rL���rL���rM����find_user_passwordT��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�j|�} | 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��rX���rv����portZdportrL���rL���rM���r ��^��s ����zHTTPPasswordMgr.reduce_uric�������������C���sR���||krdS�|d�|d�kr dS�t�j|d�|d�f�}t|�t|d��krNdS�dS�)NTr���FrR���)� posixpath�commonprefixr`���)r�����base�test�commonrL���rL���rM���r(��u��s����zHTTPPasswordMgr.is_suburiN)T)r����r����r����r����r'��r+��r ��r(��rL���rL���rL���rM���r ���D��s ��� c���������������@���s���e�Zd�Zdd��ZdS�)r!���c�������������C���s0���t�j|�||�\}}|d�k r"||fS�t�j|�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<���|�j�||��|d�k r&t��jd�|||��t��j||||��d�S�)N)�update_authenticatedr5��r'��)r����r%��r����r��r���is_authenticated)r7��rL���rM���r'�����s����z)HTTPPasswordMgrWithPriorAuth.add_passwordc�������������C���sF���t�|t�r|g}x0dD�](}x"|D�]}|�j||�}||�j|<�q W�qW�d�S�)NTF)TF)r����r����r ��r4��)r����r����r9��r"��r!��r&��rL���rL���rM���r8�����s���� z1HTTPPasswordMgrWithPriorAuth.update_authenticatedc�������������C���sD���x>dD�]6}|�j�||�}x$|�jD�]}|�j||�r|�j|�S�qW�qW�d�S�)NTF)TF)r ��r4��r(��)r����r)��r"��r*��r����rL���rL���rM���r9�����s ���� z-HTTPPasswordMgrWithPriorAuth.is_authenticated)F)F)r����r����r����r����r'��r8��r9��� __classcell__rL���rL���)r7��rM���r"������s��� c���������������@���sT���e�Zd�Zejdej�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�jj|�D�]6}|j��\}}}|d kr:tjdtd��||fV��d}qW�|sp|rb|j��d�}nd}|d�fV��d�S�) NF�"�'zBasic Auth Realm was unquoted����Tr���rn���)r;��r<��)r#����rx�finditer�groupsr?���r@����UserWarning�split)r�����headerZfound_challengeZmor��r ���r%��rL���rL���rM����_parse_realm���s���� z%AbstractBasicAuthHandler._parse_realmc������� ������C���s~���|j�|�}|sd�S�d�}xL|D�]D}x>|�j|�D�]0\}}|j��dkrF|}q,|d�k r,|�j|||�S�q,W�qW�|d�k rztd|f���d�S�)N�basiczBAbstractBasicAuthHandler does not support the following scheme: %r)Zget_allrD��rt����retry_http_basic_authrB���) r�����authreqrv���r����re���ZunsupportedrC��r��r%��rL���rL���rM����http_error_auth_reqed���s���� z.AbstractBasicAuthHandler.http_error_auth_reqedc�������������C���s|���|�j�j||�\}}|d�k rtd||f�}dtj|j���jd��}|j|�jd��|krTd�S�|j|�j|��|�j j ||jd�S�d�S�d�S�)Nz%s:%szBasic r��)rJ���)r��r+��r��r��r��r��rq����auth_headerr����r����rG���rJ���)r����rv���r����r%��r���pw�raw�authrL���rL���rM���rF�����s����z.AbstractBasicAuthHandler.retry_http_basic_authc�������������C���sx���t�|�jd��s|�jj|j��r"|S�|jd�st|�jjd�|j�\}}dj||�j��}tj |�j ��}|jddj|j�����|S�)Nr9��� Authorizationz{0}:{1}zBasic {}) r����r��r9��rp���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��ko dk�n��r8|�jj|jd��n|�jj|jd��|S�)Nr9��r����i,��TF)r����r��r����r8��rp���)r����r����r����rL���rL���rM���r������s ����z&AbstractBasicAuthHandler.http_response)N)r����r����r�����re�compile�Ir>��r����rD��rH��rF��rO��r����� https_requestr����rL���rL���rL���rM���r#������s��� c���������������@���s���e�Zd�ZdZdd��ZdS�)r$���rM��c�������������C���s���|j�}|�jd|||�}|S�)Nzwww-authenticate)rp���rH��)r����r����rd���r����r����re���rH���r����rL���rL���rM����http_error_401 ��s���� z#HTTPBasicAuthHandler.http_error_401N)r����r����r����rI��rT��rL���rL���rL���rM���r$�����s���c���������������@���s���e�Zd�ZdZdd��ZdS�)r%���zProxy-authorizationc�������������C���s���|j�}|�jd|||�}|S�)Nzproxy-authenticate)rv���rH��)r����r����rd���r����r����re���r��r����rL���rL���rM����http_error_407+��s���� z$ProxyBasicAuthHandler.http_error_407N)r����r����r����rI��rU��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����E��s���� z"AbstractDigestAuthHandler.__init__c�������������C���s ���d|�_�d�S�)Nr���)rV��)r����rL���rL���rM����reset_retry_countN��s����z+AbstractDigestAuthHandler.reset_retry_countc�������������C���s|���|j�|d��}|�jdkr*t|jdd|d���n|��jd7��_|rx|j��d�}|j��dkr`|�j||�S�|j��dkrxtd|���d�S�) N����i���zdigest auth failedrR���r���ZdigestrE��zEAbstractDigestAuthHandler does not support the following scheme: '%s')r����rV��r���rp���rB��rt����retry_http_digest_authrB���)r����rI��rv���r����re���rG��r��rL���rL���rM���rH��Q��s���� z/AbstractDigestAuthHandler.http_error_auth_reqedc�������������C���sz���|j�dd�\}}ttd�t|���}|�j||�}|rvd|�}|jj|�jd��|krRd�S�|j|�j|��|�j j ||jd�}|S�d�S�)Nr����rR���z Digest %s)rJ���)rB���parse_keqv_list�filter�parse_http_list�get_authorizationre���r����rI��r����r����rG���rJ���)r����r����rL���tokenZ challenge�chalZauth_valZresprL���rL���rM���r[��e��s����z0AbstractDigestAuthHandler.retry_http_digest_authc�������������C���s@���d|�j�|tj��f�}|jd�td��}tj|�j��}|d�d��S�)Nz %s:%s:%s:r��rQ�������)rW���timeZctimer���_randombytes�hashlib�sha1� hexdigest)r�����nonce�s�b�digrL���rL���rM���� get_cnonceq��s����z$AbstractDigestAuthHandler.get_cnoncec�������������C���s���y6|d�}|d�}|j�d�}|j�dd�}|j�dd��}W�n�tk rJ���d�S�X�|�j|�\}} |d�krfd�S�|�jj||j�\} }| d�kr�d�S�|jd�k r�|�j|j|�}nd�}d| ||f�} d|j��|j f�}|d k�r.||�j kr�|��jd 7��_nd |�_||�_ d|�j�}|�j|�}d||||||�f�}| || �|�}n2|d�k�rT| || �d|||�f��}nt d |���d| |||j |f�}|�r�|d|�7�}|�r�|d|�7�}|d|�7�}|�r�|d||f�7�}|S�)Nr%��rh���qop� algorithm�MD5�opaquez%s:%s:%sz%s:%srL��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+��rp���rI����get_entity_digestr����r����rX��rW��rl��r���)r����r����ra��r%��rh��rm��rn��rp���H�KDr��rJ��ZentdigZA1ZA2ZncvalueZcnonceZnoncebitZrespdigr1��rL���rL���rM���r_��|��sV���� z+AbstractDigestAuthHandler.get_authorizationc����������������sD���|dkrdd����n|dkr$dd����nt�d|�����fdd�}��|fS�)Nro��c�������������S���s���t�j|�jd��j��S�)Nr��)re��Zmd5r��rg��)�xrL���rL���rM���r�����s����z?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>ZSHAc�������������S���s���t�j|�jd��j��S�)Nr��)re��rf��r��rg��)rv��rL���rL���rM���r�����s����z.Unsupported digest authentication algorithm %rc����������������s�����d|�|f��S�)Nz%s:%srL���)ri���d)rt��rL���rM���r�����s����)rB���)r����rn��ru��rL���)rt��rM���rr�����s���� z-AbstractDigestAuthHandler.get_algorithm_implsc�������������C���s���d�S�)NrL���)r����rI���ra��rL���rL���rM���rs�����s����z+AbstractDigestAuthHandler.get_entity_digest)N)r����r����r����r����rY��rH��r[��rl��r_��rr��rs��rL���rL���rL���rM���r&���:��s��� < c���������������@���s���e�Zd�ZdZdZdd��ZdS�)r'���rM��i���c�������������C���s*���t�|j�d�}|�jd|||�}|�j���|S�)NrR���zwww-authenticate)r���rp���rH��rY��)r����r����rd���r����r����re���rv����retryrL���rL���rM���rT�����s ���� z$HTTPDigestAuthHandler.http_error_401N)r����r����r����rI��r����rT��rL���rL���rL���rM���r'������s���c���������������@���s���e�Zd�ZdZdZdd��ZdS�)r(���zProxy-Authorizationi���c�������������C���s"���|j�}|�jd|||�}|�j���|S�)Nzproxy-authenticate)rv���rH��rY��)r����r����rd���r����r����re���rv���rx��rL���rL���rM���rU�����s ���� z%ProxyDigestAuthHandler.http_error_407N)r����r����r����rI��r����rU��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)rz��)r�����levelrL���rL���rM����set_http_debuglevel���s����z'AbstractHTTPHandler.set_http_debuglevelc�������������C���s���t�jjj|j|j���S�)N)r����r�����HTTPConnection�_get_content_lengthrI���r����)r����ru���rL���rL���rM���r�����s����z'AbstractHTTPHandler._get_content_lengthc�������������C���s ��|j�}|std��|jd�k r�|j}t|t�r8d}t|��|jd�sN|jdd��|jd��r�|jd��r�|�j|�}|d�k r�|jdt|���n|jdd��|}|j ��r�t |j�\}}t|�\}} |jd�s�|jd|��x2|�j jD�]&\} }| j��} |j| �s�|j| |��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-encodingZchunkedro���)rv���r���rI���r����r����r����r����r����r��r����r���r����r���r����r����r����)r����ru���rv���rI���r����Zcontent_lengthZsel_hostr��ZselZsel_pathr[���r����rL���rL���rM����do_request_���s>���� zAbstractHTTPHandler.do_request_c������� ���������s\��|j�}|std��||fd|ji|��}|j|�j��t|j�����jt��fdd�|jj ��D�����d��d<�tdd����j ��D�����|j r�i�}d}|��kr���|�||<���|=�|j|j |d ��y`y&|j|j ��|j|j��|jd �d��W�n,�tk �r �}�zt|��W�Y�d�d�}~X�nX�|j��} W�n���|j�����Y�nX�|j�rF|jj���d�|_|j��| _| j| _| S�)Nz no host givenrJ���c�������������3���s"���|�]\}}|��kr||fV��qd�S�)NrL���)r����r����r����)re���rL���rM���r����)��s����z.AbstractHTTPHandler.do_open.<locals>.<genexpr>r����� Connectionc�������������s���s���|�]\}}|j���|fV��qd�S�)N)�title)r����r[���r����rL���rL���rM���r����6��s����zProxy-Authorization)re���zTransfer-encoding)Zencode_chunked)rv���r���rJ���Zset_debuglevelrz��r����rx���r����re���r{���rz���Z set_tunnelru���r����r����rI���r����rm����getresponser����Zsockr����rH����reasonr����) r����Z http_classr����Zhttp_conn_argsrv���r����Ztunnel_headersZproxy_auth_hdr�errr��rL���)re���rM���r������s@���� " zAbstractHTTPHandler.do_openN)r���)r����r����r����r����r}��r��r���r����rL���rL���rL���rM���ry�����s ��� &ry��c���������������@���s���e�Zd�Zdd��ZejZdS�)r)���c�������������C���s���|�j�tjj|�S�)N)r����r����r����r~��)r����r����rL���rL���rM���� http_open`��s����zHTTPHandler.http_openN)r����r����r����r���ry��r���rO��rL���rL���rL���rM���r)���^��s���r����c���������������@���s$���e�Zd�Zddd�Zdd��ZejZdS�)rE���r���Nc�������������C���s���t�j|�|��||�_||�_d�S�)N)ry��r�����_context�_check_hostname)r����r{��r>����check_hostnamerL���rL���rM���r����i��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_openn��s����zHTTPSHandler.https_open)r���NN)r����r����r����r����r���ry��r���rS��rL���rL���rL���rM���rE���g��s��� rE���c���������������@���s.���e�Zd�Zddd�Zdd��Zdd��ZeZeZdS�) r���Nc�������������C���s$���dd�l�}|d�kr|jj��}||�_d�S�)Nr���)Zhttp.cookiejar� cookiejarZ CookieJar)r����r���r����rL���rL���rM���r����w��s���� zHTTPCookieProcessor.__init__c�������������C���s���|�j�j|��|S�)N)r���Zadd_cookie_header)r����ru���rL���rL���rM���rO��}��s����z HTTPCookieProcessor.http_requestc�������������C���s���|�j�j||��|S�)N)r���Zextract_cookies)r����ru���r����rL���rL���rM���r�������s����z!HTTPCookieProcessor.http_response)N)r����r����r����r����rO��r����rS��r����rL���rL���rL���rM���r���v��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�]@}|j�dd�\}}|d�dkrB|d�dkrB|dd��}|||<�q W�|S�)N�=rR���r���r;��rS���rS���)rB��)�lZparsedZeltr����r����rL���rL���rM���r\�����s���� r\��c�������������C���s����g�}d}d�}}xt|�D�]l}|r,||7�}d}q|rV|dkr@d}qn|dkrLd}||7�}q|dkrn|j�|��d}q|dkrzd}||7�}qW�|r�|j�|��dd��|D��S�) Nrn���F�\Tr;���,c�������������S���s���g�|�]}|j����qS�rL���)rN��)r�����partrL���rL���rM���r#�����s����z#parse_http_list.<locals>.<listcomp>)r]���)ri���resr����escaper ���ZcurrL���rL���rM���r^�����s4���� r^��c���������������@���s(���e�Zd�Zdd��ZdZdd��Zdd��ZdS�)r*���c�������������C���s\���|j�}|d�d��dkrN|dd��dkrN|jrN|jdkrN|j|�j��krXtd��n |�j|�S�d�S�)Nr:���z//r=��r����� localhostz-file:// scheme is supported only on localhost)r����rv���� get_namesr����open_local_file)r����r����rH���rL���rL���rM���� file_open���s����& zFileHandler.file_openNc�������������C���s`���t�jd�krZy*ttjd�d�tjtj���d���t�_W�n$�tjk rX���tjd�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�tj|�}|j}|jj |j dd�} |j|�d�} |jd| pbd|| f��}|r~t |�\}}|�s�|�r�t|�|�j��kr�|r�d|�|�} nd|�} tt|d�|| �S�W�n*�tk r��}�zt|��W�Y�d�d�}~X�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� mimetypesrv���r����r4���rW����stat�st_size�utils� formatdate�st_mtime� guess_type�message_from_stringr ����_safe_gethostbynamer���r���rG���rm���r���)r����r�����emailr���rv���rb���Z localfile�statsri����modified�mtypere���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�j|��S��t�jk r ���d�S�X�d�S�)N)r����r���r���)rv���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 j|�}W�n*�tk r��}�zt|��W�Y�d�d�}~X�nX�t |j�\} } | jd�}ttt |��}|d�d��|d��}}|�r|d���r|dd���}y�|�j||||||j�} |�r8d�p:d}x:| D�]2}t|�\}}|j��dk�rB|dk�rB|j��}�qBW�| j||�\}}d}|j|j�d�}|�r�|d |�7�}|d�k �r�|dk�r�|d|�7�}tj|�}t|||j�S��|jk �r(�}�z$td|��}|jtj ��d���W�Y�d�d�}~X�nX�d�S�)Nr���zftp error: no host givenrn���r����rR���rR���Dr�����a�Ar����rw��zContent-type: %s zContent-length: %d z ftp error: %rr:���rS���rS���)r���r���r����rR��rw��r���)!�ftplibr���rv���r���r ����FTP_PORTr^���r���r���r ���r����r���rm���r���r����rB��r�����map�connect_ftprJ���r���rt����upper�retrfiler���rp���r���r���r���� all_errors�with_traceback�sys�exc_info)r����r����r���r���rv���r.��r��r��r����rX����attrs�dirsrN����fwr�����attrr����rd����retrlenre���r���r����excrL���rL���rM����ftp_open���s\���� zFTPHandler.ftp_openc���������� ���C���s���t�||||||dd�S�)NF)� persistent)� ftpwrapper)r����r��r��rv���r.��r���rJ���rL���rL���rM���r���1��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����<���rb��)�cacherJ����soonest�delay� max_conns)r����rL���rL���rM���r����8��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����setMaxConnsB��s����zCacheFTPHandler.setMaxConnsc�������������C���sr���|||dj�|�|f}||�jkr4tj��|�j�|�j|<�n,t||||||�|�j|<�tj��|�j�|�j|<�|�j���|�j|�S�)Nr����)�joinr���rc��r���rJ���r����check_cache)r����r��r��rv���r.��r���rJ���r����rL���rL���rM���r���E��s���� zCacheFTPHandler.connect_ftpc�������������C���s����t�j���}|�j|krTx@t|�jj���D�].\}}||k�r"|�j|�j���|�j|=�|�j|=�q"W�tt|�jj����|�_t |�j�|�j kr�x6t|�jj���D�]$\}}||�jkr�|�j|=�|�j|=�P�q�W�tt|�jj����|�_d�S�)N)rc��r���r����rJ���r{���r���r�����min�valuesr`���r���)r����r���r����r����rL���rL���rM���r���P��s���� zCacheFTPHandler.check_cachec�������������C���s4���x|�j�j��D�]}|j���qW�|�j�j���|�jj���d�S�)N)r���r���r�����clearrJ���)r�����connrL���rL���rM����clear_cached��s���� zCacheFTPHandler.clear_cacheN) r����r����r����r����r���r���r���r���r���rL���rL���rL���rM���r,���5��s���c���������������@���s���e�Zd�Zdd��ZdS�)r-���c�������������C���s~���|j�}|jdd�\}}|jdd�\}}t|�}|jd�rNtj|�}|d�d��}|sVd}tjd|t|�f��}t t j|�||�S�) N�:rR���r���z;base64����ztext/plain;charset=US-ASCIIz$Content-type: %s Content-length: %d i����)rp���rB��r����endswithr���decodebytesr���r���r`���r����io�BytesIO)r����r����rH���r��rI���Z mediatypere���rL���rL���rM���� data_openk��s���� zDataHandler.data_openN)r����r����r����r���rL���rL���rL���rM���r-���j��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��}||�_|jd�|�_|jd�|�_ d|�j fd g|�_g�|�_t j|�_d�|�_t|�_d�S�)NzW%(class)s style of invoking requests is deprecated. Use newer urlopen functions/methods�classr=��)� stacklevel�key_file� cert_filez User-Agent�Accept�*/*)r���r���)r7��r����r?���r@���rA���r5���r��r����r���r����versionr�����_URLopener__tempfilesrW���rl����_URLopener__unlink� tempcache�ftpcache)r����r��Zx509r����rL���rL���rM���r�������s����zURLopener.__init__c�������������C���s���|�j����d�S�)N)r����)r����rL���rL���rM����__del__���s����zURLopener.__del__c�������������C���s���|�j����d�S�)N)�cleanup)r����rL���rL���rM���r�������s����zURLopener.closec�������������C���sZ���|�j�rFx2|�j�D�](}y|�j|��W�q�tk r4���Y�qX�qW�|�j�d�d��=�|�jrV|�jj���d�S�)N)r���r���rm���r���r���)r����rN���rL���rL���rM���r������s���� zURLopener.cleanupc�������������G���s���|�j�j|��d�S�)N)r����r]���)r����r����rL���rL���rM���� addheader���s����zURLopener.addheaderc�������������C���sn��t�t|��}t|dd�}|�jrL||�jkrL|�j|�\}}t|d�}t|||�S�t|�\}}|s`d}||�jkr�|�j|�}t|�\}} t| �\} }| |f}nd�}d|�}||�_ |j dd�}t|�|��s�|dkr�|r�|�j|||�S�|�j ||�S�y,|d�k�r�t|�|�|�S�t|�|�||�S�W�nV�ttfk �r.�����Y�n<�tk �rh�} �ztd | �jtj��d ���W�Y�d�d�} ~ X�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���rm���r���r���r���)r����r����rI���rb���re���rd����urltyperH���r ��� proxyhostrv���r����r[���r����rL���rL���rM���rG������s<���� zURLopener.openc�������������C���s���t�|�\}}tdd|��d�S�)Nz url errorzunknown url type)r���rm���)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���rm���)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�|�sH|dkr�y.|�j|�}|j��}|j���tt|�d��|fS��t k r��} �zW�Y�d�d�} ~ X�nX�|�j ||�}�zH|j��} |r�t |d�}n|dd�l}t|�\} }t|p�d�\} }t|p�d�\}} t |�p�d�\}} tjj|�d�}|j|�\}}|�jj|��tj|d�}z�|| f}|�jd�k �r^||�j|<�d}d}d}d}d| k�r�t| d ��}|�r�||||��xH|j|�}|�s�P�|t|�7�}|j|��|d7�}|�r�||||���q�W�W�d�|j���X�W�d�|j���X�|dk�r"||k��r"td ||f�|��|S�) NrN���rR���rO���r���rn���i���rQ���zcontent-lengthzContent-Lengthz1retrieval incomplete: got only %i out of %i bytesi� ��rS���)r���r���r���r���r���rV���r����r4���r���rm���rG���rZ���r���r���rW���rX����splitextZmkstempr���r]����fdopenr^���r_���r`���ra���r���)r����rH���rb���rc���rI���r����Zurl1rd���r����r����re���rf���rZ���ZgarbagerX����suffix�fdrg���rh���ri���r_���rj���rk���rL���rL���rM����retrieve��sl���� zURLopener.retrievec�������������C���s(��d�}d�}t�|t�r<t|�\}}|r6t|�\}}t|�}|}nt|\}}t|�\}}t|�\} } | }d�}| j��dkrvd�}n:t| �\}} |r�t|�\}}|r�d| || f�}t|�r�|}|s�tdd��|r�t|�}t j |j���jd�}nd�}|�rt|�}t j |j���jd�}nd�}||�} i�}|�r*d|�|d<�|�r<d|�|d<�|�rJ||d <�d |d<�x|�j D�]\}}|||<��qZW�|d�k �r�d|d <�| jd|||��n| jd||d��y| j��}W�n"�tjjk �r����td��Y�nX�d|j��k�o�dk�n���rt||jd|�|j�S�|�j||j|j|j|j|�S�d�S�)Nr����z %s://%s%sz http errorz no host givenr��zBasic %szProxy-AuthorizationrM��ro���r����r���z!application/x-www-form-urlencodedzContent-Typer����r����)re���z$http protocol error: bad status liner����i,��zhttp:)r����r����r���r���r ���r���rt���r��rm���r��r��r��r��r����ru���r���r����r����Z BadStatusLiner���Zstatusr���r����� http_errorrd���r���)r����Zconnection_factoryrH���rI���Zuser_passwdZproxy_passwdrv���r����Zrealhostr���r����Z proxy_authrL��Z http_connre���rC��r����r����rL���rL���rM����_open_generic_httpQ��sr���� � zURLopener._open_generic_httpc�������������C���s���|�j�tjj||�S�)N)r���r����r����r~��)r����rH���rI���rL���rL���rM���� open_http���s����zURLopener.open_httpc������� ������C���sb���d|�}t�|�|�rPt|�|�}|d�kr6||||||�} n|||||||�} | rP| S�|�j|||||�S�)Nz http_error_%d)r����r����r����) r����rH���rd����errcode�errmsgre���rI���r[���r���rg���rL���rL���rM���r������s���� �zURLopener.http_errorc�������������C���s���|j����t||||d���d�S�)N)r����r���)r����rH���rd���r���r���re���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����rv���rL���rL���rM����_https_connection���s����zURLopener._https_connectionc�������������C���s���|�j�|�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��j��dkrPtd��n |�j|�S�d�S�) NzEfile error: proxy support for file protocol currently not implementedr:���z//r=��r��������z localhost/z-file:// scheme is supported only on localhost)r����r����r���rt���rB���r���)r����rH���rL���rL���rM���� open_file���s ���� 4 zURLopener.open_filec�������������C���s\��dd�l�}dd�l}t|�\}}t|�}ytj|�}W�n0�tk rb�}�zt|j|j ��W�Y�d�d�}~X�nX�|j } |jj|j dd�} |j|�d�}|jd|p�d| | f��}|s�|} |d�d��dkr�d|�} tt|d �|| �S�t|�\}}|�o�tj|�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���rW���r���rm���r����strerrorrb���r���r���r���r���r���r���r���rG���r ���r����r���r����thishostrB���)r����rH���r���r���rv���rN���Z localnamer����eri���r���r���re���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 j |�}|s�dd�l}|j}nt |�}t|�\}} t|�}|jd�} | d�d��| d��} }| o�| d����r�| dd���} | �r| d���rd| d<�|||dj| �f}t|�j�tk�rlx8t|�j�D�]*} | |k�r>|�j| �}|�j| =�|j����q>W�y�||�jk�r�t||||| �|�j|<�|�s�d}nd}x:| D�]2}t|�\}}|j��d k�r�|dk�r�|j��}�q�W�|�j|�j||�\}}|jd|��d�}d}|�r|d|�7�}|d�k �r:|dk�r:|d|�7�}tj|�}t||d|��S��t��k �r��}�z td|��j t!j"��d���W�Y�d�d�}~X�nX�d�S�)NzCftp error: proxy support for ftp protocol currently not implementedr���zftp error: no host givenrn���r����rR���r���rR��r����r���r���r����rw��zftp:zContent-Type: %s zContent-Length: %d zftp error %rr:���rS���rS���)r���r���r����rR��rw��r���)#r����r����r���r���r���r ���r���r���r ���r����r���r���r���r^���r���rB��r���r`���r����MAXFTPCACHEr����r����r���r���rt���r���r���r���r���r���r���� ftperrorsr���r���r���)r����rH���r���rv���rX���r.��r��r��r���r���r���rN���r����r����r����r����r���r����rd���r���r���re���r���rL���rL���rM����open_ftp���sp���� �� �� � zURLopener.open_ftpc������� ������C���s<��t�|t�std��y|jdd�\}}W�n�tk rD���tdd��Y�nX�|sNd}|jd�}|dkr�d ||d���kr�||d�d���}|d�|��}nd }g�}|jdtj dtj tj�������|jd |���|dkr�tj|j d��jd�}nt|�}|jdt|����|jd ��|j|��dj|�}tj|�}tj|�}t|||�S�)NzEdata error: proxy support for data protocol currently not implementedr���rR���z data errorzbad data URLztext/plain;charset=US-ASCII�;r���r���rn���zDate: %sz%a, %d %b %Y %H:%M:%S GMTzContent-type: %sr��r��zlatin-1zContent-Length: %d� )r����r����r���rB��rB���rm����rfindr]���rc��ZstrftimeZgmtimer��r���r��r��r ���r`���r���r���r���r����StringIOr���) r����rH���rI���r����Zsemir����r����re����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,��� $ B\ :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����r6��rL���rL���rM���r����`��s����zFancyURLopener.__init__c�������������C���s���t�||d|�|�S�)Nzhttp:)r���)r����rH���rd���r���r���re���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�|�j||||||�}|S�d|�_�X�d�S�)NrR����http_error_500i���z)Internal Server Error: Redirect Recursionr���)r ��r ��r����r��r�����redirect_internal) r����rH���rd���r���r���re���rI���r����rg���rL���rL���rM���r ��j��s���� zFancyURLopener.http_error_302c������� ������C���sx���d|kr|d�}nd|kr$|d�}nd�S�|j����t|�jd�|�|�}t|�}|jd krnt|||d|��||��|�j|�S�) Nr����r����r���r����r����r����rn���z( Redirection to url '%s' is not allowed.)r����r����r����rn���)r����r���r����r���r��r���rG���) r����rH���rd���r���r���re���rI���r����r��rL���rL���rM���r��|��s���� z FancyURLopener.redirect_internalc�������������C���s���|�j�||||||�S�)N)r ��)r����rH���rd���r���r���re���rI���rL���rL���rM���r �����s����zFancyURLopener.http_error_301c�������������C���s���|�j�||||||�S�)N)r ��)r����rH���rd���r���r���re���rI���rL���rL���rM���r�����s����zFancyURLopener.http_error_303c�������������C���s2���|d�kr|�j�||||||�S�|�j|||||�S�d�S�)N)r ��r����)r����rH���rd���r���r���re���rI���rL���rL���rM���r�����s����zFancyURLopener.http_error_307Fc������� ������C���s����d|krt�j|�|||||��|d�}tjd|�} | sHt�j|�|||||��| j��\} }| j��dkrtt�j|�|||||��|s�t�j|�|||||��d|�j�d�}|d�kr�t|�|�||�S�t|�|�|||�S�d�S�)Nzwww-authenticatez![ ]*([^ ]+)[ ]+realm="([^"]*)"rE��Zretry_�_basic_auth)r8���r����rP���matchr@��rt���r����r����) r����rH���rd���r���r���re���rI���rx���stuffr��r��r%��r[���rL���rL���rM���rT�����s&���� zFancyURLopener.http_error_401c������� ������C���s����d|krt�j|�|||||��|d�}tjd|�} | sHt�j|�|||||��| j��\} }| j��dkrtt�j|�|||||��|s�t�j|�|||||��d|�j�d�}|d�kr�t|�|�||�S�t|�|�|||�S�d�S�)Nzproxy-authenticatez![ ]*([^ ]+)[ ]+realm="([^"]*)"rE��Zretry_proxy_r ��)r8���r����rP��r��r@��rt���r����r����) r����rH���rd���r���r���re���rI���rx��r��r��r��r%��r[���rL���rL���rM���rU�����s&���� zFancyURLopener.http_error_407c�������������C���s����t�|�\}}d|�|�}|�jd�}t|�\}} t�| �\} } | jd�d�}| |d���} |�j| ||�\}} |pl| srd�S�dt|dd�t| dd�| f�} d| �| �|�jd<�|d�kr�|�j|�S�|�j||�S�d�S�)Nzhttp://r�����@rR���z%s:%s@%srn���)r���)r���r��r���r�����get_user_passwdr ���rG���)r����rH���r%��rI���rv���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�| �\} } | jd�d�}| |d���} |�j| ||�\}} |pl| srd�S�dt|dd�t| dd�| f�} d| �| �|�jd<�|d�kr�|�j|�S�|�j||�S�d�S�)Nzhttps://r����r��rR���z%s:%s@%srn���)r���)r���r��r���r����r��r ���rG���)r����rH���r%��rI���rv���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�|�\}}|jd�d�}||d���}|�j|||�\}}|p>|sDd�S�dt|dd�t|dd�|f�}d|�|�} |d�kr�|�j| �S�|�j| |�S�d�S�)Nr��rR���z%s:%s@%srn���)r���zhttp://)r���r����r��r ���rG���) r����rH���r%��rI���rv���r����r����r��r��r����rL���rL���rM���rF�����s����� z$FancyURLopener.retry_http_basic_authc������� ������C���s����t�|�\}}|jd�d�}||d���}|�j|||�\}}|p>|sDd�S�dt|dd�t|dd�|f�}d|�|�} |d�kr�|�j| �S�|�j| |�S�d�S�)Nr��rR���z%s:%s@%srn���)r���zhttps://)r���r����r��r ���rG���) r����rH���r%��rI���rv���r����r����r��r��r����rL���rL���rM����retry_https_basic_auth ��s����� z%FancyURLopener.retry_https_basic_authr���c�������������C���s`���|d�|j����}||�jkr2|r(|�j|=�n |�j|�S�|�j||�\}}|sJ|rX||f|�j|<�||fS�)Nr��)rt���r���prompt_user_passwd)r����rv���r%��r���r����r��r��rL���rL���rM���r�� ��s���� �zFancyURLopener.get_user_passwdc�������������C���sT���dd�l�}y,td||f��}|j�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����rv���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��rT��rU��r��r��rF��r��r��r��rL���rL���rL���rM���r9���]��s"��� � � c���������������C���s���t�d�krtjd�a�t�S�)Nr���)� _localhostr����r���rL���rL���rL���rM���r���4 ��s���� r���c���������������C���sP���t�d�krLyttjtj���d��a�W�n(�tjk rJ���ttjd�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�krtjd�a�t�S�)Nrn���)� _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|�j���W�n���|�j �����Y�nX�d�S�)Nr���) r��r��rv���r.��r���rJ����refcount� keepalive�initr����)r����r��r��rv���r.��r���rJ���r���rL���rL���rM���r����] ��s����zftpwrapper.__init__c�������������C���s\���dd�l�}d|�_|j��|�_|�jj|�j|�j|�j��|�jj|�j |�j ��dj|�j�}|�jj |��d�S�)Nr���r����)r����busyZFTPr����Zconnectrv���r.��rJ���Zloginr��r��r���r����cwd)r����r���Z_targetrL���rL���rM���r"��m ��s���� zftpwrapper.initc����������-���C���s���dd�l�}|�j���|dkr"d}d}nd|�}d}y|�jj|��W�n*�|jk rh���|�j���|�jj|��Y�nX�d�}|r�|�r�yd|�}|�jj|�\}}W�nR�|jk r��}�z4t|�d�d��d kr�t d |��j tj��d���W�Y�d�d�}~X�nX�|�s�|�jjd��|�rn|�jj ��} zJy|�jj|��W�n4�|jk �rP�}�zt d |��|�W�Y�d�d�}~X�nX�W�d�|�jj| ��X�d|�}nd }|�jj|�\}}d|�_t|jd�|�j�} |��jd7��_|j���| |fS�)Nr���rw��r���zTYPE ArR���zTYPE zRETR r=��Z550z ftp error: %rr:���zLIST ZLISTr���)rw��r���)r����endtransferr����Zvoidcmdr���r"��ZntransfercmdZ error_permr����r���r���r���r����pwdr$��r#��r����makefile� 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|�j���d�S�)NFr���)r!��r ��� real_close)r����rL���rL���rM���r����� ��s���� zftpwrapper.closec�������������C���s4���|�j����|��jd8��_|�jdkr0|�j�r0|�j���d�S�)NrR���r���)r%��r ��r!��r+��)r����rL���rL���rM���r(��� ��s����zftpwrapper.file_closec�������������C���s2���|�j����y|�jj���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�jj��D�]4\}}|j��}|r|dd���dkr||�|d�d��<�qW�dt�jkr^|�jdd���xXt�jj��D�]J\}}|dd���dkrj|j��}|r�||�|d�d��<�qj|�j|d�d ��d���qjW�|�S�) N�����_proxyZREQUEST_METHODr����i����i����i����i����i����)rW����environr{���rt���r����)r��r[���r����rL���rL���rM����getproxies_environment� ��s���� r/��c���������� ���C���s����|d�krt���}y|d�}W�n�tk r.���dS�X�|dkr<dS�t|��\}}dd��|jd�D��}xP|D�]H}|rb|jd�}tj|�}d |�}tj||tj�s�tj||�tj�rbdS�qbW�dS�) N�nor����*rR���c�������������S���s���g�|�]}|j����qS�rL���)rN��)r����r ��rL���rL���rM���r#��� ��s����z,proxy_bypass_environment.<locals>.<listcomp>r����.z (.+\.)?%s$) r/��rq��r ���rB���lstriprP��r���r��rR��)rv���r��Zno_proxy�hostonlyr.��Z no_proxy_listr[����patternrL���rL���rM����proxy_bypass_environment� ��s&���� r6��c���������� ���C���s��ddl�m�}�t|��\}}dd��}d|�kr4|d�r4dS�d�}x�|jdf��D�]�}|sPqFtjd |�}|d�k �r|d�kr�ytj|�}||�}W�n�tk r����wFY�nX�||jd ��} |jd�} | d�kr�d|jd �j d�d ��} nt | d d����} d | �} || ?�| | ?�k�rdS�qF||�|�rFdS�qFW�dS�)Nr���)�fnmatchc�������������S���sh���|�j�d�}ttt|��}t|�dkr<|ddddg�d�d��}|d�d>�|d�d>�B�|d�d>�B�|d �B�S�) Nr2��r����r�������rR���rb��r:���rQ���r=��)rB��r����r���r^���r`���)ZipAddrr-��rL���rL���rM����ip2num ��s ���� z,_proxy_bypass_macosx_sysconf.<locals>.ip2numr2��Zexclude_simpleT� exceptionsz(\d+(?:\.\d+)*)(/\d+)?rR���r:���rQ���� ���F)r7��r ���r����rP��r��r����r���rm����group�countr^���)rv����proxy_settingsr7��r4��r.��r9��ZhostIPr����r����r1���maskrL���rL���rM����_proxy_bypass_macosx_sysconf� ��s:����� r@���darwin)�_get_proxy_settings�_get_proxiesc�������������C���s���t���}t|�|�S�)N)rB��r@��)rv���r>��rL���rL���rM����proxy_bypass_macosx_sysconf: ��s����rD��c���������������C���s���t���S�)N)rC��rL���rL���rL���rM����getproxies_macosx_sysconf> ��s����rE��c�������������C���s ���t���}|rt|�|�S�t|��S�d�S�)N)r/��r6��rD��)rv���r��rL���rL���rM���r��H ��s���� r��c���������������C���s���t���p t��S�)N)r/��rE��rL���rL���rL���rM���r5���U ��s����c��������������C���s��i�}�ydd�l�}W�n�tk r$���|�S�X�y�|j|jd�}|j|d�d�}|r�t|j|d�d��}d|kr�x�|jd�D�]4}|jdd�\}}tjd|�s�d ||f�}||�|<�qrW�n>|d�d ��dkr�||�d<�n$d |�|�d<�d|�|�d<�d|�|�d<�|j ���W�n�t ttfk �r���Y�nX�|�S�)Nr���z;Software\Microsoft\Windows\CurrentVersion\Internet Settings�ProxyEnableZProxyServerr���r��rR���z^([^/:]+)://z%s://%srZ��zhttp:r����z http://%sz https://%sr����zftp://%sr����) �winreg�ImportError�OpenKey�HKEY_CURRENT_USER�QueryValueExr����rB��rP��r��ZCloserm���rB���r����)r��rG���internetSettings�proxyEnableZproxyServer�pr����ZaddressrL���rL���rM����getproxies_registryZ ��s8���� rO��c���������������C���s���t���p t��S�)N)r/��rO��rL���rL���rL���rM���r5���� ��s����c����������&���C���s~��ydd�l�}W�n�tk r ���dS�X�y6|j|jd�}|j|d�d�}t|j|d�d��}W�n�tk rl���dS�X�|�sz|�r~dS�t|��\}}|g}�y tj |�}||kr�|�j |��W�n�tk r����Y�nX�y tj|�}||kr�|�j |��W�n�tk ��r����Y�nX�|jd�}xp|D�]h} | dk�r*d|k�r*dS�| j dd �} | j d d�} | j dd�} x$|�D�]} tj| | tj��rTdS��qTW��qW�dS�) Nr���z;Software\Microsoft\Windows\CurrentVersion\Internet SettingsrF��Z ProxyOverrider��z<local>r2��rR���z\.r1��z.*�?)rG��rH��rI��rJ��rK��r����rm���r ���r����r���r]���ZgetfqdnrB��r����rP��r��rR��)rv���rG��rL��rM��Z proxyOverrideZrawHostr.��ZaddrZfqdnr2��r����rL���rL���rM����proxy_bypass_registry� ��sR���� rQ��c�������������C���s ���t���}|rt|�|�S�t|��S�d�S�)N)r/��r6��rQ��)rv���r��rL���rL���rM���r��� ��s���� )NNN)N)~r��r����r���re��Zhttp.clientr����r���rW���r/��rP��r����r��r���rc���collectionsrZ���rT���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���rH��rC����__all__�version_infor����rF���r����r0���r1���r\���r6���r7���rQ���ASCIIrr���rw���r���r���r2���r���r/���r���r���r��r���r ���r!���r"���r#���r$���r%����urandomrd��r&���r'���r(���ry��r)���r����r����rE���r]���r���r.���r\��r^��r*���r���r+���r,���r-���r���r[���Z nturl2pathr4���r3���r���r8���r9���r��r���r��r���r��r���r��r��r���r/��r6��r@���platformZ_scproxyrB��rC��rD��rE��r��r5���rO��rQ��rL���rL���rL���rM����<module>T���s����P T ?n�$q*@ o�v +3:5!���A�W _ #< - 2