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   FC:\Users\sanjo\AppData\Local\Qlobot\Launcher\ext_packages\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   s0   t t| }|dkr,t t| s,td|S )Nr   z Unknown character in unicodedata)unicodedataZ	combiningunichrname
ValueError)cpvr   r   r   _combining_class$   s
    r   c             C   s   t t| tj| S )N)r   ordr   Z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   _unot1   s    r    c             C   s   t | dkrdS dS )N?   FT)len)labelr   r   r   valid_label_length5   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_length<   s    r(   Fc       	      C   sf  d}xHt | dD ]:\}}t|}|dkr>tdt| ||dkrd}qW |sZ|sZdS t| d }|dkrvd}n |d	krd}ntd
t| d}d}xt | dD ]\}}t|}|r|dkrtd||dkrd}n|dkrd}|dkrP|s|}n||krPtdq|dkr4td||dkrDd}q|dkrd}qW |sbt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,   r4   )r,   r.   z2Can not mix numeral types in a right-to-left label)r-   r.   r/   r0   r1   r2   r3   r4   zHInvalid direction for codepoint at position {0} in a left-to-right label)r-   r.   z0Label ends with illegal codepoint directionality)	enumerater   Zbidirectionalr   r   repr)	r#   Z	check_ltrZ
bidi_labelidxr   	directionZrtlZvalid_endingZnumber_typer   r   r   
check_bidiC   sP    






r9   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    r<   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
    rA   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    rD   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 |sdS d}xVt|d t| D ]@}tjt | | }|t dkrq|t d
t d	gkrd}P qW |S |dkr0|dkr,tt | |d  tkr,dS dS dS d S )Ni   r   r   TFr@   Tr-   Dr*   i   )r   r   _virama_combining_classranger   Zjoining_typesgetr"   )r#   poscp_valueokiZjoining_typer   r   r   valid_contextj   s<    

rN   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 rt| dkrt| |d  dS dS |d	ks|d
kr|dkrt| |d  dS dS |dkrx<| D ]4}|dkrqt|dst|dst|drdS qW 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rdkrn n8x2| D ]*}dt |  krdkrn ndS qW dS d S )N   r   r   l   TFiu  Greeki  i  Hebrewi0  u   ・ZHiraganaZKatakanaZHani`  ii  i  i  )r   r"   r   )r#   rJ   	exceptionrK   r   r   r   r   valid_contexto   s>     (

"
 

 
rT   c             C   sP  t | ttfr| d} t| dkr,tdt|  t|  t|  xt	| D ]\}}t
|}t|tjd rrqNqNt|tjd ry,t| |stdt||d t| W n2 tk
r   tdt||d t| Y nX 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 LabelZPVALIDZCONTEXTJz-Joiner {0} not allowed at position {1} in {2}r   z?Unknown codepoint adjacent to joiner {0} at position {1} in {2}ZCONTEXTOz0Codepoint {0} not allowed at position {1} in {2}z0Codepoint {0} at position {1} of {2} not allowed)
isinstancebytes	bytearraydecoder"   r   rD   rA   r<   r5   r   r   r   Zcodepoint_classesrN   r   r   r    r6   r   rT   r   r9   )r#   rJ   r   rK   r   r   r   check_label   s0    

  "rY   c             C   s|   y&|  d} t|  t| s$td| S  tk
r:   Y nX | sHtdt| } t|  t| } t|  } t| sxtd| S )NasciizLabel too longzNo Input)	r   ulabelr$   r   UnicodeEncodeErrorunicoderY   r   _alabel_prefix)r#   r   r   r   alabel
  s"    
r_   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 )NrZ   r   )rU   rV   rW   r   r\   rY   lower
startswithr^   r"   rX   )r#   r   r   r   r[   #  s    


r[   Tc          
   C   s*  ddl m } d}yxt| 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|s|
dkr||7 }q|
dk	r|	dks|	dkr|r|	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   r=   NVrF   3r:   IrB   z0Codepoint {0} not allowed at position {1} in {2})rb   r5   r   bisectbisect_leftr"   
IndexErrorr   rC   r   r   r    r6   )domain
std3_rulestransitionalrb   outputrJ   charZ
code_pointZuts46rowstatusZreplacementr   r   r   uts46_remap8  s0    


rq   c       	      C   s   t | ttfr| d} |r(t| ||} d}g }|r@| d}n
t| }|rX|dgkr`td|d dkrv|d= d}x,|D ]$}t|} | r|	|  q|tdq|W |r|	d	 d

|} t| |std| S )NrZ   F.r)   zEmpty domainr@   TzEmpty label       .zDomain too long)rU   rV   rW   rX   rq   split_unicode_dots_rer   r_   appendjoinr(   )	r   strictuts46rl   rm   r'   resultlabelsr#   r   r   r   r   T  s2    





r   c             C   s   t | ttfr| d} |r(t| |d} d}g }|s@t| }n
| d}|rX|dgkr`td|d sr|d= d}x,|D ]$}t|} | r|	|  qxtdqxW |r|	d d
|S )	NrZ   Frr   r)   zEmpty domainr@   TzEmpty label)rU   rV   rW   rX   rq   rv   ru   r   r[   rw   rx   )r   ry   rz   rl   r'   r{   r|   r#   r   r   r   rX   s  s,    



rX   )F)F)TF)FFFF)FFF)(r)   r   rh   r   resysZ	intrangesr   rG   r^   compilerv   version_infostrr]   chrr   UnicodeErrorr   r   r   r   r   r   r   r    r$   r(   r9   r<   rA   rD   rN   rT   rY   r_   r[   rq   r   rX   r   r   r   r   <module>   sB   

<	,
) 

