
Kh.                 @   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 j
 d  Z e j d d k r e Z e Z Gd	 d
   d
 e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d d  Z d  d!   Z d" d#   Z d$ d%   Z d& d'   Z  d d( d)  Z! d* d+   Z" d, d-   Z# d. d/   Z$ d0 d d1 d2  Z% d d d d d3 d4  Z& d d d d5 d6  Z' d S)7   )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   E/mod/web/acousticsspace/venv/lib/python3.5/site-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   sF   t  j t |    } | d k rB t  j t |    sB t d   | S)Nr   z Unknown character in unicodedata)unicodedata	combiningunichrname
ValueError)cpvr   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   |  j  d  S)Npunycode)encode)sr   r   r   	_punycode.   s    r    c             C   s   d j  |   S)Nz	U+{0:04X})format)r   r   r   r   _unot1   s    r"   c             C   s   t  |   d k r d Sd S)N?   FT)len)labelr   r   r   valid_label_length5   s    r&   c             C   s&   t  |   | r d n d k r" d Sd S)N      FT)r$   )r%   trailing_dotr   r   r   valid_string_length<   s    r*   Fc       	      C   s  d } xh t  |  d  D]W \ } } t j |  } | d k r[ t d j t |   |    | d k r d } q W| r | r d St j |  d	  } | d k r d } n0 | d
 k r d } n t d j t |      d } d } x t  |  d  D] \ } } t j |  } | r| d k r9t d j |    | d k rNd } n | d k r`d } | d k r| s{| } q| | k rt d   q | d k rt d j |    | d k rd } q | d k r d } q W| st d   d S)NFr    z3Unknown directionality in label {0} at position {1}RALANTr   Lz>First codepoint in label {0} must be directionality L, R or ALENESCSETONBNNSMzHInvalid direction for codepoint at position {0} in a right-to-left labelz2Can not mix numeral types in a right-to-left labelzHInvalid direction for codepoint at position {0} in a left-to-right labelz0Label ends with illegal codepoint directionality)r,   ALAN)r,   r7   )
r,   r7   r8   ENESCSETONBNNSM)r,   r7   r9   r8   )r8   r9   )r/   r9   r:   r;   r<   r=   r>   r?   )r/   r9   )	enumerater   bidirectionalr   r!   repr)	r%   	check_ltr
bidi_labelidxr   	directionrtlvalid_endingnumber_typer   r   r   
check_bidiC   sP    
					
rJ   c             C   s-   t  j |  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    rM   c             C   sR   |  d d  d k r" t  d   |  d d k sB |  d
 d k rN t  d   d	 S)N      z--z4Label has disallowed hyphens in 3rd and 4th positionr   -r   z)Label must not start or end with a hyphenT)r   )r%   r   r   r   check_hyphen_ok   s
     rR   c             C   s(   t  j 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    rU   c             C   s  t  |  |  } | d k rW| d k rL t t  |  | d   t k rL d Sd } xt t | d d d  D]\ } t j j t  |  |   } | t  d  k r qi | t  d  t  d  g k ri d } Pqi W| s d Sd } xw t | d t |    D]\ } t j j t  |  |   } | t  d  k r*q | t  d	  t  d  g k r d } Pq W| S| d
 k r| d k rt t  |  | d   t k rd Sd Sd Sd  S)Ni   r   r   TFTr/   Dr,   i   rQ   rQ   )r   r   _virama_combining_classranger   joining_typesgetr$   )r%   poscp_valueokijoining_typer   r   r   valid_contextj   s<       ra   c             C   s  t  |  |  } | d k r~ d | k  o= t |   d k  n rz t  |  | d  d k rz t  |  | d  d k rz d Sd S| d k r | t |   d k  r t |   d k r t |  | d d  Sd S| d	 k s | d
 k r| d k rt |  | d d  Sd S| d k rixN |  D]F } | d k r0qt | d  s]t | d  s]t | d  rd SqWd Sd | k od k n rx4 |  D], } d t  |  k od k n rd SqWd Sd | k od k n rx4 |  D], } d t  |  k od k n rd SqWd Sd  S)N   r   r   l   TFiu  Greeki  i  Hebrewi0  u   ・HiraganaKatakanaHani`  ii  i  i  )r   r$   r   )r%   r\   	exceptionr]   r   r   r   r   valid_contexto   s>    &4(-""rj   c             C   s  t  |  t t f  r$ |  j d  }  t |   d k rB t d   t |   t |   t |   xWt	 |   D]I\ } } t
 |  } t | t j d  r qm qm t | t j d  r8y> t |  |  s t d j t |  | d t |      Wqt k
 r4t d j t |  | d t |      YqXqm t | t j d	  rt |  |  st d
 j t |  | d t |      qm t d j t |  | d t |      qm Wt |   d  S)Nzutf-8r   zEmpty LabelPVALIDCONTEXTJz-Joiner {0} not allowed at position {1} in {2}r   z?Unknown codepoint adjacent to joiner {0} at position {1} in {2}CONTEXTOz0Codepoint {0} not allowed at position {1} in {2}z0Codepoint {0} at position {1} of {2} not allowed)
