B
    2*\ʙ                 @   sJ  d dl Z d dlZd dlZdddddddd	d
ddddddddddddgZdddddddddd d!d"d#d$d%d&d'd(d)gZdddddd*dddd!dd d+d"d#d$d,d&d'd%d-d.d/d(d)gZddd0d"dddd d#d$d1d2d!d%d3gZdd0d4d5d*ddd+d1d2g
Zdddddd d!dd#d$d1d2gZddd0ddd5dddd d+dd"gZ	d6Z
d7Zi Zd8d9 Zd:Zd;Zd<d= Zeefd>d?Zeefd@dAZdBdC ZG dDdE dEeZG dFdG dGeZG dHdI dIeZG dJdK dKeeZG dLdM dMeeZd dNlmZ eddOZeddPZeddQZdRe_dSej_dTej _dUe_dVej!_dWej"_dXej#_dYej$_dZej _d[e_ej!jej!_ej"jej"_ej#jej#_d\ej%_ej$jej$_ej jej _eZ&G d]d deeZ'G d^d deeZ(G d_d deeZ)G d`d deeZ*G dad deeZ+G dbd deeZ,dcdd Z-e-  [-ddfdZ.dgdh Z/ddidjZ0dkdl Z1ddmdZ2dnd Z3dod Z4ddpdZ5dqd Z6drZ7da8dsd Z9e :dtZ;ddwdZ<ddyd	Z=ddzd
Z>dd{dZ?e@d|ZAeBeAZCi ZDG d}d~ d~ejEZFdddZGdddZHdddZIdxdddeHfddZJdd ZKdd ZLdaMdd ZNdaOdd ZPdd ZQdd ZRdaSdd ZTdddZUdd ZVdd ZWdd ZXdd ZYdS )    Nurlparse
urlunparseurljoin	urldefragurlsplit
urlunsplit	urlencodeparse_qs	parse_qslquote
quote_plusquote_from_bytesunquoteunquote_plusunquote_to_bytesDefragResultParseResultSplitResultDefragResultBytesParseResultBytesSplitResultBytes ZftphttpZgopherZnntpZimapZwaisfileZhttpsZshttpZmmsZprosperoZrtspZrtspuZsftpZsvnzsvn+sshZwsZwssZtelnetZsnewsZrsyncZnfsZgitzgit+sshZhdlZsipZsipsZtelZmailtoZnewszAabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.   c               C   s   t   t  d S )N)_parse_cacheclear_safe_quoters r   r   7C:\ALexclude\prg\programme\Python37\Lib\urllib\parse.pyclear_cacheS   s    r    asciistrictc             C   s   | S )Nr   )objr   r   r   _noopb   s    r$   c             C   s   |  ||S )N)encode)r#   encodingerrorsr   r   r   _encode_resulte   s    r(   c                s   t  fdd| D S )Nc             3   s"   | ]}|r|  nd V  qdS )r   N)decode).0x)r&   r'   r   r   	<genexpr>k   s    z_decode_args.<locals>.<genexpr>)tuple)argsr&   r'   r   )r&   r'   r   _decode_argsi   s    r/   c              G   sZ   t | d t}x.| dd  D ]}|rt |t|krtdqW |rL| tf S t| tf S )Nr      z$Cannot mix str and non-str arguments)
isinstancestr	TypeErrorr$   r/   r(   )r.   Z	str_inputargr   r   r   _coerce_argsm   s    
r5   c               @   s   e Zd ZdZdddZdS )_ResultMixinStrr   r!   r"   c                s   | j  fdd| D  S )Nc             3   s   | ]}|  V  qd S )N)r%   )r*   r+   )r&   r'   r   r   r,      s    z)_ResultMixinStr.encode.<locals>.<genexpr>)_encoded_counterpart)selfr&   r'   r   )r&   r'   r   r%      s    z_ResultMixinStr.encodeN)r!   r"   )__name__
__module____qualname__	__slots__r%   r   r   r   r   r6   ~   s   r6   c               @   s   e Zd ZdZdddZdS )_ResultMixinBytesr   r!   r"   c                s   | j  fdd| D  S )Nc             3   s   | ]}|  V  qd S )N)r)   )r*   r+   )r&   r'   r   r   r,      s    z+_ResultMixinBytes.decode.<locals>.<genexpr>)_decoded_counterpart)r8   r&   r'   r   )r&   r'   r   r)      s    z_ResultMixinBytes.decodeN)r!   r"   )r9   r:   r;   r<   r)   r   r   r   r   r=      s   r=   c               @   s@   e Zd ZdZedd Zedd Zedd Zedd	 Zd
S )_NetlocResultMixinBaser   c             C   s
   | j d S )Nr   )	_userinfo)r8   r   r   r   username   s    z_NetlocResultMixinBase.usernamec             C   s
   | j d S )Nr0   )r@   )r8   r   r   r   password   s    z_NetlocResultMixinBase.passwordc             C   sD   | j d }|sd S t|tr dnd}||\}}}| | | S )Nr   %   %)	_hostinfor1   r2   	partitionlower)r8   hostnameZ	separatorpercentZzoner   r   r   rH      s    
