관리-도구
편집 파일: request.cpython-39.opt-2.pyc
a �����DOg�����������������������@���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*�zd�dl+Z+W�n�e,�y���dZ-Y�n0�dZ-g�d�Z.dej/dd ���Z0da1de j2fddddd �dd�Z3d d��Z4g�Z5d�dd�Z6dd��Z7e �8de j9�Z:dd��Z;G�dd��d�Z<G�dd��d�Z=dd��Z>G�dd��d�Z?G�dd��de?�Z@G�d d!��d!e?�ZAG�d"d#��d#e?�ZBd$d%��ZCG�d&d'��d'e?�ZDG�d(d)��d)�ZEG�d*d+��d+eE�ZFG�d,d-��d-eF�ZGG�d.d/��d/�ZHG�d0d1��d1eHe?�ZIG�d2d3��d3eHe?�ZJejKZLG�d4d5��d5�ZMG�d6d7��d7e?eM�ZNG�d8d9��d9e?eM�ZOG�d:d;��d;e?�ZPG�d<d=��d=eP�ZQeRejSd>��r�G�d?d@��d@eP�ZTe.�Ud@��G�dAdB��dBe?�ZVG�dCdD��dDe?�ZWdEdF��ZXdGdH��ZYG�dIdJ��dJe?�ZZdKdL��Z[G�dMdN��dNe?�Z\G�dOdP��dPe\�Z]G�dQdR��dRe?�Z^dSZ_ej`dTk�r�d�dUlambZbmcZc�ndVdW��ZbdXdY��Zci�ZdG�dZd[��d[�ZeG�d\d]��d]ee�Zfdagd^d_��Zhdaid`da��Zjdakdbdc��Zldamddde��ZnG�dfdg��dg�Zodhdi��Zpd�djdk�Zqdldm��Zrdndo��Zsejtdpk�rPd�dqlumvZvmwZw�drds��Zxdtdu��Zydvdw��Zzdxdy��Z{n6ej`dTk�r~dzd{��Z|d|dy��Z{d}d~��Z}ddw��ZznepZ{eqZzdS�)������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�ur2td��ts>td��tjtjj||d�}t |d�}t |�} n0|r~t |d�}t |�} ntd�u�r�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����&/usr/lib64/python3.9/urllib/request.pyr0�������s0����4�� � r0���c�����������������C���s���|�a�d�S��N)rF���)rK���rL���rL���rM���r1�������s����r1���c�������������� ���C���sl��t�|��\}}t�t|�|����}|���}|dkrR|sRtj�|�|fW��d�����S�|rbt|d�}nt j dd�}|j}t� |��|���||f} d} d}d}d} d|v�r�t|d ��}|r�|| | |��|�| �}|sҐq|t|�7�}|�|��| d 7�} |r�|| | |��q�W�d�����n1��s0����Y��W�d�����n1��s80����Y��|dk�rh||k��rhtd||f�| ��| S�)N�file�wbF)�delete�� �����r����content-length�Content-Length�����1retrieval incomplete: got only %i out of %i bytes)r���� contextlib�closingr0����info�os�path�normpathrG����tempfile�NamedTemporaryFile�name�_url_tempfiles�append�int�read�len�writer���)rH����filename� reporthookrI���Zurl_typer\����fp�headers�tfp�result�bs�sizerd����blocknum�blockrL���rL���rM���r6�������sH���� N��r6���c��������������� ���C���sB���t�D�]&}�zt�|���W�q�ty(���Y�q0�qt�d�d��=�tr>d�ad�S�rN���)ra���r[����unlink�OSErrorrF���)Z temp_filerL���rL���rM���r7�����s���� r7���z:\d+$c�����������������C���s<���|�j�}t|�d�}|dkr&|��dd�}t�d|d�}|���S�)NrV������Host)�full_urlr���� get_header�_cut_port_re�sub�lower)�requestrH����hostrL���rL���rM����request_host+��s����r|���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���sl���||�_�i�|�_i�|�_d�|�_||�_d�|�_|���D�]\}}|��||��q,|d�u�rRt|��}||�_ ||�_ |rh||�_d�S�rN���)ru���rj����unredirected_hdrs�_datarI����_tunnel_host�items� add_headerr|����origin_req_host�unverifiable�method) �selfrH���rI���rj���r����r����r�����key�valuerL���rL���rM����__init__=��s����zRequest.__init__c�����������������C���s���|�j�rd�|�j|�j��S�|�jS�)Nz{}#{})�fragment�format� _full_url�r����rL���rL���rM���ru���O��s����zRequest.full_urlc�����������������C���s(���t�|�|�_t|�j�\|�_|�_|�����d�S�rN���)r���r����r���r�����_parse�r����rH���rL���rL���rM���ru���U��s���� c�����������������C���s���d�|�_�d�|�_d|�_d�S��Nrs���)r����r�����selectorr����rL���rL���rM���ru���\��s����c�����������������C���s���|�j�S�rN���)r~���r����rL���rL���rM���rI���b��s����zRequest.datac�����������������C���s(���||�j�kr$||�_�|��d�r$|��d��d�S�)N�Content-length)r~���� has_header� remove_header)r����rI���rL���rL���rM���rI���f��s���� c�����������������C���s ���d�|�_�d�S�rN���)rI���r����rL���rL���rM���rI���p��s����c�����������������C���sN���t�|�j�\|�_}|�jd�u�r(td|�j���t|�\|�_|�_|�jrJt|�j�|�_d�S�)Nzunknown url type: %r) r���r�����typerB���ru���r���r{���r����r ���)r�����restrL���rL���rM���r����t��s���� zRequest._parsec�����������������C���s���|�j�d�urdnd}t|�d|�S�)N�POST�GETr����)rI����getattr)r����Zdefault_methodrL���rL���rM���� get_method|��s����zRequest.get_methodc�����������������C���s���|�j�S�rN���)ru���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����r���r{���ru���r����)r����r{���r����rL���rL���rM���� set_proxy���s ���� zRequest.set_proxyc�����������������C���s���|�j�|�jkS�rN���)r����ru���r����rL���rL���rM���� has_proxy���s����zRequest.has_proxyc�����������������C���s���||�j�|���<�d�S�rN���)rj���� capitalize�r����r�����valrL���rL���rM���r�������s����zRequest.add_headerc�����������������C���s���||�j�|���<�d�S�rN���)r}���r����r����rL���rL���rM����add_unredirected_header���s����zRequest.add_unredirected_headerc�����������������C���s���||�j�v�p||�jv�S�rN���)rj���r}����r�����header_namerL���rL���rM���r�������s���� �zRequest.has_headerc�����������������C���s���|�j��||�j�||��S�rN���)rj����getr}���)r����r�����defaultrL���rL���rM���rv������s�����zRequest.get_headerc�����������������C���s ���|�j��|d���|�j�|d���d�S�rN���)rj����popr}���r����rL���rL���rM���r�������s����zRequest.remove_headerc�����������������C���s���i�|�j��|�j�}t|����S�rN���)r}���rj����listr����)r�����hdrsrL���rL���rM����header_items���s����zRequest.header_items)N)�__name__� __module__�__qualname__r�����propertyru����setter�deleterrI���r����r����r����r����r����r����r����r����rv���r����r����rL���rL���rL���rM���r���;��s6���� r���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�)N�Python-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���sR��t�|d�stdt|����d}t|�D��]}|dv�r6q&|�d�}|d�|��}||d�d���}|�d�r�|�d�|�d�}||d�d���}zt|�}W�n�ty����Y�n0�|�j� |i��} | |�j|<�n>|dkr�|}|�j } n*|d kr�|}|�j} n|d kr&|}|�j} nq&| � |g��} | �r t�| |��n | �|��d}q&|�rNt�|�j|��|�|���d�S�)N� add_parentz%expected BaseHandler instance, got %rF)�redirect_request�do_open� proxy_open�_rV����errorrG����responserz���T)�hasattr� TypeErrorr�����dir�find� startswithrc���rB���r����r����r����r����r����� setdefault�bisect�insortrb���r����r����)r�����handlerZadded�meth�i�protocolZ condition�j�kind�lookupr����rL���rL���rM����add_handler���sL���� � zOpenerDirector.add_handlerc�����������������C���s���d�S�rN���rL���r����rL���rL���rM����close���s����zOpenerDirector.closec����������� ������G���s<���|��|d�}|D�]&}t||�}||��}|d�ur|��S�qd�S�)NrL���)r����r����) r�����chainr����� meth_name�argsr����r�����funcrl���rL���rL���rM����_call_chain���s���� zOpenerDirector._call_chainNc����������� ������C���s����t�|t�rt||�}n|}|d�ur(||_||_|j}|d�}|�j�|g��D�]}t||�}||�}qJt � d|j|j|j|� ����|��||�} |d�}|�j�|g��D�]}t||�}||| �} q�| S�)NZ_requestzurllib.RequestZ _response)� isinstance�strr���rI���rJ���r����r����r����r�����sys�auditru���rj���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���rl���r����rL���rL���rM���r������s ���� ��� �zOpenerDirector._openc�����������������G���s~���|dv�r,|�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_%srV����_errorr���r�����http_error_default)r����r����)r�����protor�����dictr����Zhttp_errZ orig_argsrl���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���/ r���c��������������� ���G���s����t���}ttttttttt g }t tjd�r2|� t��t��}|D�]B}|�D�]8}t|t�rht||�r||�|��qDt||�rD|�|��qDq<|D�]}|�|��q�|D�]}|�|����q�|�D�]}t|t�r�|��}|�|��q�|S�)N�HTTPSConnection)r���r���r.���r)���r���r���r+���r*���r/���r-���r����r�����clientrb���rE����setr����r����� issubclass�add�remover����)r����rK���Zdefault_classes�skip�klass�check�hrL���rL���rM���r2���7��s2���� � r2���c�������������������@���s(���e�Zd�ZdZdd��Zdd��Zdd��ZdS�) r�������c�����������������C���s ���||�_�d�S�rN���)�parent)r����r����rL���rL���rM���r����^��s����zBaseHandler.add_parentc�����������������C���s���d�S�rN���rL���r����rL���rL���rM���r����a��s����zBaseHandler.closec�����������������C���s���t�|d�sdS�|�j|jk�S�)N� handler_orderT)r����r����)r�����otherrL���rL���rM����__lt__e��s���� zBaseHandler.__lt__N)r����r����r����r����r����r����r����rL���rL���rL���rM���r���[��s���r���c�������������������@���s���e�Zd�ZdZdd��ZeZdS�)r/���i���c�����������������C���sH���|j�|j|�����}}}d|��kr,dk�sDn�|�j�d|||||�}|S�)N������,��r����)�code�msgrZ���r����r����)r����rz���r����r����r����r����rL���rL���rM���� http_responser��s�����z HTTPErrorProcessor.http_responseN)r����r����r����r����r�����https_responserL���rL���rL���rM���r/���n��s���r/���c�������������������@���s���e�Zd�Zdd��ZdS�)r���c�����������������C���s���t�|j||||��d�S�rN���)r���ru���)r����r����ri���r����r����r����rL���rL���rM���r�������s����z*HTTPDefaultErrorHandler.http_error_defaultN)r����r����r����r����rL���rL���rL���rM���r�����s���r���c�������������������@���s4���e�Zd�ZdZdZdd��Zdd��Ze�Z�ZZ dZ dS�) r�������� ���c����������� ���������st���|����}|dv�r|dv�s:|dv�r(|dks:t|j||||��|�dd�}d����fdd �|j���D��}t|||jd d�S�)N)�-���.���/��i3��)r����ZHEAD)r����r����r����r����� z%20)rT���zcontent-typec��������������������s"���i�|�]\}}|������vr||�qS�rL���)ry�����.0�k�v�ZCONTENT_HEADERSrL���rM���� <dictcomp>���s����z8HTTPRedirectHandler.redirect_request.<locals>.<dictcomp>T)rj���r����r����)r����r���ru����replacerj���r����r���r����) r����r����ri���r����r����rj����newurl�mZ newheadersrL���r��rM���r�������s���� ���z$HTTPRedirectHandler.redirect_requestc����������� ������C���sL��d|v�r|d�}nd|v�r$|d�}nd�S�t�|�}|jdvrRt||d||f�||��|jsn|jrnt|�}d|d<�t|�}t|dtj d�}t |j|�}|��||||||�}|d�u�r�d�S�t |d ��r|j�} |_| �|d �|�jks�t| �|�jk�rt|j||�j|�||��ni��} �|_|_| �|d �d�| |<�|����|����|�jj||jd�S�) N�location�uri�r����r�����ftprs���z+%s - Redirection to url '%s' is not allowed�/r:���z iso-8859-1)�encoding�safe� redirect_dictr���rV����rJ���)r����schemer���r\����netlocr����r���r ����string�punctuationr���ru���r����r����r��r�����max_repeatsre����max_redirections�inf_msgrd���r����r����rG���rJ���) r����r����ri���r����r����rj���r���urlparts�newZvisitedrL���rL���rM����http_error_302���sH���� ����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���&<r���c����������� ������C���s����t�|��\}}|�d�s d�}|�}nZ|�d�s6td|����d|v�rV|�d�}|�d|�}n|�dd�}|dkrnd�}|d|��}t|�\}}|d�ur�t|�\}} nd��}} ||| |fS�)Nr���//zproxy URL with no authority: %r�@r:���rS���)r���r����rB���r����r���r���) �proxyr��Zr_scheme� authorityZhost_separator�end�userinfo�hostport�user�passwordrL���rL���rM����_parse_proxy���s$���� r)��c�������������������@���s"���e�Zd�ZdZddd�Zdd��ZdS�)r����d���Nc�����������������C���sP���|d�u�rt���}||�_|���D�].\}}|���}t|�d|�|||�jfdd���qd�S�)Nz%s_openc�����������������S���s���||�||�S�rN���rL���)�rr"��r����r����rL���rL���rM����<lambda>!��s����z'ProxyHandler.__init__.<locals>.<lambda>)r5����proxiesr����ry����setattrr����)r����r-��r����rH���rL���rL���rM���r������s���� �zProxyHandler.__init__c�����������������C���s����|j�}t|�\}}}}|d�u�r"|}|jr6t|j�r6d�S�|rv|rvdt|�t|�f�} t�| �����d�} |� dd| ���t|�}|� ||��||ks�|dkr�d�S�|�jj||j d�S�d�S�)N�%s:%s�ascii�Proxy-authorization�Basic r����r��)r����r)��r{����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��� r���c�������������������@���s6���e�Zd�Zdd��Zdd��Zdd��Zd dd �Zd d��ZdS�)r ���c�����������������C���s ���i�|�_�d�S�rN���)�passwdr����rL���rL���rM���r����B��s����zHTTPPasswordMgr.__init__c��������������������s\���t�|t�r|g}|�jvr$i��j|<�dD�].��t���fdd�|D���}||f�j|�|<�q(d�S�)N�TFc�����������������3���s���|�]}���|���V��qd�S�rN���)� reduce_uri)r���u��default_portr����rL���rM���� <genexpr>L��s���z/HTTPPasswordMgr.add_password.<locals>.<genexpr>)r����r����r8���tuple)r�����realmr��r'��r8���reduced_urirL���r<��rM����add_passwordE��s���� �zHTTPPasswordMgr.add_passwordc����������� ������C���s`���|�j��|i��}dD�]H}|��||�}|���D�].\}}|D�] }|��||�r6|������S�q6q*qdS�)Nr9���NN)r8��r����r:��r����� is_suburi) r����r@���authuriZdomainsr=���reduced_authuriZurisZauthinfor��rL���rL���rM����find_user_passwordP��s����z"HTTPPasswordMgr.find_user_passwordTc����������� ������C���s����t�|�}|d�r.|d�}|d�}|d�p*d}nd�}|}d}t|�\}}|r~|d�u�r~|d�ur~ddd��|�} | d�ur~d|| f�}||fS�) NrV���r���r:���r���P���i���r����z%s:%d)r���r ���r����) r����r��r=���partsr��r#��r\���r{����portZdportrL���rL���rM���r:��Z��s$������zHTTPPasswordMgr.reduce_uric�����������������C���sN���||krdS�|d�|d�kr dS�|d�}|dd���dkr@|d7�}|d���|�S�)NTr���FrV���rS���r��)r����)r�����base�test�prefixrL���rL���rM���rD��q��s����zHTTPPasswordMgr.is_suburiN)T)r����r����r����r����rB��rG��r:��rD��rL���rL���rL���rM���r ���@��s ��� r ���c�������������������@���s���e�Zd�Zdd��ZdS�)r!���c�����������������C���s0���t��|�||�\}}|d�ur"||fS�t��|�d�|�S�rN���)r ���rG��)r����r@��rE��r'��r(��rL���rL���rM���rG�����s�����z2HTTPPasswordMgrWithDefaultRealm.find_user_passwordN)r����r����r����rG��rL���rL���rL���rM���r!������s���r!���c�����������������������s<���e�Zd�Z��fdd�Zd ��fdd� Zddd�Zdd ��Z���ZS�)r"���c��������������������s���i�|�_�t��j|i�|���d�S�rN���)� authenticated�superr�����r����r�����kwargs�� __class__rL���rM���r�������s����z%HTTPPasswordMgrWithPriorAuth.__init__Fc��������������������s<���|���||��|d�ur&t���d�|||��t���||||��d�S�rN���)�update_authenticatedrO��rB��)r����r@��r��r'��r8���is_authenticatedrR��rL���rM���rB�����s����z)HTTPPasswordMgrWithPriorAuth.add_passwordc�����������������C���s>���t�|t�r|g}dD�]$}|D�]}|��||�}||�j|<�qqd�S��Nr9��)r����r����r:��rN��)r����r��rU��r=��r;��rA��rL���rL���rM���rT�����s���� z1HTTPPasswordMgrWithPriorAuth.update_authenticatedc�����������������C���sD���dD�]:}|���||�}|�jD�]"}|��||�r|�j|�����S�qqd�S�rV��)r:��rN��rD��)r����rE��r=��rF��r��rL���rL���rM���rU�����s ���� z-HTTPPasswordMgrWithPriorAuth.is_authenticated)F)F)r����r����r����r����rB��rT��rU��� __classcell__rL���rL���rR��rM���r"������s��� r"���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�u�rt���}||�_|�jj|�_d�S�rN���)r ���r8��rB��)r����Zpassword_mgrrL���rL���rM���r�������s����z!AbstractBasicAuthHandler.__init__c�����������������c���sp���d}t�j�|�D�]6}|���\}}}|dvr8t�dtd��||fV��d}q|sl|r^|���d�}nd}|d�fV��d�S�)NF)�"�'zBasic Auth Realm was unquoted����Tr���rs���)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�}|D�]H}|��|�D�]8\}}|���dkrB|}q(|d�ur(|��|||�����S�q(q|d�urztd|f���d�S�)N�basiczBAbstractBasicAuthHandler does not support the following scheme: %r)Zget_allrb��ry����retry_http_basic_authrB���) r�����authreqr{���r����rj���Zunsupportedr`��r��r@��rL���rL���rM����http_error_auth_reqed���s���� �z.AbstractBasicAuthHandler.http_error_auth_reqedc�����������������C���s|���|�j��||�\}}|d�urtd||f�}dt�|�����d��}|�|�jd��|krTd�S�|�|�j|��|�j j ||jd�S�d�S�d�S�)Nr/��r2��r0��r��)r8��rG��r4��r5��r6��r7��rv����auth_headerr����r����rG���rJ���)r����r{���r����r@��r'���pw�raw�authrL���rL���rM���rd�����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�)NrU��� Authorizationz{0}:{1}zBasic {}) r����r8��rU��ru���r����rG��r����r6��r4��Zstandard_b64encoder7��r�����strip)r����r����r'��r8��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�)NrU��r����r����TF)r����r8��r����rT��ru���)r����r����r����rL���rL���rM���r������s ����z&AbstractBasicAuthHandler.http_response)N)r����r����r�����re�compile�Ir[��r����rb��rf��rd��rm��r����� https_requestr����rL���rL���rL���rM���r#������s���� r#���c�������������������@���s���e�Zd�ZdZdd��ZdS�)r$���rk��c�����������������C���s���|j�}|��d|||�}|S�)N�www-authenticate)ru���rf��)r����r����ri���r����r����rj���rH���r����rL���rL���rM����http_error_401��s �����z#HTTPBasicAuthHandler.http_error_401N)r����r����r����rg��rs��rL���rL���rL���rM���r$�����s���r$���c�������������������@���s���e�Zd�ZdZdd��ZdS�)r%���r1��c�����������������C���s���|j�}|��d|||�}|S��N�proxy-authenticate)r{���rf��)r����r����ri���r����r����rj���r#��r����rL���rL���rM����http_error_407'��s �����z$ProxyBasicAuthHandler.http_error_407N)r����r����r����rg��rv��rL���rL���rL���rM���r%���#��s���r%���c�������������������@���sN���e�Zd�Zddd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Zdd��Z dd��Z dS�)r&���Nc�����������������C���s4���|d�u�rt���}||�_|�jj|�_d|�_d|�_d�|�_d�S��Nr���)r ���r8��rB���retried�nonce_count� last_nonce)r����r8��rL���rL���rM���r����A��s���� z"AbstractDigestAuthHandler.__init__c�����������������C���s ���d|�_�d�S�rw��)rx��r����rL���rL���rM����reset_retry_countJ��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 failedrV���r����digestrc��zEAbstractDigestAuthHandler does not support the following scheme: '%s')r����rx��r���ru���r_��ry����retry_http_digest_authrB���)r����rg��r{���r����rj���re��r��rL���rL���rM���rf��M��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���rV���z Digest %sr��)r_���parse_keqv_list�filter�parse_http_list�get_authorizationrj���r����rg��r����r����rG���rJ���)r����r����rj���tokenZ challenge�chalZauth_valZresprL���rL���rM���r~��a��s����z0AbstractDigestAuthHandler.retry_http_digest_authc�����������������C���s@���d|�j�|t���f�}|�d�td��}t�|����}|d�d��S�)Nz %s:%s:%s:r0����������)ry���time�ctimer6���_randombytes�hashlib�sha1� hexdigest)r�����nonce�s�b�digrL���rL���rM���� get_cnoncem��s����z$AbstractDigestAuthHandler.get_cnoncec�����������������C���s���z6|d�}|d�}|��d�}|��dd�}|��dd��}W�n�tyJ���Y�d�S�0�|��|�\}} |d�u�rfd�S�|�j�||j�\} }| d�u�r�d�S�|jd�ur�|��|j|�}nd�}d| ||f�} d|���|j f�}|d�u�r�| || �d|||�f��}n~d |� d �v��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@��r����qop� algorithm�MD5�opaquez%s:%s:%sr/��rj���,rV���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_implsr8��rG��ru���rI����get_entity_digestr����r����r_��rz��ry��r���r���)r����r����r���r@��r���r���r���r����H�KDr'��rh��ZentdigZA1ZA2ZrespdigZncvalueZcnonceZnoncebitrK��rL���rL���rM���r���x��s\���� � ��z+AbstractDigestAuthHandler.get_authorizationc��������������������sD���|dkrdd����n|dkr$dd����nt�d|�����fdd�}��|fS�)Nr���c�����������������S���s���t��|��d�����S��Nr0��)r����md5r6��r�����xrL���rL���rM���r,����������z?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>ZSHAc�����������������S���s���t��|��d�����S�r���)r���r���r6��r���r���rL���rL���rM���r,�����r���z.Unsupported digest authentication algorithm %rc��������������������s�����d|�|f��S�)Nr/��rL���)r����d�r���rL���rM���r,�����r���)rB���)r����r���r���rL���r���rM���r������s���� �z-AbstractDigestAuthHandler.get_algorithm_implsc�����������������C���s���d�S�rN���rL���)r����rI���r���rL���rL���rM���r������s����z+AbstractDigestAuthHandler.get_entity_digest)N)r����r����r����r����r{��rf��r~��r���r���r���r���rL���rL���rL���rM���r&���6��s��� > r&���c�������������������@���s���e�Zd�ZdZdZdd��ZdS�)r'���rk������c�����������������C���s*���t�|j�d�}|��d|||�}|�����|S�)NrV���rr��)r���ru���rf��r{���r����r����ri���r����r����rj���r{����retryrL���rL���rM���rs�����s�����z$HTTPDigestAuthHandler.http_error_401N)r����r����r����rg��r����rs��rL���rL���rL���rM���r'������s���r'���c�������������������@���s���e�Zd�ZdZdZdd��ZdS�)r(����Proxy-Authorizationr���c�����������������C���s"���|j�}|��d|||�}|�����|S�rt��)r{���rf��r{��r���rL���rL���rM���rv�����s�����z%ProxyDigestAuthHandler.http_error_407N)r����r����r����rg��r����rv��rL���rL���rL���rM���r(������s���r(���c�������������������@���s6���e�Zd�Zd dd�Zdd��Zdd��Zdd ��Zd d��ZdS�)�AbstractHTTPHandlerr���c�����������������C���s ���||�_�d�S�rN�����_debuglevel)r����� debuglevelrL���rL���rM���r�������s����zAbstractHTTPHandler.__init__c�����������������C���s ���||�_�d�S�rN���r���)r�����levelrL���rL���rM����set_http_debuglevel���s����z'AbstractHTTPHandler.set_http_debuglevelc�����������������C���s���t�jj�|j|����S�rN���)r����r�����HTTPConnection�_get_content_lengthrI���r�����r����rz���rL���rL���rM���r������s�����z'AbstractHTTPHandler._get_content_lengthc�����������������C���s��|j�}|std��|jd�ur�|j}t|t�r8d}t|��|�d�sN|�dd��|�d�s�|�d�s�|��|�}|d�ur�|�dt|���n|�dd��|}|� ��r�t |j�\}}t|�\}} |�d�s�|�d|��|�j jD�]&\} }| ���} |�| �s�|�| |��q�|S�) N� no host givenz\POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.zContent-type�!application/x-www-form-urlencodedr�����Transfer-encodingZchunkedrt���)r{���r���rI���r����r����r����r����r����r���r����r���r����r���r����r����r����)r����rz���r{���rI���r����Zcontent_lengthZsel_hostr��ZselZsel_pathr`���r����rL���rL���rM����do_request_���sF���� � � �� zAbstractHTTPHandler.do_request_c����������� ��� ������sV��|j�}|std��||fd|ji|��}|�|�j��t|j��������fdd�|j� ��D����d��d<�dd����� ��D����|j r�i�}d}|��v�r���|�||<���|=�|j|j |d ��zbz&|j|� ��|j|j��|�d �d��W�n.�t�y�}�zt|��W�Y�d�}~n d�}~0�0�|���} W�n���|������Y�n0�|j�r@|j����d�|_|���| _| j| _| S�)Nr���rJ���c��������������������s���i�|�]\}}|��vr||�qS�rL���rL���r���rj���rL���rM���r��'��s����z/AbstractHTTPHandler.do_open.<locals>.<dictcomp>r����� Connectionc�����������������S���s���i�|�]\}}|����|�qS�rL���)�title)r��r`���r����rL���rL���rM���r��4��r���r���r���r���)Zencode_chunked)r{���r���rJ���Zset_debuglevelr���r����r}����updaterj���r����r���Z set_tunnelrz���r����r����rI���r����rr����getresponser�����sockr����rH����reasonr����) r����Z http_classr����Zhttp_conn_argsr{���r����Ztunnel_headersZproxy_auth_hdr�errr+��rL���r���rM���r������sB���� � zAbstractHTTPHandler.do_openN)r���)r����r����r����r����r���r���r���r����rL���rL���rL���rM���r������s ��� &r���c�������������������@���s���e�Zd�Zdd��ZejZdS�)r)���c�����������������C���s���|���tjj|�S�rN���)r����r����r����r����r����r����rL���rL���rM���� http_open^��s����zHTTPHandler.http_openN)r����r����r����r���r���r���rm��rL���rL���rL���rM���r)���\��s���r)���r����c�������������������@���s$���e�Zd�Zddd�Zdd��ZejZdS�)rE���r���Nc�����������������C���s���t��|�|��||�_||�_d�S�rN���)r���r�����_context�_check_hostname)r����r���r>����check_hostnamerL���rL���rM���r����g��s����zHTTPSHandler.__init__c�����������������C���s���|�j�tjj||�j|�jd�S�)N)r>���r���)r����r����r����r����r���r���r���rL���rL���rM���� https_openl��s�����zHTTPSHandler.https_open)r���NN)r����r����r����r����r���r���r���rq��rL���rL���rL���rM���rE���e��s��� rE���c�������������������@���s.���e�Zd�Zddd�Zdd��Zdd��ZeZeZdS�) r���Nc�����������������C���s$���dd�l�}|d�u�r|j���}||�_d�S�rw��)Zhttp.cookiejar� cookiejarZ CookieJar)r����r���r����rL���rL���rM���r����u��s���� zHTTPCookieProcessor.__init__c�����������������C���s���|�j��|��|S�rN���)r���Zadd_cookie_headerr���rL���rL���rM���rm��{��s����z HTTPCookieProcessor.http_requestc�����������������C���s���|�j��||��|S�rN���)r���Zextract_cookies)r����rz���r����rL���rL���rM���r������s����z!HTTPCookieProcessor.http_response)N)r����r����r����r����rm��r����rq��r����rL���rL���rL���rM���r���t��s ��� r���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���r.���c�����������������C���sN���i�}|�D�]@}|��dd�\}}|d�dkr@|d�dkr@|dd��}|||<�q|S�)N�=rV���r���rX��rS���)r_��)�l�parsed�eltr��r��rL���rL���rM���r�����s���� r��c�����������������C���s����g�}d}d�}}|�D�]l}|r*||7�}d}q|rT|dkr>d}qn|dkrJd}||7�}q|dkrl|��|��d}q|dkrxd}||7�}q|r�|��|��dd��|D��S�) Nrs���F�\TrX��r���c�����������������S���s���g�|�]}|�����qS�rL���)rl��)r���partrL���rL���rM���� <listcomp>���r���z#parse_http_list.<locals>.<listcomp>)rb���)r����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|����vrXtd��n |��|�S�d�S�)Nr:���r ��rZ��r��� localhost�-file:// scheme is supported only on localhost)r����r{���� get_namesr����open_local_file)r����r����rH���rL���rL���rM���� file_open���s����&� zFileHandler.file_openNc�����������������C���s^���t�jd�u�rXz*tt�d�d�t�t����d���t�_W�n"�tjyV���t�d�ft�_Y�n0�t�jS�)Nr���r:���)r*����namesr?��r�����gethostbyname_ex�gethostname�gaierror� gethostbynamer����rL���rL���rM���r������s���� �� zFileHandler.get_namesc�������������� ���C���s���dd�l�}dd�l}|j}|j}t|�}z�t�|�}|j}|jj |j dd�} |�|�d�} |�d| pbd|| f��}|r~t |�\}}|r�|s�t|�|����v�r�|r�d|�|�} nd|�} tt|d�|| �W�S�W�n,�ty��}�zt|��W�Y�d�}~n d�}~0�0�td��d�S�) Nr���T�Zusegmtz6Content-type: %s Content-length: %d Last-modified: %s � text/plain�file://�rbzfile not on local host)�email.utils� mimetypesr{���r����r4���r[����stat�st_size�utils� formatdate�st_mtime� guess_type�message_from_stringr ����_safe_gethostbynamer���r���rG���rr���r���)r����r�����emailr���r{���rg���Z localfile�statsrn����modified�mtyperj���rJ��Zorigurl�exprL���rL���rM���r������s:���� ����zFileHandler.open_local_file)r����r����r����r���r���r���r���rL���rL���rL���rM���r*������s��� r*���c�����������������C���s(���zt��|��W�S��t�jy"���Y�d�S�0�d�S�rN���)r����r���r���)r{���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�u�r>|j}nt|�}t|�\}}|rdt|�\}}nd�}t |�}|pvd}|p~d}zt �|�}W�n,�ty��}�zt|��W�Y�d�}~n d�}~0�0�t |j�\} } | �d�}ttt |��}|d�d��|d��}}|�r|d��s|dd���}z�|��||||||j�} |�r8d�p:d}| D�]2}t|�\}}|���d k�r@|d v��r@|���}�q@| �||�\}}d}|�|j�d�}|�r�|d|�7�}|d�u�r�|dk�r�|d|�7�}t�|�}t|||j�W�S��|j�y(�}�z*td |��}|�t� ��d���W�Y�d�}~n d�}~0�0�d�S�)Nr����ftp error: no host givenrs���r��rS���rV���rp���Dr������a�Ar����rp��r���r���zContent-type: %s zContent-length: %d � ftp error: %rr:���)!�ftplibr���r{���r���r ����FTP_PORTrc���r���r���r ���r����r���rr���r���r����r_��r�����map�connect_ftprJ���r���ry����upper�retrfiler���ru���r���r���r���� all_errors�with_tracebackr�����exc_info)r����r����r���r���r{���rJ��r'��r8��r����r\����attrs�dirsrO����fwr�����attrr����ri����retrlenrj���r���r����excrL���rL���rM����ftp_open���s^���� � zFTPHandler.ftp_openc�������������� ���C���s���t�||||||dd�S�)NF)� persistent)� ftpwrapper)r����r'��r8��r{���rJ��r���rJ���rL���rL���rM���r���/��s�����zFTPHandler.connect_ftpN)r����r����r����r���r���rL���rL���rL���rM���r+������s���5r+���c�������������������@���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_connsr����rL���rL���rM���r����6��s ����zCacheFTPHandler.__init__c�����������������C���s ���||�_�d�S�rN���)r��)r�����trL���rL���rM���� setTimeout=��s����zCacheFTPHandler.setTimeoutc�����������������C���s ���||�_�d�S�rN���)r��)r����r ��rL���rL���rM����setMaxConns@��s����zCacheFTPHandler.setMaxConnsc�����������������C���sr���|||d��|�|f}||�jv�r4t���|�j�|�j|<�n,t||||||�|�j|<�t���|�j�|�j|<�|�����|�j|�S�)Nr��)�joinr��r���r��rJ���r����check_cache)r����r'��r8��r{���rJ��r���rJ���r����rL���rL���rM���r���C��s���� � zCacheFTPHandler.connect_ftpc�����������������C���s����t�����}|�j|krPt|�j����D�].\}}||k�r |�j|�����|�j|=�|�j|=�q tt|�j�����|�_t |�j�|�j kr�t|�j����D�]&\}}||�jkr�|�j|=�|�j|=��q�q�tt|�j�����|�_d�S�rN���)r���r��r����rJ���r����r��r�����min�valuesre���r��)r����r��r��r��rL���rL���rM���r ��N��s���� zCacheFTPHandler.check_cachec�����������������C���s0���|�j����D�]}|����q |�j�����|�j����d�S�rN���)r��r��r�����clearrJ���)r�����connrL���rL���rM����clear_cacheb��s���� zCacheFTPHandler.clear_cacheN) r����r����r����r����r��r��r���r ��r��rL���rL���rL���rM���r,���3��s���r,���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�:rV���r���z;base64i�����text/plain;charset=US-ASCIIz$Content-type: %s Content-length: %d )ru���r_��r����endswithr4���decodebytesr���r���re���r����io�BytesIO)r����r����rH���r��rI���Z mediatyperj���rL���rL���rM���� data_openi��s���� �zDataHandler.data_openN)r����r����r����r��rL���rL���rL���rM���r-���h��s���r-���r�����nt)r4���r3���c�����������������C���s���t�|��S�rN���)r �����pathnamerL���rL���rM���r4������s����r4���c�����������������C���s���t�|��S�rN���)r ���r��rL���rL���rM���r3������s����r3���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���Nr����c�����������������K���sz���dd|�j�ji�}tj|tdd��|d�u�r.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�classrZ��)� stacklevel�key_file� cert_filez User-Agent)ZAcceptz*/*)rS��r����r?���r@���rA���r5���r-��r����r��r���versionr�����_URLopener__tempfilesr[���rq����_URLopener__unlink� tempcache�ftpcache)r����r-��Zx509r����rL���rL���rM���r�������s���� �zURLopener.__init__c�����������������C���s���|������d�S�rN���)r����r����rL���rL���rM����__del__���s����zURLopener.__del__c�����������������C���s���|������d�S�rN���)�cleanupr����rL���rL���rM���r�������s����zURLopener.closec�������������� ���C���sT���|�j�r@|�j�D�]&}z|��|��W�q�ty0���Y�q0�q|�j�d�d��=�|�jrP|�j����d�S�rN���)r��r ��rr���r!��r ��)r����rO���rL���rL���rM���r$�����s���� zURLopener.cleanupc�����������������G���s���|�j��|��d�S�rN���)r����rb���)r����r����rL���rL���rM���� addheader���s����zURLopener.addheaderc�������������� ���C���sp��t�t|��}t|dd�}|�jrL||�jv�rL|�j|�\}}t|d�}t|||�S�t|�\}}|s`d}||�jv�r�|�j|�}t|�\}} t| �\} }| |f}nd�}d|�}||�_ |� dd�}t|�|�r�|dkr�|r�|��|||�S�|�� ||�S�z0|d�u��r�t|�|�|�W�S�t|�|�||�W�S�W�nV�ttf�y.�����Y�n>�t�yj�} �z$td | ��t���d ���W�Y�d�} ~ n d�} ~ 0�0�d�S�)Nz%/:=&?~#+!$,;'@()*[]|�r��r���rO���Zopen_�-r����r���zsocket errorr:���)r���r���r ���r!��rG���r���r���r-��r���r����r��r�����open_unknown_proxy�open_unknownr����r���r���rr���r���r����r���)r����r����rI���rg���rj���ri����urltyperH���r"��� proxyhostr{���r����r`���r����rL���rL���rM���rG������s<���� zURLopener.openc�����������������C���s���t�|�\}}tdd|��d�S�)N� url errorzunknown url type�r���rr���)r����r����rI���r����rH���rL���rL���rM���r)����s����zURLopener.open_unknownc�����������������C���s ���t�|�\}}tdd|�|��d�S�)Nr,��zinvalid proxy for %sr-��)r����r"��r����rI���r����rH���rL���rL���rM���r(����s����zURLopener.open_unknown_proxyc�����������������C���s��t�t|��}|�jr&||�jv�r&|�j|�S�t|�\}}|d�u�r�|rF|dkr�z0|��|�}|���}|����tt|�d��|fW�S��t y����Y�n0�|�� ||�}�zL|���} |r�t |d�} nrt|�\}}t|p�d�\}}t|p�d�\}}t|p�d�\}}t j�|�d�} t�| �\}}|�j�|��t �|d�} z�|| f}|�jd�u�rD||�j|<�d}d}d}d}d| v��rjt| d ��}|�r|||||��|�|�}|�s��q�|t|�7�}| �|��|d7�}|�r|||||���q|W�| ����n | ����0�W�|����n |����0�|dk�r||k��rtd ||f�|��|S�)NrO���rV���rP���rs���rR���rS���r���rT���rU���rW���)r���r���r!��r���r���rZ���r����r4���r���rr���rG���r���r���r[���r\����splitextr^����mkstempr��rb����fdopenrc���rd���re���rf���r���)r����rH���rg���rh���rI���r����Zurl1ri���r����rj���rk���Zgarbager\����suffix�fdrl���rm���rn���rd���ro���rp���rL���rL���rM����retrieve ��sn���� ��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<�|�j D�]\}}|||<��qX|d�u�r�d|d <�| �d|||��n| jd||d��z| ���}W�n �tjj�y����td��Y�n0�d|j��k�r�dk��rn�nt||jd|�|j�S�|��||j|j|j|j|�S�d�S�)Nr����z %s://%s%sz http errorr���r0��zBasic %sr���rk��rt���r����r���r���zContent-Typer����r����r���z$http protocol error: bad status liner����r�����http:)r����r����r���r���r ���r���ry���r3��rr���r4��r5��r6��r7��r����rz���r���r����r����Z BadStatusLiner����statusr���r����� http_errorri���r���)r����Zconnection_factoryrH���rI���Zuser_passwdZproxy_passwdr{���r����Zrealhostr*��r����Z proxy_authrj��Z http_connrj���r`��r����r����rL���rL���rM����_open_generic_httpN��st���� ��zURLopener._open_generic_httpc�����������������C���s���|���tjj||�S�rN���)r7��r����r����r����r����rH���rI���rL���rL���rM���� open_http���s����zURLopener.open_httpc����������� ������C���sb���d|�}t�|�|�rPt|�|�}|d�u�r6||||||�} n|||||||�} | rP| S�|��|||||�S�)Nz http_error_%d)r����r����r����) r����rH���ri����errcode�errmsgrj���rI���r`���r����rl���rL���rL���rM���r6�����s���� zURLopener.http_errorc�����������������C���s���|�����t||||d���d�S�rN���)r����r����r����rH���ri���r:��r;��rj���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����r{���rL���rL���rM����_https_connection���s�����zURLopener._https_connectionc�����������������C���s���|���|�j||�S�rN���)r7��r=��r8��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:���r ��rZ��r������z localhost/r���)r����r����r���ry���rB���r���r����rL���rL���rM���� open_file���s ���� 4 zURLopener.open_filec�������������� ���C���s^��dd�l�}dd�l}t|�\}}t|�}zt�|�}W�n2�tyd�}�zt|j|j ��W�Y�d�}~n d�}~0�0�|j } |jj|j dd�} |�|�d�}|�d|p�d| | f��}|s�|} |d�d��dkr�d|�} tt|d �|| �S�t|�\}}|�sRt�|�t��ft���v��rR|} |d�d��dk�r"d|�} n|d�d ��dk�r@td|���tt|d �|| �S�td ��d�S�)Nr���Tr���z6Content-Type: %s Content-Length: %d Last-modified: %s r���rV���r��r���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���r[���r���rr���r����strerrorrg���r���r���r���r���r���r���r���rG���r ���r����r���r����thishostrB���)r����rH���r���r���r{���rO���Z localnamer����ern���r���r���rj���ZurlfilerJ��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�rbt|�j�D�]*} | |k�r6|�j| �}|�j| =�|�����q6z�||�jv�r�t||||| �|�j|<�|�s�d}nd }| D�]2}t|�\}}|���d k�r�|dv��r�|���}�q�|�j|��||�\}}|�d|��d�}d}|�r|d |�7�}|d�u�r,|dk�r,|d|�7�}t�|�}t||d|��W�S��t���y��}�z&td|��� t!�"��d���W�Y�d�}~n d�}~0�0�d�S�)NzCftp error: proxy support for ftp protocol currently not implementedr���r���rs���r��rS���rV���r���rp��r����r���zftp:zContent-Type: %s zContent-Length: %d zftp error %rr:���)#r����r����r���r���r���r ���r���r���r ���r����r���r���r���rc���r���r_��r ��re���r"���MAXFTPCACHEr����r����r���r���ry���r���r���r���r���r���r���� ftperrorsr���r����r���)r����rH���r���r{���r\���rJ��r'��r8��r���r���r���rO���r����r��r��r����r���r����ri���r���r���rj���r���rL���rL���rM����open_ftp���sj���� �� zURLopener.open_ftpc����������� ��� ���C���s:��t�|t�std��z|�dd�\}}W�n�tyB���tdd��Y�n0�|sLd}|�d�}|dkr�d ||d���vr�||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 implementedr���rV���z data errorzbad data URLr���;r���r���rs���zDate: %sz%a, %d %b %Y %H:%M:%S GMTzContent-type: %sr4��r0��zlatin-1zContent-Length: %d� )r����r����r���r_��rB���rr����rfindrb���r����strftime�gmtimer4��r��r6��r7��r ���re���r ��r���r���r���StringIOr���) r����rH���rI���r����Zsemir��r����rj����frL���rL���rM���� open_data0��s8���� � 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(��r3��r7��r9��r6��r����rC���r=��r>��r@��r���rF��rN��rL���rL���rL���rM���r8������s,��� $ A\ :r8���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|�g|�R�i�|���i�|�_d|�_d|�_d�S�)Nr���r����)r8���r����� auth_cache�tries�maxtriesrP��rL���rL���rM���r����]��s����zFancyURLopener.__init__c�����������������C���s���t�||d|�|�S�)Nr4��)r���r<��rL���rL���rM���r����c��s����z!FancyURLopener.http_error_defaultNc����������� ������C���s~���|��j�d7��_�zb|�jrR|�j�|�jkrRt|�d�r4|�j}n|�j}|||dd|�W�d|�_�S�|��||||||�}|W�d|�_�S�d|�_�0�d�S�)NrV����http_error_500r����z)Internal Server Error: Redirect Recursionr���)rP��rQ��r����rR��r�����redirect_internal) r����rH���ri���r:��r;��rj���rI���r����rl���rL���rL���rM���r��g��s&���� ����zFancyURLopener.http_error_302c����������� ������C���sx���d|v�r|d�}nd|v�r$|d�}nd�S�|�����t|�jd�|�|�}t|�}|jdvrnt|||d|��||��|��|�S�)Nr ��r��r��r��z( Redirection to url '%s' is not allowed.)r����r���r����r���r��r���rG���) r����rH���ri���r:��r;��rj���rI���r��r��rL���rL���rM���rS��y��s ���� ��z FancyURLopener.redirect_internalc�����������������C���s���|���||||||�S�rN����r���r����rH���ri���r:��r;��rj���rI���rL���rL���rM���r�����s����zFancyURLopener.http_error_301c�����������������C���s���|���||||||�S�rN���rT��rU��rL���rL���rM���r�����s����zFancyURLopener.http_error_303c�����������������C���s2���|d�u�r|���||||||�S�|��|||||�S�d�S�rN���)r��r����rU��rL���rL���rM���r�����s����zFancyURLopener.http_error_307Fc����������� ������C���s����d|vrt��|�|||||��|d�}t�d|�} | sHt��|�|||||��| ���\} }| ���dkrtt��|�|||||��|s�t��|�|||||��d|�j�d�}|d�u�r�t|�|�||�S�t|�|�|||�S�d�S�)Nrr���![ ]*([^ ]+)[ ]+realm="([^"]*)"rc��Zretry_�_basic_auth�r8���r����rn���matchr]��ry���r����r����� r����rH���ri���r:��r;��rj���rI���r����stuffrY��r��r@��r`���rL���rL���rM���rs�����s.���� � � ��zFancyURLopener.http_error_401c����������� ������C���s����d|vrt��|�|||||��|d�}t�d|�} | sHt��|�|||||��| ���\} }| ���dkrtt��|�|||||��|s�t��|�|||||��d|�j�d�}|d�u�r�t|�|�||�S�t|�|�|||�S�d�S�)Nru��rV��rc��Zretry_proxy_rW��rX��rZ��rL���rL���rM���rv�����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�u�r�|��|�S�|��||�S�d�S�)N�http://r����r!��rV����%s:%s@%srs���r&���r���r-��r���r�����get_user_passwdr ���rG����r����rH���r@��rI���r{���r����r��r"��r*��r+��Z proxyselectorr����r'��r8��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�u�r�|��|�S�|��||�S�d�S�)N�https://r����r!��rV���r]��rs���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�u�r�|��| �S�|��| |�S�d�S�)Nr!��rV���r]��rs���r&��r\���r���r����r_��r ���rG���� r����rH���r@��rI���r{���r����r����r'��r8��r��rL���rL���rM���rd�����s����� z$FancyURLopener.retry_http_basic_authc����������� ������C���s����t�|�\}}|�d�d�}||d���}|��|||�\}}|sD|sDd�S�dt|dd�t|dd�|f�}d|�|�} |d�u�r�|��| �S�|��| |�S�d�S�)Nr!��rV���r]��rs���r&��rb��rd��re��rL���rL���rM����retry_https_basic_auth ��s����� z%FancyURLopener.retry_https_basic_authr���c�����������������C���s`���|d�|�����}||�jv�r2|r(|�j|=�n |�j|�S�|��||�\}}|sJ|rX||f|�j|<�||fS�)Nr!��)ry���rO���prompt_user_passwd)r����r{���r@��r��r����r'��r8��rL���rL���rM���r_�� ��s���� zFancyURLopener.get_user_passwdc�����������������C���sV���dd�l�}z.td||f��}|��d|||f��}||fW�S��tyP���t���Y�dS�0�d�S�)Nr���zEnter username for %s at %s: z#Enter password for %s in %s at %s: rC��)�getpass�input�KeyboardInterrupt�print)r����r{���r@��rh��r'��r8��rL���rL���rM���rg��! ��s����� z!FancyURLopener.prompt_user_passwd)N)N)N)N)NF)NF)N)N)N)N)r���)r����r����r����r����r����r��rS��r��r��r��rs��rv��ra��rc��rd��rf��r_��rg��rL���rL���rL���rM���r9���Z��s&��� ��� ��� r9���c�������������������C���s���t�d�u�rt�d�a�t�S�)Nr���)� _localhostr����r���rL���rL���rL���rM���r���1 ��s���� r���c�������������������C���sN���t�d�u�rJztt�t����d��a�W�n&�tjyH���tt�d�d��a�Y�n0�t�S�)Nr:���r���)� _thishostr?��r����r���r���r���rL���rL���rL���rM���rB��9 ��s����rB��c������������������C���s���t�d�u�rdd�l}�|�ja�t�S�rw��)� _ftperrorsr���r���)r���rL���rL���rM���rE��D ��s����rE��c�������������������C���s���t�d�u�rt�d�a�t�S�r����)� _noheadersr���r���rL���rL���rL���rM���� noheadersM ��s���� rp��c�������������������@���sF���e�Zd�Zddd�Zdd��Zdd��Zd d ��Zdd��Zd d��Zdd��Z dS�)r���NTc�����������������C���sX���||�_�||�_||�_||�_||�_||�_d|�_||�_z|�����W�n���|�� �����Y�n0�d�S�rw��) r'��r8��r{���rJ��r���rJ����refcount� keepalive�initr����)r����r'��r8��r{���rJ��r���rJ���r���rL���rL���rM���r����Z ��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 ���connectr{���rJ��rJ���Zloginr'��r8��r ��r����cwd)r����r����_targetrL���rL���rM���rs��j ��s���� zftpwrapper.initc�������������� ���C���s���dd�l�}|�����|dv�r"d}d}nd|�}d}z|�j�|��W�n(�|jyf���|�����|�j�|��Y�n0�d�}|r�|s�zd|�}|�j�|�\}}W�nT�|jy��}�z:t|�d�d��dkr�t d |��� t���d ���W�Y�d�}~n d�}~0�0�|�s�|�j�d��|�rz|�j� ��} zXz|�j�|��W�n6�|j�yP�}�zt d |��|�W�Y�d�}~n d�}~0�0�W�|�j�| ��n|�j�| ��0�d|�}nd}|�j�|�\}}d|�_t|�d �|�j�} |��jd7��_|����| |fS�)Nr���)r���r���zTYPE ArV���zTYPE zRETR rZ��Z550r���r:���zLIST �LISTr���)r����endtransferr ��Zvoidcmdr���rs��ZntransfercmdZ error_permr����r���r���r����r����pwdrv��rt��r����makefile� file_closerq��r����)r����rO���r����r����cmd�isdirr��r���r���rz��ZftpobjrL���rL���rM���r���s ��sJ���� � & zftpwrapper.retrfilec�����������������C���s ���d|�_�d�S�rw��)rt��r����rL���rL���rM���ry��� ��s����zftpwrapper.endtransferc�����������������C���s���d|�_�|�jdkr|�����d�S�)NFr���)rr��rq��� real_closer����rL���rL���rM���r����� ��s���� zftpwrapper.closec�����������������C���s2���|������|��jd8��_|�jdkr.|�js.|�����d�S�)NrV���r���)ry��rq��rr��r��r����rL���rL���rM���r|��� ��s����zftpwrapper.file_closec�����������������C���s0���|������z|�j����W�n�t��y*���Y�n0�d�S�rN���)ry��r ��r����rE��r����rL���rL���rM���r��� ��s ����zftpwrapper.real_close)NT) r����r����r����r����rs��r���ry��r����r|��r��rL���rL���rL���rM���r���W ��s������ -r���c������������������C���s����i�}�t�j���D�]4\}}|���}|r|dd���dkr||�|d�d��<�qdt�jv�rZ|��dd���t�j���D�]J\}}|dd���dkrd|���}|r�||�|d�d��<�qd|��|d�d��d���qd|�S�)Ni�����_proxyZREQUEST_METHODr����)r[����environr����ry���r����)r-��r`���r����rL���rL���rM����getproxies_environment� ��s���� r���c�����������������C���s����|d�u�rt���}z|d�}W�n�ty.���Y�dS�0�|dkr<dS�|����}�t|��\}}|�d�D�]Z}|���}|rZ|�d�}|���}||ks�|�|kr��dS�d|�}|�|�s�|��|�rZ�dS�qZdS�)N�noF�*Tr����.)r���r���ry���r ���r_��rl���lstripr��)r{���r-��Zno_proxy�hostonlyrJ��r`���rL���rL���rM����proxy_bypass_environment� ��s*���� r���c����������� ������C���s6��ddl�m�}�ddlm}m}�t|��\}}dd��}d|�vrD|d�rDdS�d�}zt||��}W�n�|yj���Y�n0�|�d d �D�]�} | s�qxt�d| �} | d�u�r |d�u�r || � d��}| � d �}|d�u�r�d| � d�� d�d��}nt|dd����}|dk�sx|dkr�qxd|�}||?�||?�k�r0�dS�qx||�| �rx�dS�qxdS�)Nr�����fnmatch)�AddressValueError�IPv4Addressc�����������������S���sd���|���d�}ttt|��}t|�dkr8|g�d��d�d��}|d�d>�|d�d>�B�|d�d >�B�|d �B�S�)Nr���r����)r���r���r���r���r�������rV���r���r:���r���rZ��)r_��r����r���rc���re���)ZipAddrrI��rL���rL���rM����ip2num ��s ���� z,_proxy_bypass_macosx_sysconf.<locals>.ip2numr���Zexclude_simpleT� exceptionsrL���z(\d+(?:\.\d+)*)(/\d+)?rV���r:���r���� ���F)r���� ipaddressr���r���r ���rc���r����rn��rY���group�count) r{����proxy_settingsr���r���r���r���rJ��r���ZhostIPr����r ��rK���maskrL���rL���rM����_proxy_bypass_macosx_sysconf� ��s:���� r���c�����������������C���s`���ddl�m�}�t|��\}�}|�d�}|D�]4}|���}|dkrJd|�vrZ�dS�q&||�|�r&�dS�q&dS�)Nr���r���rG��z<local>r���TF)r���r ���r_��rl��)r{����overrider���r����Zproxy_overriderL��rL���rL���rM����_proxy_bypass_winreg_override: ��s���� r����darwin)�_get_proxy_settings�_get_proxiesc�����������������C���s���t���}t|�|�S�rN���)r���r���)r{���r���rL���rL���rM����proxy_bypass_macosx_sysconfU ��s����r���c�������������������C���s���t���S�rN���)r���rL���rL���rL���rM����getproxies_macosx_sysconfY ��s����r���c�����������������C���s ���t���}|rt|�|�S�t|��S�d�S�rN���)r���r���r����r{���r-��rL���rL���rM���r3��c ��s���� r3��c�������������������C���s���t���p t��S�rN���)r���r���rL���rL���rL���rM���r5���p ��s����r5���c��������������� ���C���sB��i�}�zdd�l�}W�n�ty&���|��Y�S�0�z�|�|jd�}|�|d�d�}|�rt|�|d�d��}d|vr|d|vr|d�|�}|�d�D�]J}|�dd�\}}t� d |�s�|d v�r�d|�}n|dkr�d |�}||�|<�q�|�� d��rt�dd|�d��}|�� d���p�||�d<�|�� d��p||�d<�|����W�n�t ttf�y<���Y�n0�|�S�)Nr����;Software\Microsoft\Windows\CurrentVersion\Internet Settings�ProxyEnableZProxyServerr���rG��zhttp={0};https={0};ftp={0}rV���z (?:[^/:]+)://)r����r����r ��r\��Zsockszsocks://z ^socks://z socks4://r����r����)�winreg�ImportError�OpenKey�HKEY_CURRENT_USER�QueryValueExr����r����r_��rn��rY��r����rx����Closerr���rB���r����)r-��r����internetSettings�proxyEnableZproxyServer�pr�����addressrL���rL���rM����getproxies_registryu ��sL���� ����� r���c�������������������C���s���t���p t��S�rN���)r���r���rL���rL���rL���rM���r5���� ��s����c�����������������C���s����zdd�l�}W�n�ty ���Y�dS�0�z6|�|jd�}|�|d�d�}t|�|d�d��}W�n�tyl���Y�dS�0�|rv|szdS�t|�|�S�)Nr���Fr���r���Z ProxyOverride)r���r���r���r���r���r����rr���r���)r{���r���r���r���Z proxyOverriderL���rL���rM����proxy_bypass_registry� ��s.��������� r���c�����������������C���s ���t���}|rt|�|�S�t|��S�d�S�rN���)r���r���r���r���rL���rL���rM���r3��� ��s���� )NNN)N)~r4��r����r���r���Zhttp.clientr����r��r[���� posixpathrn��r����r��r����r���r^���rX���r?���Zurllib.errorr���r���r����urllib.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���ra���r6���r7���ro���ASCIIrw���r|���r���r���r2���r���r/���r���r���r)��r���r ���r!���r"���r#���r$���r%����urandomr���r&���r'���r(���r���r)���r����r����rE���rb���r���r.���r��r���r*���r���r+���r,���r-���rD��r`���Z nturl2pathr4���r3���r"��r8���r9���rl��r���rm��rB��rn��rE��ro��rp��r���r���r���r���r����platformZ_scproxyr���r���r���r���r3��r5���r���r���rL���rL���rL���rM����<module>T���s����P �M ?m�$q!+@ o�v +3:5!���@�W _ %@ 1