o
    ­}”eb  ã                   @   sÎ   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 d¡ZG dd„ dejƒZG dd	„ d	ejƒZG d
d„ dejƒZG dd„ deejƒZG dd„ deejƒZdedeej fdd„Ze e¡ dS )é   )ÚencodeÚdecodeÚalabelÚulabelÚ	IDNAErroré    N)ÚAnyÚTupleÚOptionalu   [.ã€‚ï¼Žï½¡]c                	   @   sL   e Zd Zd
dededeeef fdd„Zd
dededeeef fdd„Zd	S )ÚCodecÚstrictÚdataÚerrorsÚreturnc                 C   ó.   |dkrt d |¡ƒ‚|sdS t|ƒt|ƒfS )Nr   úUnsupported error handling "{}"©ó    r   )r   Úformatr   Úlen©Úselfr   r   © r   úS/Users/abhinavbhinder/Documents/map/venv/lib/python3.10/site-packages/idna/codec.pyr   
   ó
   zCodec.encodec                 C   r   )Nr   r   ©Ú r   )r   r   r   r   r   r   r   r   r      r   zCodec.decodeN)r   )	Ú__name__Ú
__module__Ú__qualname__Ústrr	   ÚbytesÚintr   r   r   r   r   r   r      s     $	r   c                
   @   s.   e Zd Zdedededeeef fdd„ZdS )ÚIncrementalEncoderr   r   Úfinalr   c           
      C   s°   |dkrt d |¡ƒ‚|sdS t |¡}d}|r+|d s"d}|d= n	|s+|d= |r+d}g }d}|D ]}| t|ƒ¡ |r@|d7 }|t|ƒ7 }q1d |¡| }	|t|ƒ7 }|	|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ÚlabelZresult_bytesr   r   r   Ú_buffer_encode   s0   
z!IncrementalEncoder._buffer_encodeN)	r   r   r   r    Úboolr	   r!   r"   r0   r   r   r   r   r#      ó    &r#   c                
   @   s.   e Zd Zdedededeeef fdd„ZdS )ÚIncrementalDecoderr   r   r$   r   c           
      C   sÄ   |dkrt d |¡ƒ‚|sdS t|tƒst|dƒ}t |¡}d}|r5|d s,d}|d= n	|s5|d= |r5d}g }d}|D ]}| t|ƒ¡ |rJ|d	7 }|t|ƒ7 }q;d 	|¡| }	|t|ƒ7 }|	|fS )
Nr   r   r   Úasciir   r%   Ú.r   r   )
r   r   Ú
isinstancer    r'   r(   r)   r   r   r*   )
r   r   r   r$   r+   r,   r-   r.   r/   Z
result_strr   r   r   Ú_buffer_decode>   s4   


z!IncrementalDecoder._buffer_decodeN)	r   r   r   r   r    r1   r	   r"   r7   r   r   r   r   r3   =   r2   r3   c                   @   ó   e Zd ZdS )ÚStreamWriterN©r   r   r   r   r   r   r   r9   a   ó    r9   c                   @   r8   )ÚStreamReaderNr:   r   r   r   r   r<   e   r;   r<   Únamer   c              	   C   s,   | dkrd S t j| tƒ jtƒ jttttd�S )NZidna2008)r=   r   r   ÚincrementalencoderÚincrementaldecoderÚstreamwriterÚstreamreader)	ÚcodecsÚ	CodecInfor   r   r   r#   r3   r9   r<   )r=   r   r   r   Úsearch_functioni   s   ùrD   )Úcorer   r   r   r   r   rB   ÚreÚtypingr   r	   r
   Úcompiler'   r   ÚBufferedIncrementalEncoderr#   ÚBufferedIncrementalDecoderr3   r9   r<   r    rC   rD   Úregisterr   r   r   r   Ú<module>   s    
!$