z_NetlocResultMixinBase.hostnamec             C   s>   | j d }|d k	r:t|d}d|  kr0dks:n td|S )Nr0   
   r   i  zPort out of range 0-65535)rE   int
ValueError)r8   portr   r   r   rM      s    

z_NetlocResultMixinBase.portN)	r9   r:   r;   r<   propertyrA   rB   rH   rM   r   r   r   r   r?      s
   r?   c               @   s(   e Zd ZdZedd Zedd ZdS )_NetlocResultMixinStrr   c             C   sD   | j }|d\}}}|r4|d\}}}|s<d }nd  }}||fS )N@:)netloc
rpartitionrF   )r8   rR   userinfo	have_infohostinforA   have_passwordrB   r   r   r   r@      s    z_NetlocResultMixinStr._userinfoc             C   sl   | j }|d\}}}|d\}}}|rL|d\}}}|d\}}}n|d\}}}|sdd }||fS )NrP   []rQ   )rR   rS   rF   )r8   rR   _rV   have_open_br	bracketedrH   rM   r   r   r   rE      s    z_NetlocResultMixinStr._hostinfoN)r9   r:   r;   r<   rN   r@   rE   r   r   r   r   rO      s   rO   c               @   s(   e Zd ZdZedd Zedd ZdS )_NetlocResultMixinBytesr   c             C   sD   | j }|d\}}}|r4|d\}}}|s<d }nd  }}||fS )N   @   :)rR   rS   rF   )r8   rR   rT   rU   rV   rA   rW   rB   r   r   r   r@      s    z!_NetlocResultMixinBytes._userinfoc             C   sl   | j }|d\}}}|d\}}}|rL|d\}}}|d\}}}n|d\}}}|sdd }||fS )Nr^      [   ]r_   )rR   rS   rF   )r8   rR   rZ   rV   r[   r\   rH   rM   r   r   r   rE      s    z!_NetlocResultMixinBytes._hostinfoN)r9   r:   r;   r<   rN   r@   rE   r   r   r   r   r]      s   r]   )
namedtuplezurl fragmentz!scheme netloc path query fragmentz(scheme netloc path params query fragmentz
DefragResult(url, fragment)

A 2-tuple that contains the url without fragment identifier and the fragment
identifier as a separate argument.
z$The URL with no fragment identifier.z
Fragment identifier separated from URL, that allows indirect identification of a
secondary resource by reference to a primary resource and additional identifying
information.
z
SplitResult(scheme, netloc, path, query, fragment)

A 5-tuple that contains the different components of a URL. Similar to
ParseResult, but does not split params.
z%Specifies URL scheme for the request.z0
Network location where the request is made to.
z@
The hierarchical path, such as the path to a file to download.
z
The query component, that contains non-hierarchical data, that along with data
in path component, identifies a resource in the scope of URI's scheme and
network location.
z
Fragment identifier, that allows indirect identification of a secondary resource
by reference to a primary resource and additional identifying information.
zr
ParseResult(scheme, netloc, path, params,  query, fragment)

A 6-tuple that contains components of a parsed URL.
z
Parameters for last path element used to dereference the URI in order to provide
access to perform some operation on the resource.
c               @   s   e Zd ZdZdd ZdS )r   r   c             C   s    | j r| jd | j  S | jS d S )N#)fragmenturl)r8   r   r   r   geturl8  s    zDefragResult.geturlN)r9   r:   r;   r<   rf   r   r   r   r   r   6  s   c               @   s   e Zd ZdZdd ZdS )r   r   c             C   s   t | S )N)r   )r8   r   r   r   rf   @  s    zSplitResult.geturlN)r9   r:   r;   r<   rf   r   r   r   r   r   >  s   c               @   s   e Zd ZdZdd ZdS )r   r   c             C   s   t | S )N)r   )r8   r   r   r   rf   E  s    zParseResult.geturlN)r9   r:   r;   r<   rf   r   r   r   r   r   C  s   c               @   s   e Zd ZdZdd ZdS )r   r   c             C   s    | j r| jd | j  S | jS d S )N   #)rd   re   )r8   r   r   r   rf   K  s    zDefragResultBytes.geturlN)r9   r:   r;   r<   rf   r   r   r   r   r   I  s   c               @   s   e Zd ZdZdd ZdS )r   r   c             C   s   t | S )N)r   )r8   r   r   r   rf   S  s    zSplitResultBytes.geturlN)r9   r:   r;   r<   rf   r   r   r   r   r   Q  s   c               @   s   e Zd ZdZdd ZdS )r   r   c             C   s   t | S )N)r   )r8   r   r   r   rf   X  s    zParseResultBytes.geturlN)r9   r:   r;   r<   rf   r   r   r   r   r   V  s   c              C   s8   t tfttfttff} x| D ]\}}||_||_qW d S )N)r   r   r   r   r   r   r7   r>   )Z_result_pairsZ_decodedZ_encodedr   r   r   _fix_result_transcoding\  s    
rh   Tc       
      C   sf   t | |\} }}t| ||}|\}}} }}|tkrHd| krHt| \} }nd}t||| |||}	||	S )N;r   )r5   r   uses_params_splitparamsr   )
