;
Ïâ"Ic               @   s  d  Z  d d l Z d „  Z d „  Z d „  Z d „  Z d „  Z d Z d	 „  Z d
 „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z Gd „  d e j ƒ Z Gd „  d e j ƒ Z Gd „  d e j ƒ Z Gd „  d e e j ƒ Z Gd „  d e e j ƒ Z d „  Z d S(   uY    Codec for the Punicode encoding, as specified in RFC 3492

Written by Martin v. LÃ¶wis.
i    Nc             C   sv   t  ƒ  } t ƒ  } xE |  D]= } t | ƒ d k  o | j t | ƒ ƒ q | j | ƒ q Wt | ƒ } t | ƒ | f S(   u    3.1 Basic code point segregationi€   (   u	   bytearrayu   setu   ordu   appendu   addu   sortedu   bytes(   u   stru   baseu   extendedu   c(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu	   segregate   s    		 c             C   s<   d } x/ |  D]' } t  | ƒ | k  o | d 7} q q W| S(   u@   Return the length of str, considering only characters below max.i    i   (   u   ord(   u   stru   maxu   resu   c(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   selective_len   s     c             C   ss   t  |  ƒ } x` | d 7} | | k o d S|  | } | | k o | d | f S| | k  o | d 7} q q d S(   u  Return a pair (index, pos), indicating the next occurrence of
    char in str. index is the position of the character considering
    only ordinals up to and including char, and pos is the position in
    the full string. index/pos is the starting position in the full
    string.i   iÿÿÿÿN(   iÿÿÿÿiÿÿÿÿ(   u   len(   u   stru   charu   indexu   posu   lu   c(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   selective_find   s    

c             C   sÂ   d } g  } d } x© | D]¡ } d } } t  | ƒ } t |  | ƒ }	 |	 d | | }
 x[ t |  | | | ƒ \ } } | d k o Pn |
 | | 7}
 | j |
 d ƒ | } d }
 qY | } q W| S(   u   3.2 Insertion unsort codingi€   iÿÿÿÿi   i    (   u   ordu   selective_lenu   selective_findu   append(   u   stru   extendedu   oldcharu   resultu   oldindexu   cu   indexu   posu   charu   curlenu   delta(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   insertion_unsort1   s&     
	
c             C   s:   d |  d | } | d k  o d S| d k o d S| S(   Ni$   i   i   (    (   u   ju   biasu   res(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   TG   s      s$   abcdefghijklmnopqrstuvwxyz0123456789c             C   sŽ   t  ƒ  } d } xx t | | ƒ } |  | k  o | j t |  ƒ t | ƒ S| j t | |  | d | ƒ |  | d | }  | d 7} q d S(   u(   3.3 Generalized variable-length integersi    i$   i   N(   u	   bytearrayu   Tu   appendu   digitsu   bytes(   u   Nu   biasu   resultu   ju   t(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   generate_generalized_integerO   s    	!c             C   sv   | o |  d }  n |  d }  |  |  | 7}  d } x& |  d k o |  d }  | d 7} q6 W| d |  |  d } | S(   Ni¼  i   i    iÇ  i#   i$   i&   (    (   u   deltau   firstu   numcharsu	   divisionsu   bias(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   adapt\   s    
 
c             C   sr   t  ƒ  } d } xV t | ƒ D]H \ } } t | | ƒ } | j | ƒ t | | d k |  | d ƒ } q Wt | ƒ S(   u   3.4 Bias adaptationiH   i    i   (   u	   bytearrayu	   enumerateu   generate_generalized_integeru   extendu   adaptu   bytes(   u   baselenu   deltasu   resultu   biasu   pointsu   deltau   s(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   generate_integersk   s    	 $c             C   sN   t  |  ƒ \ } } t |  | ƒ } t t | ƒ | ƒ } | o | d | S| S(   Ns   -(   u	   segregateu   insertion_unsortu   generate_integersu   len(   u   textu   baseu   extendedu   deltas(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   punycode_encodev   s    c       
   
   C   sP  d } d } d } x7y t  |  | ƒ } Wn? t k
 o3 | d k o t d ƒ ‚ n | d d f SYn X| d 7} d | k o
 d k n o | d } n\ d | k o
 d k n o | d	 } n0 | d k o t d
 |  | ƒ ‚ n | d f St | | ƒ }	 | | | 7} | |	 k  o | | f S| d |	 } | d 7} q d S(   u(   3.3 Generalized variable-length integersi    i   u   strictu   incomplete punicode stringiA   iZ   i0   i9   i   u    Invalid extended code point '%s'i$   N(   u   ordu
   IndexErroru   UnicodeErroru   Noneu   T(
   u   extendedu   extposu   biasu   errorsu   resultu   wu   ju   charu   digitu   t(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   decode_generalized_number€   s2    

c       	      C   s(  d } d } d } d } x	| t  | ƒ k  oõ t | | | | ƒ \ } } | d
 k o |  S| | d 7} | | t  |  ƒ d 7} | d k o1 | d k o t d | ƒ ‚ n t d	 ƒ } n | t  |  ƒ d } |  d
 | … t | ƒ |  | d
 … }  t | | d k t  |  ƒ ƒ } | } q W|  S(   u   3.2 Insertion unsort codingi€   iÿÿÿÿiH   i    i   iÿÿ u   strictu   Invalid character U+%xu   ?N(   u   lenu   decode_generalized_numberu   Noneu   UnicodeErroru   ordu   chru   adapt(	   u   baseu   extendedu   errorsu   charu   posu   biasu   extposu   newposu   delta(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   insertion_sortž   s*     	(c             C   sÍ   t  |  t ƒ o |  j d ƒ }  n t  |  t ƒ o t |  ƒ }  n |  j d ƒ } | d k o d } t |  d ƒ j ƒ  } n@ t |  d  | … d | ƒ } t |  | d d  … d ƒ j ƒ  } t | | | ƒ S(   Nu   asciis   -iÿÿÿÿu    i   (   u
   isinstanceu   stru   encodeu
   memoryviewu   bytesu   rfindu   upperu   insertion_sort(   u   textu   errorsu   posu   baseu   extended(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   punycode_decode·   s    #c             B   s&   |  Ee  Z d  d „ Z d  d „ Z d S(   u   strictc             C   s   t  | ƒ } | t | ƒ f S(   N(   u   punycode_encodeu   len(   u   selfu   inputu   errorsu   res(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   encodeÉ   s    c             C   s@   | d k o t  d | ƒ ‚ n t | | ƒ } | t | ƒ f S(   Nu   strictu   replaceu   ignoreu   Unsupported error handling (   u   strictu   replaceu   ignore(   u   UnicodeErroru   punycode_decodeu   len(   u   selfu   inputu   errorsu   res(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   decodeÍ   s    N(   u   __name__u
   __module__u   encodeu   decode(   u
   __locals__(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   CodecÇ   s   
u   Codecc             B   s   |  Ee  Z d d  „ Z d S(   c             C   s
   t  | ƒ S(   N(   u   punycode_encode(   u   selfu   inputu   final(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   encodeÔ   s    NF(   u   __name__u
   __module__u   Falseu   encode(   u
   __locals__(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   IncrementalEncoderÓ   s   
u   IncrementalEncoderc             B   s   |  Ee  Z d d  „ Z d S(   c             C   s7   |  j  d k o t d |  j  ƒ ‚ n t | |  j  ƒ S(   Nu   strictu   replaceu   ignoreu   Unsupported error handling (   u   strictu   replaceu   ignore(   u   errorsu   UnicodeErroru   punycode_decode(   u   selfu   inputu   final(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   decodeØ   s    NF(   u   __name__u
   __module__u   Falseu   decode(   u
   __locals__(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   IncrementalDecoder×   s   
u   IncrementalDecoderc             B   s   |  Ee  Z d  S(   N(   u   __name__u
   __module__(   u
   __locals__(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   StreamWriterÝ   s   
u   StreamWriterc             B   s   |  Ee  Z d  S(   N(   u   __name__u
   __module__(   u
   __locals__(    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   StreamReaderà   s   
u   StreamReaderc               C   s@   t  j d d d t ƒ  j d t ƒ  j d t d t d t d t ƒ S(	   Nu   nameu   punycodeu   encodeu   decodeu   incrementalencoderu   incrementaldecoderu   streamwriteru   streamreader(	   u   codecsu	   CodecInfou   Codecu   encodeu   decodeu   IncrementalEncoderu   IncrementalDecoderu   StreamWriteru   StreamReader(    (    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   getregentryå   s    	(   u   __doc__u   codecsu	   segregateu   selective_lenu   selective_findu   insertion_unsortu   Tu   digitsu   generate_generalized_integeru   adaptu   generate_integersu   punycode_encodeu   decode_generalized_numberu   insertion_sortu   punycode_decodeu   Codecu   IncrementalEncoderu   IncrementalDecoderu   StreamWriteru   StreamReaderu   getregentry(    (    (    u/   /mit/python/lib/python3.0/encodings/punycode.pyu   <module>   s(   									
			