Ë
    Dü´jB  ã                  óJ  — d dl mZ d dlZd dlmZ ddlmZmZmZm	Z	m
Z
mZm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d„Z ej*                  e«       y)é    )ÚannotationsN)ÚAnyé   )Ú	IDNAErrorÚ_max_domain_lengthÚ_unicode_dots_reÚalabelÚdecodeÚencodeÚulabelc                  ó$   — e Zd ZdZddd„Zddd„Zy)ÚCodecaf  Stateless IDNA 2008 codec.

    Implements the :class:`codecs.Codec` protocol so that the whole-domain
    encoder (:func:`idna.encode`) and decoder (:func:`idna.decode`) are
    accessible through the standard codec machinery as ``"idna2008"``.

    Only the ``"strict"`` error handler is supported; any other handler
    raises :exc:`~idna.IDNAError`.
    c                ó`   — |dk7  rt        d|› d�d¬«      ‚|syt        |«      t        |«      fS )NÚstrictúUnsupported error handling "ú"Úunsupported_errors©Úcode)ó    r   )r   r   Úlen©ÚselfÚdataÚerrorss      úH/root/workspace/ytshorts/venv/lib/python3.12/site-packages/idna/codec.pyr   zCodec.encode   s;   € Ø�XÒÜÐ:¸6¸(À!ÐDÐK_Ô`Ð`áØä�d‹|œS ›YÐ&Ð&r   c                ó`   — |dk7  rt        d|› d�d¬«      ‚|syt        |«      t        |«      fS )Nr   r   r   r   r   ©Ú r   )r   r
   r   r   s      r   r
   zCodec.decode   s;   € Ø�XÒÜÐ:¸6¸(À!ÐDÐK_Ô`Ð`áØä�d‹|œS ›YÐ&Ð&r   N©r   )r   Ústrr   r!   Úreturnútuple[bytes, int])r   Úbytesr   r!   r"   útuple[str, int])Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r
   © r   r   r   r   	   s   „ ñô'õ'r   r   c                  óJ   ‡ — e Zd ZdZddˆ fd„Zd	ˆ fd„Zd
d„Zdd„Zdd„Zˆ xZ	S )ÚIncrementalEncoderaÐ  Incremental IDNA 2008 encoder.

    Buffers a partial trailing label across calls until either the next
    label separator is seen or ``final=True``, so that streamed input is
    encoded one whole label at a time. Any of the four Unicode label
    separators (``U+002E``, ``U+3002``, ``U+FF0E``, ``U+FF61``) ends a
    label; the result always uses ``U+002E`` as the separator.

    The 253-octet domain length limit (254 with a trailing dot) that
    :func:`idna.encode` enforces is applied to the accumulated output, so
    that streaming a name and encoding it in one shot either both succeed
    with the same result or both raise :exc:`~idna.IDNAError`.

    Only the ``"strict"`` error handler is supported.
    c                ó@   •— t         ‰| �  |«       d| _        d| _        y ©Nr   F)ÚsuperÚ__init__Ú_emittedÚ_trailing_dot©r   r   Ú	__class__s     €r   r0   zIncrementalEncoder.__init__8   s   ø€ Ü‰Ñ˜Ô ØˆŒØ"ˆÕr   c                ó>   •— t         ‰| �  «        d| _        d| _        y r.   )r/   Úresetr1   r2   ©r   r4   s    €r   r6   zIncrementalEncoder.reset=   s   ø€ Ü‰‰ŒØˆŒØ"ˆÕr   c                óz   — | j                   s| j                  sy| j                   | j                  | j                  fS ©Nr   )Úbufferr1   r2   ©r   s    r   ÚgetstatezIncrementalEncoder.getstateB   s-   € Ø�{Š{ 4§=¢=ØØ—‘˜TŸ]™]¨D×,>Ñ,>Ð?Ð?r   c                óT   — |r|\  | _         | _        | _        y | j                  «        y ©N)r:   r1   r2   r6   ©r   Ústates     r   ÚsetstatezIncrementalEncoder.setstateG   s!   € ÙØ=BÑ:ˆDŒK˜œ¨Õ(:à�J‰J�Lr   c                ó$  — |dk7  rt        d|› d�d¬«      ‚d}d}|r‡t        j                  |«      }d}|r|d   sd	}|d= n	|s|d= |rd	}g }|D ]1  }	|j                  t	        |	«      «       |r|d