re   schemeallow_fragments_coerce_resultZsplitresultrR   queryrd   paramsresultr   r   r   r   i  s    c             C   sR   d| kr,|  d| d}|dk r6| dfS n
|  d}| d | | |d d  fS )N/ri   r   r   r0   )findrfind)re   ir   r   r   rk   y  s    

rk   c             C   sL   t | }x*dD ]"}| ||}|dkrt||}qW | || | |d  fS )Nz/?#r   )lenrs   min)re   startdelimcZwdelimr   r   r   _splitnetloc  s    
r{   c             C   sn   | r|   rd S dd l}|d| }| |kr0d S | d\}}} x(dD ] }||krFtd| d d qFW d S )Nr   NFKCrP   z/?#@:znetloc 'z' contains invalid z#characters under NFKC normalization)isasciiunicodedata	normalizerS   rL   )rR   r~   Znetloc2rZ   rz   r   r   r   _checknetloc  s    
r   c             C   sT  t | |\} }}t|}| ||t| t|f}t|d }|rF||S tttkrXt  d } }}| d}	|	dkr| d |	 dkr>| |	d d  } | d d dkrt	| d\}} d|krd	|ksd	|krd|krt
d
|rd| kr| dd\} }d| kr| dd\} }t| td|| ||}
|
t|< ||
S xb| d |	 D ]}|tkrLP qLW | |	d d  }|rtdd |D r| d |	  | }} | d d dkrt	| d\}} d|krd	|ksd	|krd|krt
d
|rd| kr| dd\} }d| kr,| dd\} }t| t||| ||}
|
t|< ||
S )Nr   rQ   r   r   r0      z//rX   rY   zInvalid IPv6 URLrc   ?c             s   s   | ]}|d kV  qdS )
0123456789Nr   )r*   rz   r   r   r   r,     s    zurlsplit.<locals>.<genexpr>)r5   booltyper   getrv   MAX_CACHE_SIZEr    rs   r{   rL   splitr   r   scheme_charsanyrG   )re   rl   rm   rn   keycachedrR   ro   rd   ru   vrz   restr   r   r   r     sZ    




c             C   s<   t |  \}}}}}}}|r&d||f }|t|||||fS )Nz%s;%s)r5   r   )
componentsrl   rR   re   rp   ro   rd   rn   r   r   r   r     s    c             C   s   t |  \}}}}}}|s4|r`|tkr`|d d dkr`|rP|d d dkrPd| }d|pXd | }|rp|d | }|r|d | }|r|d | }||S )	Nr   z//r0   rr   r   rQ   r   rc   )r5   uses_netloc)r   rl   rR   re   ro   rd   rn   r   r   r   r     s      c          	   C   s  | s|S |s| S t | |\} }}t| d|\}}}}}}	t|||\}
}}}}}|
|ks`|
tkrh||S |
tkr|r|t|
|||||fS |}|s|s|}|}|s|}|t|
|||||fS |d}|d dkr|d= |d d dkr|d}n(||d }td |dd |dd< g }xX|D ]P}|dkr^y|  W n tk
rZ   Y nX n|dkrnq*n
|	| q*W |d dkr|	d |t|
|d
|pd|||fS )Nr   rr   r0   z...)r   z..)r5   r   uses_relativer   r   r   filterpop
IndexErrorappendjoin)basere   rm   rn   ZbschemeZbnetlocZbpathZbparamsZbqueryZ	bfragmentrl   rR   pathrp   ro   rd   Z
base_partsZsegmentsZresolved_pathZsegr   r   r   r     sT    






