
    =fb                        d dl mZmZmZmZmZ ddlZddlZddlm	Z	m
Z
mZ  ej                  d      Z G d dej                        Z G d d	ej                        Z G d
 dej"                        Z G d deej&                        Z G d deej(                        Zdedeej,                     fdZ ej0                  e       y)   )encodedecodealabelulabel	IDNAError    N)AnyTupleOptionalu   [.。．｡]c            	       L    e Zd Zddededeeef   fdZddededeeef   fdZy)Codecdataerrorsreturnc                 r    |dk7  rt        dj                  |            |syt        |      t        |      fS )NstrictUnsupported error handling "{}"    r   )r   formatr   lenselfr   r   s      ,/usr/lib/python3/dist-packages/idna/codec.pyr   zCodec.encode
   s:    X?FFvNOOd|SY&&r   c                 r    |dk7  rt        dj                  |            |syt        |      t        |      fS )Nr   r    r   )r   r   r   r   r   s      r   r   zCodec.decode   s:    X?FFvNOOd|SY&&r   N)r   )	__name__
__module____qualname__strr
   bytesintr   r    r   r   r   r      sG    '3 ' '5;L ''5 '# 'U38_ 'r   r   c            
       .    e Zd Zdedededeeef   fdZy)IncrementalEncoderr   r   finalr   c                 `   |dk7  rt        dj                  |            |syt        j                  |      }d}|r|d   sd}|d= n	|s|d= |rd}g }d}|D ]1  }|j	                  t        |             |r|dz  }|t        |      z  }3 dj                  |      |z   }	|t        |      z  }|	|fS )	Nr   r   r   r      .r   r   )r   r   _unicode_dots_resplitappendr   r   join)
r   r   r   r'   labelstrailing_dotresultsizelabelresult_bytess
             r   _buffer_encodez!IncrementalEncoder._buffer_encode   s    X?FFvNOO!''-":#2J2J#'L 	EMM&-(	CJD		 yy(<7L!!T!!r   N)	r   r   r    r!   boolr
   r"   r#   r5   r$   r   r   r&   r&      s-    "3 " "D "U5RU:EV "r   r&   c            
       .    e Zd Zdedededeeef   fdZy)IncrementalDecoderr   r   r'   r   c                    |dk7  rt        dj                  |            |syt        |t              st        |d      }t        j                  |      }d}|r|d   sd}|d= n	|s|d= |rd}g }d}|D ]1  }|j                  t        |             |r|d	z  }|t        |      z  }3 dj                  |      |z   }	|t        |      z  }|	|fS )
Nr   r   r   asciir   r)   .r   r   )
r   r   
isinstancer!   r+   r,   r-   r   r   r.   )
r   r   r   r'   r/   r0   r1   r2   r3   
result_strs
             r   _buffer_decodez!IncrementalDecoder._buffer_decode>   s    X?FFvNOO$$tW%D!''-":"2J2J#&L 	EMM&-(	CJD		 XXf%4
L!!D!!r   N)	r   r   r    r	   r!   r6   r
   r#   r>   r$   r   r   r8   r8   =   s,     "3  "  "D  "U3PS8_  "r   r8   c                       e Zd Zy)StreamWriterNr   r   r    r$   r   r   r@   r@   a       r   r@   c                       e Zd Zy)StreamReaderNrA   r$   r   r   rD   rD   e   rB   r   rD   namer   c           	          | dk7  ry t        j                  | t               j                  t               j                  t
        t        t        t              S )Nidna2008)rE   r   r   incrementalencoderincrementaldecoderstreamwriterstreamreader)	codecs	CodecInfor   r   r   r&   r8   r@   rD   )rE   s    r   search_functionrN   i   sA    zw~~w~~--!! r   )corer   r   r   r   r   rL   retypingr	   r
   r   compiler+   r   BufferedIncrementalEncoderr&   BufferedIncrementalDecoderr8   r@   rD   r!   rM   rN   registerr$   r   r   <module>rV      s    ; ;  	 ' '2:::; 'FLL '(":: "B!":: !"H	5&-- 		5&-- 	# (6+;+;"<    r   