isinstancebytes	bytearraydecoder$   r   rU   rR   rM   r@   r   r   r   codepoint_classesra   r   r!   r"   rB   r   rj   r   rJ   )r%   r\   r   r]   r   r   r   check_label   s0    


	&	*./rs   c             C   s   y9 |  j  d  }  t |   t |   s4 t d   |  SWn t k
 rM Yn X|  s` t d   t |   }  t |   t |   }  t |  }  t |   s t d   |  S)NasciizLabel too longzNo Input)	r   ulabelr&   r   UnicodeEncodeErrorunicoders   r    _alabel_prefix)r%   r   r   r   alabel
  s"    


ry   c             C   s   t  |  t t f  sK y |  j d  }  Wn  t k
 rJ t |   |  SYn X|  j   }  |  j t  r |  t	 t  d   }  |  s t
 d   |  j d  d d k r t
 d   n t |   |  j d  S|  j d  }  t |   |  S)Nrt   z5Malformed A-label, no Punycode eligible content foundr   rP   z"A-label must not end with a hyphenr   rQ   )rn   ro   rp   r   rv   rs   lower
startswithrx   r$   r   rq   )r%   r   r   r   ru   #  s$    
	

ru   Tc             C   s  d d l  m  } d } yEx.t |   D] \ } } t |  } | | d k  rS | n t j | | d f  d } | d }	 t |  d k r | d n d }
 |	 d	 k s |	 d
 k r | s |	 d k r | r |
 d k r | | 7} q& |
 d k	 r1|	 d k s$|	 d k r| s$|	 d
 k r1| r1| |
 7} q& |	 d k r& t    q& Wt j d |  SWn= t k
 rt	 d j
 t |  | d t |      Yn Xd S)zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar+      Zr   rN   NVrW   3rK   IrS   z0Codepoint {0} not allowed at position {1} in {2})r|   r@   r   bisectbisect_leftr$   
IndexErrorr   rT   r   r!   r"   rB   )domain
std3_rulestransitionalr|   outputr\   char
code_pointuts46rowstatusreplacementr   r   r   uts46_remap<  s0    
"r   c       	      C   s.  t  |  t t f  r$ |  j d  }  | r< t |  | |  }  d } g  } | r` |  j d  } n t j |   } | s | d g k r t d   | d d k r | d =d } x< | D]4 } t |  }  |  r | j	 |   q t d   q W| r | j	 d	  d
 j
 |  }  t |  |  s*t d   |  S)Nrt   F.r+   zEmpty domainr   TzEmpty label       .zDomain too longrQ   rQ   )rn   ro   rp   rq   r   split_unicode_dots_rer   ry   appendjoinr*   )	r   strictuts46r   r   r)   resultlabelsr%   r   r   r   r   X  s2    r   c             C   s  t  |  t t f  r$ |  j d  }  | r< t |  | d  }  d } g  } | s` t j |   } n |  j d  } | s | d g k r t d   | d	 s | d
 =d } x< | D]4 } t |  }  |  r | j	 |   q t d   q W| r | j	 d  d j
 |  S)Nrt   Fr   r+   zEmpty domainr   TzEmpty labelrQ   rQ   )rn   ro   rp   rq   r   r   r   r   ru   r   r   )r   r   r   r   r)   r   r   r%   r   r   r   rq   w  s,    
rq   )(r+   r   r   r   resys	intrangesr   rX   rx   compiler   version_infostrrw   chrr   UnicodeErrorr   r   r   r   r   r   r    r"   r&   r*   rJ   rM   rR   rU   ra   rj   rs   ry   ru   r   r   rq   r   r   r   r   <module>   sB   <	,) 