c       	      C   sT   t | \} }d| kr>t| \}}}}}}t|||||df}nd}| }|t||S )Nrc   r   )r5   r   r   r   )	re   rn   snpaqZfragZdefragr   r   r   r   5  s    Z0123456789ABCDEFabcdefc          	   C   s   | s| j  dS t| tr"| d} |  d}t|dkr<| S |d g}|j}td krbdd tD axb|dd  D ]R}y(|t|d d   ||dd   W qp tk
r   |d || Y qpX qpW d	|S )	N    zutf-8rD   r0   r   c             S   s.   i | ]&}t D ]}t|| ||  qqS r   )_hexdigbytesfromhexr%   )r*   r   br   r   r   
<dictcomp>[  s   z$unquote_to_bytes.<locals>.<dictcomp>r   )
r   r1   r2   r%   rv   r   
_hextobyter   KeyErrorr   )stringbitsresr   itemr   r   r   r   H  s*    



z([ -]+)utf-8replacec             C   s   d| kr| j  | S |d krd}|d kr*d}t | }|d g}|j}x@tdt|dD ],}|t|| || |||d   qVW d|S )NrC   zutf-8r   r   r0   r   r   )r   _asciirer   rangerv   r   r)   r   )r   r&   r'   r   r   r   ru   r   r   r   r   h  s    


Fc       
      C   sP   i }t | |||||d}x2|D ]*\}}	||kr>|| |	 q|	g||< qW |S )N)r&   r'   max_num_fields)r
   r   )
qskeep_blank_valuesstrict_parsingr&   r'   r   Zparsed_resultpairsnamevaluer   r   r   r	     s    c             C   s  t | \} }|d k	r<d| d | d }||k r<tddd | dD }g }	x|D ]}
|
sh|shqZ|
dd}t|dkr|rtd	|
f |rZ|d
 nqZt|d s|rZ|d dd}t|||d}||}|d dd}t|||d}||}|	||f qZW |	S )Nr0   &ri   zMax number of fields exceededc             S   s    g | ]}| d D ]}|qqS )ri   )r   )r*   s1s2r   r   r   
<listcomp>  s    zparse_qsl.<locals>.<listcomp>=r   zbad query field: %rr   r   + )r&   r'   )r5   countrL   r   rv   r   r   r   )r   r   r   r&   r'   r   rn   
num_fieldsr   rZ
name_valueZnvr   r   r   r   r   r
     s4    
c             C   s   |  dd} t| ||S )Nr   r   )r   r   )r   r&   r'   r   r   r   r     s    sB   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-~c               @   s$   e Zd Zdd Zdd Zdd ZdS )Quoterc             C   s   t || _d S )N)_ALWAYS_SAFEunionsafe)r8   r   r   r   r   __init__  s    zQuoter.__init__c             C   s   d| j jt| f S )Nz<%s %r>)	__class__r9   dict)r8   r   r   r   __repr__  s    zQuoter.__repr__c             C   s(   || j krt|nd|}|| |< |S )Nz%{:02X})r   chrformat)r8   r   r   r   r   r   __missing__  s    zQuoter.__missing__N)r9   r:   r;   r   r   r   r   r   r   r   r     s   r   rr   c             C   sb   t | tr8| s| S |d krd}|d kr*d}| ||} n |d k	rHtd|d k	rXtdt| |S )Nzutf-8r"   z,quote() doesn't support 'encoding' for bytesz*quote() doesn't support 'errors' for bytes)r1   r2   r%   r3   r   )r   r   r&   r'   r   r   r   r     s     
c             C   sd   t | trd| ks$t | tr2d| kr2t| |||S t |trBd}nd}t| || ||} | ddS )Nr       r   )r1   r2   r   r   r   )r   r   r&   r'   Zspacer   r   r   r   :  s    
c                s   t | ttfstd| sdS t |tr6|dd}ntdd |D }| t| s^|  S yt	|  W n& t
k
r   t|j t	|<  Y nX d fdd| D S )Nz!quote_from_bytes() expected bytesr   r!   ignorec             S   s   g | ]}|d k r|qS )   r   )r*   rz   r   r   r   r   X  s    z$quote_from_bytes.<locals>.<listcomp>c                s   g | ]} |qS r   r   )r*   char)quoterr   r   r   _  s    )r1   r   	bytearrayr3   r2   r%   rstrip_ALWAYS_SAFE_BYTESr)   r   r   r   __getitem__r   )bsr   r   )r   r   r   K  s    
c          	   C   s  t | dr|  } nPyt| r0t| d ts0tW n0 tk
rb   t \}}}td|Y nX g }	|sxr| D ]j\}
}t|
t	r||
|}
n|t
|
|||}
t|t	r|||}n|t
||||}|	|
d |  qrW n,x(| D ]\}
}t|
t	r||
|}
n|t
|
|||}
t|t	rJ|||}|	|
d |  qt|t
rx|||||}|	|
d |  qyt|}W n: tk
r   |t
||||}|	|
d |  Y qX xJ|D ]B}t|t	r|||}n|t
||||}|	|
d |  qW qW d|	S )Nitemsr   z1not a valid non-string sequence or mapping objectr   r   )hasattrr   rv   r1   r-   r3   sysexc_infowith_tracebackr   r2   r   r   )ro   Zdoseqr   r&   r'   Z	quote_viaZtyZvatblkr   r+   Zeltr   r   r   r   a  sP    