z  }|t        |	«      z  }Œ3 d	j                  |«      |z   }|t        |«      z  }| xj                  t        |«      z  c_        |r|j                  d	«      | _	        | j                  xs | }
| j                  t        |
z   kD  rt        dd¬«      ‚||fS )Nr   r   r   r   r   r   r   éÿÿÿÿó   .r   úDomain too longÚdomain_too_long)r   r   ÚsplitÚappendr	   r   Újoinr1   Úendswithr2   r   )r   r   r   ÚfinalÚresult_bytesÚsizeÚlabelsÚtrailing_dotÚresultÚlabelÚmay_end_with_dots              r   Ú_buffer_encodez!IncrementalEncoder._buffer_encodeM   s9  € Ø�XÒÜÐ:¸6¸(À!ÐDÐK_Ô`Ð`àˆØˆÙÜ%×+Ñ+¨DÓ1ˆFØˆLÙØ˜b’zØ#'�LØ˜r™
Ùà˜r˜
ÙØ'+˜àˆFØò #�Ø—‘œf U›mÔ,ÙØ˜A‘I�DØœ˜E›
Ñ"‘ð	#ð  Ÿ9™9 VÓ,¨|Ñ;ˆLØ”C˜Ó%Ñ%ˆDð
 	�Šœ˜\Ó*Ñ*�ÙØ!-×!6Ñ!6°tÓ!<ˆDÔØ×-Ñ-Ò:°U°ÐØ�=‰=Ô-Ð0@Ñ@Ò@ÜÐ-Ð4EÔFÐFØ˜TÐ!Ð!r   r    ©r   r!   r"   ÚNone©r"   rU   )r"   r   )r@   r   r"   rU   )r   r!   r   r!   rK   Úboolr"   r#   )
r&   r'   r(   r)   r0   r6   r<   rA   rS   Ú__classcell__©r4   s   @r   r,   r,   '   s"   ø„ ñö #õ
#ó
@ó
÷&"r   r,   c                  óJ   ‡ — e Zd ZdZddˆ fd„Zd	ˆ fd„Zd
d„Zdd„Zdd„Zˆ xZ	S )ÚIncrementalDecodera  Incremental IDNA 2008 decoder.

    Buffers a partial trailing label across calls until either the next
    label separator is seen or ``final=True``, so that streamed input is
    decoded one whole label at a time.

    The 254-octet input length limit that :func:`idna.decode` enforces is
    applied to the accumulated input, so that streaming a name and decoding
    it in one shot either both succeed with the same result or both raise
    :exc:`~idna.IDNAError`.

    Only the ``"strict"`` error handler is supported.
    c                ó2   •— t         ‰| �  |«       d| _        y r9   )r/   r0   Ú	_consumedr3   s     €r   r0   zIncrementalDecoder.__init__…   s   ø€ Ü‰Ñ˜Ô Øˆ�r   c                ó0   •— t         ‰| �  «        d| _        y r9   )r/   r6   r]   r7   s    €r   r6   zIncrementalDecoder.reset‰   s   ø€ Ü‰‰ŒØˆ�r   c                ó2   — | j                   | j                  fS r>   ©r:   r]   r;   s    r   r<   zIncrementalDecoder.getstate�   s   € Ø—‘˜TŸ^™^Ð,Ð,r   c                ó"   — |\  | _         | _        y r>   r`   r?   s     r   rA   zIncrementalDecoder.setstate�   s   € Ø&+Ñ#ˆŒ�T•^r   c                óN  — |dk7  rt        d|› d�d¬«      ‚|syt        |t        «      s	 t        |d«      }| j                  t        |«      z   t        d
