B
    @)H[.  ã               @   s>  d dl mZ ddlZddlZddlZddlZd dlmZ dZdZ	e 
d¡Zejd dkr`eZeZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd7dd„Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Z d8d(d)„Z!d*d+„ Z"d,d-„ Z#d.d/„ Z$d9d1d2„Z%d:d3d4„Z&d;d5d6„Z'dS )<é   )Úidnadataé    N)Úintranges_containé	   s   xn--u   [.ã€‚ï¼Žï½¡]é   c               @   s   e Zd ZdZdS )Ú	IDNAErrorz7 Base exception for all IDNA-encoding related problems N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úVC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-qz7kpjmn\pip\pip\_vendor\idna\core.pyr      s   r   c               @   s   e Zd ZdZdS )ÚIDNABidiErrorz= Exception when bidirectional requirements are not satisfied N)r   r	   r
   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdS )ÚInvalidCodepointz> Exception when a disallowed or unallocated codepoint is used N)r   r	   r
   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdS )ÚInvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used N)r   r	   r
   r   r   r   r   r   r      s   r   c             C   s   t  t| ƒ¡S )N)ÚunicodedataÚ	combiningÚunichr)Úcpr   r   r   Ú_combining_class$   s    r   c             C   s   t t| ƒtj| ƒS )N)r   Úordr   Úscripts)r   Úscriptr   r   r   Ú
_is_script'   s    r   c             C   s
   |   d¡S )NÚpunycode)Úencode)Úsr   r   r   Ú	_punycode*   s    r   c             C   s
   d  | ¡S )Nz	U+{0:04X})Úformat)r   r   r   r   Ú_unot-   s    r   c             C   s   t | ƒdkrdS dS )Né?   FT)Úlen)Úlabelr   r   r   Úvalid_label_length1   s    r#   c             C   s   t | ƒ|rdndkrdS dS )Néþ   éý   FT)r!   )r"   Útrailing_dotr   r   r   Úvalid_string_length8   s    r'   Fc       	      C   sh  d}xJt | dƒD ]<\}}t |¡}|dkr>td t| ƒ|¡ƒ‚|dkrd}P qW |s\|s\dS t | d ¡}|dkrxd}n |d	kr†d}ntd
 t| ƒ¡ƒ‚d}d}x´t | dƒD ]¦\}}t |¡}|�r|dkrÚtd |¡ƒ‚|dkrèd}n|dkrôd}|dk�rR|�s
|}n||k�rRtdƒ‚q¬|dk�r6td |¡ƒ‚|dk�rFd}q¬|dkr¬d}q¬W |�sdtdƒ‚dS )NFr   Ú z3Unknown directionality in label {0} at position {1})ÚRÚALÚANTr   )r)   r*   ÚLz>First codepoint in label {0} must be directionality L, R or AL)
r)   r*   r+   ÚENÚESÚCSÚETÚONÚBNÚNSMzHInvalid direction for codepoint at position {0} in a right-to-left label)r)   r*   r-   r+   r3   )r+   r-   z2Can not mix numeral types in a right-to-left label)r,   r-   r.   r/   r0   r1   r2   r3   zHInvalid direction for codepoint at position {0} in a left-to-right label)r,   r-   z0Label ends with illegal codepoint directionality)Ú	enumerater   Úbidirectionalr   r   Úrepr)	r"   Ú	check_ltrÚ
bidi_labelÚidxr   Ú	directionÚrtlÚvalid_endingÚnumber_typer   r   r   Ú
check_bidi?   sR    






r>   c             C   s"   t  | d ¡d dkrtdƒ‚dS )Nr   ÚMz0Label begins with an illegal combining characterT)r   Úcategoryr   )r"   r   r   r   Úcheck_initial_combiner|   s    rA   c             C   s<   | dd… dkrt dƒ‚| d dks0| d dkr8t dƒ‚d	S )
Né   é   z--z4Label has disallowed hyphens in 3rd and 4th positionr   ú-éÿÿÿÿz)Label must not start or end with a hyphenT)r   )r"   r   r   r   Úcheck_hyphen_okƒ   s
    rF   c             C   s   t  d| ¡| krtdƒ‚d S )NÚNFCz%Label must be in Normalization Form C)r   Ú	normalizer   )r"   r   r   r   Ú	check_nfcŒ   s    rI   c             C   s8  t | | ƒ}|dkrú|dkr8tt | |d  ƒƒtkr8dS d}xTt|d ddƒD ]@}tj t | | ƒ¡}|t dƒkrtqN|t dƒt d	ƒgkrNd}P qNW |sšdS d}xVt|d t| ƒƒD ]@}tj t | | ƒ¡}|t dƒkrØq²|t d
ƒt d	ƒgkr²d}P q²W |S |dk�r0|dk�r,tt | |d  ƒƒtk�r,dS dS dS d S )Ni   r   r   TFrE   ÚTr,   ÚDr)   i   )r   r   Ú_virama_combining_classÚranger   Újoining_typesÚgetr!   )r"   ÚposÚcp_valueÚokÚiÚjoining_typer   r   r   Úvalid_contextj’   s<    

rU   c             C   sÄ  t | | ƒ}|dkrdd|  k r0t| ƒd k r`n n,t | |d  ƒdkr`t | |d  ƒdkr`dS dS |dkrž|t| ƒd k ršt| ƒdkršt| |d  dƒS dS |d	ks®|d
krÌ|dkrÈt| |d  dƒS dS |dk�rx<| D ]4}|dkrêqÜt|dƒ�st|dƒ�st|dƒrÜdS qÜW dS d|  k�r0dk�rln n8x2| D ]*}dt |ƒ  k�rZdk�r:n ndS �q:W dS d|  k�r„dk�rÀn n8x2| D ]*}dt |ƒ  k�r®dk�rŽn ndS �qŽW dS d S )Né·   r   r   él   TFiu  ÚGreekió  iô  ÚHebrewiû0  u   ãƒ»ÚHiraganaÚKatakanaÚHani`  ii  ið  iù  )r   r!   r   )r"   rP   Ú	exceptionrQ   r   r   r   r   Úvalid_contexto¾   s>     (

"
 

 
r^   c             C   s  t | ttfƒr|  d¡} t| ƒdkr,tdƒ‚t| ƒ t| ƒ t| ƒ xÂt	| ƒD ]¶\}}t
|ƒ}t|tjd ƒrrqNqNt|tjd ƒr¬t| |ƒsªtd t|ƒ|d t| ƒ¡ƒ‚qNt|tjd ƒræt| |ƒsätd	 t|ƒ|d t| ƒ¡ƒ‚qNtd
 t|ƒ|d t| ƒ¡ƒ‚qNW t| ƒ d S )Nzutf-8r   zEmpty LabelÚPVALIDÚCONTEXTJz-Joiner {0} not allowed at position {1} in {2}r   ÚCONTEXTOz0Codepoint {0} not allowed at position {1} in {2}z0Codepoint {0} at position {1} of {2} not allowed)Ú
isinstanceÚbytesÚ	bytearrayÚdecoder!   r   rI   rF   rA   r4   r   r   r   Úcodepoint_classesrU   r   r   r   r6   r^   r   r>   )r"   rP   r   rQ   r   r   r   Úcheck_labelç   s&    

 
 "rg   c             C   s¤   yN|   d¡} yt| ƒ W n" tk
r:   td | ¡ƒ‚Y nX t| ƒsLtdƒ‚| S  tk
rb   Y nX | sptdƒ‚t| ƒ} t| ƒ t| ƒ} t	|  } t| ƒs tdƒ‚| S )NÚasciiz$The label {0} is not a valid A-labelzLabel too longzNo Input)
r   Úulabelr   r   r#   ÚUnicodeEncodeErrorÚunicoderg   r   Ú_alabel_prefix)r"   r   r   r   Úalabel  s(    
rm   c             C   s†   t | ttfƒs:y|  d¡} W n tk
r8   t| ƒ | S X |  ¡ } |  t¡r^| t	tƒd … } nt| ƒ |  
d¡S |  
d¡} t| ƒ | S )Nrh   r   )rb   rc   rd   r   rj   rg   ÚlowerÚ
startswithrl   r!   re   )r"   r   r   r   ri     s    


ri   Tc          
   C   s*  ddl m } d}yàxÒt| ƒD ]Æ\}}t|ƒ}||dk r:|nt ||df¡d  }|d }	t|ƒdkrl|d nd}
|	d	ks˜|	d
kr„|r˜|	dkr¢|r¢|
dkr¢||7 }q|
dk	rÔ|	dksÊ|	dkr¾|sÊ|	d
krÔ|rÔ||
7 }q|	dkrtƒ ‚qW t d|¡S  tk
�r$   t	d 
t|ƒ|d t| ƒ¡ƒ‚Y nX dS )zBRe-map the characters in the string according to UTS46 processing.r   )Ú	uts46datar(   é   ÚZr   rB   NÚVrK   Ú3r?   ÚIrG   z0Codepoint {0} not allowed at position {1} in {2})rp   r4   r   ÚbisectÚbisect_leftr!   Ú
IndexErrorr   rH   r   r   r   r6   )ÚdomainÚ
std3_rulesÚtransitionalrp   ÚoutputrP   ÚcharÚ
code_pointÚuts46rowÚstatusÚreplacementr   r   r   Úuts46_remap3  s0    


r‚   c       	      C   sÎ   t | ttfƒr|  d¡} |r(t| ||ƒ} d}g }|r@|  d¡}n
t | ¡}x|r`|d s`|d= qLW |sntdƒ‚|d dkr„|d= d}x|D ]}| t	|ƒ¡ qŠW |r®| d	¡ d
 
|¡} t| |ƒsÊtdƒ‚| S )Nrh   FÚ.r   zEmpty domainrE   r(   Tó    ó   .zDomain too long)rb   rc   rd   re   r‚   ÚsplitÚ_unicode_dots_rer   Úappendrm   Újoinr'   )	r   ÚstrictÚuts46rz   r{   r&   ÚresultÚlabelsr"   r   r   r   r   O  s0    






r   c             C   s´   t | ttfƒr|  d¡} |r(t| |dƒ} d}g }|s@t | ¡}n
|  d¡}x|r`|d s`|d= qLW |sntdƒ‚|d s€|d= d}x|D ]}| t	|ƒ¡ q†W |rª| d¡ d 
|¡S )	Nrh   Frƒ   r   zEmpty domainrE   Tr(   )rb   rc   rd   re   r‚   r‡   r†   r   rˆ   ri   r‰   )r   rŠ   r‹   rz   r&   rŒ   r�   r"   r   r   r   re   l  s*    




re   )F)F)TF)FFFF)FFF)(r(   r   rv   r   ÚreÚsysÚ	intrangesr   rL   rl   Úcompiler‡   Úversion_infoÚstrrk   Úchrr   ÚUnicodeErrorr   r   r   r   r   r   r   r   r#   r'   r>   rA   rF   rI   rU   r^   rg   rm   ri   r‚   r   re   r   r   r   r   Ú<module>   sB   

=	,
)