c             C   sJ   t | trFy| d } W n( tk
rD   tdt|  d Y nX | S )NASCIIzURL z contains non-ASCII characters)r1   r2   r%   r)   UnicodeErrorrepr)re   r   r   r   to_bytes  s    
r   c             C   s`   t |  } | d d dkr<| dd  dkr<| dd  } | d d dkr\| dd   } | S )Nr0   <r   >   zURL:)r2   strip)re   r   r   r   unwrap  s      r   c             C   sD   t d krtdtja t | }|r<| \}}| |fS d | fS )Nz([^/:]+):(.*))	_typeprogrecompileDOTALLmatchgroupsrG   )re   r   rl   datar   r   r   	splittype  s    
r   c             C   sX   t d krtdtja t | }|rP| \}}|rH|d dkrHd| }||fS d | fS )Nz//([^/#?]*)(.*)r   rr   )	_hostprogr   r   r   r   r   )re   r   Z	host_portr   r   r   r   	splithost  s    
r   c             C   s    |  d\}}} |r|nd | fS )NrP   )rS   )hostuserry   r   r   r   	splituser  s    r   c             C   s    |  d\} }}| |r|nd fS )NrQ   )rF   )r   ry   Zpasswdr   r   r   splitpasswd  s    r   c             C   sD   t d krtdtja t | }|r<| \} }|r<| |fS | d fS )Nz(.*):([0-9]*)$)	_portprogr   r   r   r   r   )r   r   rM   r   r   r   	splitport  s    
r   r   c             C   sT   |  d\} }}|s|} n2|rLyt|}W n tk
rB   d }Y nX | |fS | |fS )NrQ   )rS   rK   rL   )r   Zdefportry   rM   Znportr   r   r   
splitnport  s    
r   c             C   s$   |  d\}}}|r||fS | d fS )Nr   )rS   )re   r   ry   ro   r   r   r   
splitquery  s    r   c             C   s$   |  d\}}}|r||fS | d fS )Nrc   )rS   )re   r   ry   tagr   r   r   splittag  s    r   c             C   s   |  d}|d |dd  fS )Nri   r   r0   )r   )re   Zwordsr   r   r   	splitattr  s    
r   c             C   s    |  d\} }}| |r|nd fS )Nr   )rF   )attrry   r   r   r   r   
splitvalue  s    r   )r   T)r   )r   T)T)r   r   )FFr   r   N)FFr   r   N)r   r   )rr   NN)r   NN)rr   )r   )Zr   r   collections__all__r   r   rj   Znon_hierarchicalZ
uses_queryZuses_fragmentr   r   r   r    Z_implicit_encodingZ_implicit_errorsr$   r(   r/   r5   objectr6   r=   r?   rO   r]   rb   Z_DefragResultBaseZ_SplitResultBaseZ_ParseResultBase__doc__re   rd   rl   rR   r   ro   rp   Z
ResultBaser   r   r   r   r   r   rh   r   rk   r{   r   r   r   r   r   r   r   r   r   r   r   r   r	   r
   r   	frozensetr   r   r   r   defaultdictr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   




!


	

9
E

 
& 
;
	
/

O