z   kD  rt        d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  }| xj                  |z  c_        |
|fS # t        $ r}t        dd	¬«      |‚d }~ww xY w)Nr   r   r   r   r   r   ÚasciizInvalid ASCII in A-labelÚinvalid_asciir   rE   rF   r   rC   ú.r   )r   Ú
isinstancer!   ÚUnicodeDecodeErrorr]   r   r   r   rG   rH   r   rI   )r   r   r   rK   ÚerrrN   rO   rP   rM   rQ   Ú
result_strs              r   Ú_buffer_decodez!IncrementalDecoder._buffer_decode“   sS  € Ø�XÒÜÐ:¸6¸(À!ÐDÐK_Ô`Ð`áØä˜$¤Ô$ð[Ü˜4 Ó)�ð �>‰>œC ›IÑ%Ô(:¸QÑ(>Ò>ÜÐ-Ð4EÔFÐFä!×'Ñ'¨Ó-ˆØˆÙØ˜"’:Ø"�Ø˜2‘JÙà˜2�JÙØ#&�LàˆØˆØò 	ˆEØ�M‰Mœ& ›-Ô(ÙØ˜‘	�Ø”C˜“JÑ‰Dð		ð —X‘X˜fÓ%¨Ñ4ˆ
Ø”�LÓ!Ñ!ˆØ�Š˜$Ñ�Ø˜DÐ!Ð!øôC &ò [ÜÐ :ÀÔQÐWZÐZûð[ús   «D Ä	D$ÄDÄD$r    rT   rV   )r"   r#   )r@   r#   r"   rU   )r   r   r   r!   rK   rW   r"   r%   )
r&   r'   r(   r)   r0   r6   r<   rA   rj   rX   rY   s   @r   r[   r[   v   s!   ø„ ñöõó-ó,÷+"r   r[   c                  ó   — e Zd Zy)ÚStreamWriterN©r&   r'   r(   r*   r   r   rl   rl   Á   ó   „ Ør   rl   c                  ó   — e Zd Zy)ÚStreamReaderNrm   r*   r   r   rp   rp   Å   rn   r   rp   c           	     ó®   — | dk7  ryt        j                  | t        «       j                  t        «       j                  t
        t        t        t        ¬«      S )a£  Codec search function registered with :mod:`codecs`.

    Returns a :class:`codecs.CodecInfo` for the ``"idna2008"`` codec name
    so that ``str.encode("idna2008")`` and ``bytes.decode("idna2008")``
    invoke the IDNA 2008 codec defined in this module.

    :param name: The codec name being looked up.
    :returns: A :class:`codecs.CodecInfo` instance if ``name`` is
        ``"idna2008"``, otherwise ``None``.
    Úidna2008N)Únamer   r
   ÚincrementalencoderÚincrementaldecoderÚstreamwriterÚstreamreader)	ÚcodecsÚ	CodecInfor   r   r
   r,   r[   rl   rp   )rs   s    r   Úsearch_functionrz   É   sC   € ð ˆzÒØÜ×ÑØÜ‹w�~‰~Ü‹w�~‰~Ü-Ü-Ü!Ü!ôð r   )rs   r!   r"   zcodecs.CodecInfo | None)Ú
__future__r   rx   Útypingr   Úcorer   r   r   r	   r
   r   r   r   ÚBufferedIncrementalEncoderr,   ÚBufferedIncrementalDecoderr[   rl   rp   rz   Úregisterr*   r   r   ú<module>r�      sŽ   ðÝ "ã Ý ç a× aÑ aô'ˆF�L‰Lô 'ô<L"˜×:Ñ:ô L"ô^H"˜×:Ñ:ô H"ôV	�5˜&×-Ñ-ô 	ô	�5˜&×-Ñ-ô 	óð0 €‡��Õ  r   