§
    ¤	ÊjB  ã                  ó4  — 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¦  «         dS )é    )Ú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dS )Ú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`.
    ÚstrictÚdataÚstrÚerrorsÚreturnútuple[bytes, int]c                ó|   — |dk    rt          d|› d�d¬¦  «        ‚|sdS t          |¦  «        t          |¦  «        fS )Nr   úUnsupported error handling "ú"Úunsupported_errors©Úcode)ó    r   )r   r   Úlen©Úselfr   r   s      ú:C:\Projects\Muse2API\.venv\Lib\site-packages\idna/codec.pyr   zCodec.encode   sQ   € Ø�XÒÐÝÐD¸6ÐDÐDÐDÐK_Ð`Ñ`Ô`Ð`àð 	Ø�6å�d‰|Œ|�S ™YœYÐ&Ð&r   Úbytesútuple[str, int]c                ó|   — |dk    rt          d|› d�d¬¦  «        ‚|sdS t          |¦  «        t          |¦  «        fS )Nr   r   r   r   r   ©Ú r   )r   r
   r   r   s      r   r
   zCodec.decode   sQ   € Ø�XÒÐÝÐD¸6ÐDÐDÐDÐK_Ð`Ñ`Ô`Ð`àð 	Ø�5å�d‰|Œ|�S ™YœYÐ&Ð&r   N©r   )r   r   r   r   r   r   )r   r    r   r   r   r!   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r
   © r   r   r   r   	   sP   € € € € € ðð ð'ð 'ð 'ð 'ð 'ð'ð 'ð 'ð 'ð 'ð 'ð '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.
    r   r   r   r   ÚNonec                óf   •— t          ¦   «                              |¦  «         d| _        d| _        d S ©Nr   F)ÚsuperÚ__init__Ú_emittedÚ_trailing_dot©r   r   Ú	__class__s     €r   r1   zIncrementalEncoder.__init__8   s0   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒØ"ˆÔÐÐr   c                ód   •— t          ¦   «                              ¦   «          d| _        d| _        d S r/   )r0   Úresetr2   r3   ©r   r5   s    €r   r7   zIncrementalEncoder.reset=   s)   ø€ Ý‰Œ�Š‰ŒˆØˆŒØ"ˆÔÐÐr   r   c                óJ   — | j         s	| j        sdS | j         | j        | j        fS ©Nr   )Úbufferr2   r3   ©r   s    r   ÚgetstatezIncrementalEncoder.getstateB   s.   € ØŒ{ð 	 4¤=ð 	Ø�1Ø”˜Tœ]¨DÔ,>Ð?Ð?r   Ústatec                ó`   — |r|\  | _         | _        | _        d S |                      ¦   «          d S ©N)r;   r2   r3   r7   ©r   r>   s     r   ÚsetstatezIncrementalEncoder.setstateG   s4   € Øð 	Ø=BÑ:ˆDŒK˜œ¨Ô(:Ð(:Ð(:à�JŠJ‰LŒLˆLˆLˆLr   r   ÚfinalÚboolr   c                óP  — |dk    rt          d|› d�d¬¦  «        ‚d}d}|r›t          j        |¦  «        }d}|r|d         sd	}|d= n	|s|d= |rd	}g }|D ]=}	|                     t	          |	¦  «        ¦  «         |r|d
z  }|t          |	¦  «        z  }Œ>d	                     |¦  «        |z   }|t          |¦  «        z  }| xj        t          |¦  «        z  c_        |r|                     d	¦  «        | _	        | j	        p| }
| j        t          |
z   k    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   Újoinr2   Úendswithr3   r   )r   r   r   rC   Úresult_bytesÚsizeÚlabelsÚtrailing_dotÚresultÚlabelÚmay_end_with_dots              r   Ú_buffer_encodez!IncrementalEncoder._buffer_encodeM   s…  € Ø�XÒÐÝÐD¸6ÐDÐDÐDÐK_Ð`Ñ`Ô`Ð`àˆØˆØð 	&Ý%Ô+¨DÑ1Ô1ˆFØˆLØð ,Ø˜b”zð ,Ø#'�LØ˜r˜
˜
Øð ,à˜r˜
Øð ,Ø'+˜àˆFØð #ð #�Ø—’�f U™mœmÑ,Ô,Ð,Øð Ø˜A‘I�DØ�˜E™
œ
Ñ"��àŸ9š9 VÑ,Ô,¨|Ñ;ˆLØ•C˜Ñ%Ô%Ñ%ˆDð
 	ˆŒ�˜\Ñ*Ô*Ñ*ˆŒØð 	=Ø!-×!6Ò!6°tÑ!<Ô!<ˆDÔØÔ-Ð:°U°ÐØŒ=Õ-Ð0@Ñ@Ò@Ð@ÝÐ-Ð4EÐFÑFÔFÐFØ˜TÐ!Ð!r   r%   ©r   r   r   r-   ©r   r-   )r   r   )r>   r   r   r-   )r   r   r   r   rC   rD   r   r   )
r&   r'   r(   r)   r1   r7   r=   rB   rU   Ú__classcell__©r5   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.
    r   r   r   r   r-   c                óX   •— t          ¦   «                              |¦  «         d| _        d S r:   )r0   r1   Ú	_consumedr4   s     €r   r1   zIncrementalDecoder.__init__…   s&   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒˆˆr   c                óV   •— t          ¦   «                              ¦   «          d| _        d S r:   )r0   r7   r]   r8   s    €r   r7   zIncrementalDecoder.reset‰   s   ø€ Ý‰Œ�Š‰ŒˆØˆŒˆˆr   r   c                ó   — | j         | j        fS r@   ©r;   r]   r<   s    r   r=   zIncrementalDecoder.getstate�   s   € Ø”˜Tœ^Ð,Ð,r   r>   c                ó$   — |\  | _         | _        d S r@   r`   rA   s     r   rB   zIncrementalDecoder.setstate�   s   € Ø&+Ñ#ˆŒ�T”^�^�^r   r   r   rC   rD   r!   c                ó   — |dk    rt          d|› d�d¬¦  «        ‚|sdS t          |t          ¦  «        s6	 t          |d¦  «        }n$# t          $ r}t          dd	¬¦  «        |‚d }~ww xY w| j        t          |¦  «        z   t          d
z   k    rt          dd¬¦  «        ‚t          j        |¦  «        }d}|r|d         sd}|d= n	|s|d= |rd}g }d}|D ]=}	| 	                    t          |	¦  «        ¦  «         |r|d
z  }|t          |	¦  «        z  }Œ>d                     |¦  «        |z   }
|t          |¦  «        z  }| xj        |z  c_        |
|fS )Nr   r   r   r   r   r#   ÚasciizInvalid ASCII in A-labelÚinvalid_asciir   rH   rI   r$   rF   ú.r   )r   Ú
isinstancer   ÚUnicodeDecodeErrorr]   r   r   r   rJ   rK   r   rL   )r   r   r   rC   ÚerrrP   rQ   rR   rO   rS   Ú
result_strs              r   Ú_buffer_decodez!IncrementalDecoder._buffer_decode“   s½  € Ø�XÒÐÝÐD¸6ÐDÐDÐDÐK_Ð`Ñ`Ô`Ð`àð 	Ø�7å˜$¥Ñ$Ô$ð 	[ð[Ý˜4 Ñ)Ô)��øÝ%ð [ð [ð [ÝÐ :ÀÐQÑQÔQÐWZÐZøøøøð[øøøð Œ>�C ™IœIÑ%Õ(:¸QÑ(>Ò>Ð>ÝÐ-Ð4EÐFÑFÔFÐFå!Ô'¨Ñ-Ô-ˆØˆØð 	'Ø˜"”:ð 'Ø"�Ø˜2�J�JØð 'à˜2�JØð 'Ø#&�LàˆØˆØð 	ð 	ˆEØ�MŠM�& ™-œ-Ñ(Ô(Ð(Øð Ø˜‘	�Ø•C˜‘J”JÑˆDˆDà—X’X˜fÑ%Ô%¨Ñ4ˆ
Ø•�LÑ!Ô!Ñ!ˆØˆŒ˜$ÑˆŒØ˜DÐ!Ð!s   ¶A Á
A(ÁA#Á#A(r%   rV   rW   )r   r   )r>   r   r   r-   )r   r   r   r   rC   rD   r   r!   )
r&   r'   r(   r)   r1   r7   r=   rB   rj   rX   rY   s   @r   r[   r[   v   s¦   ø€ € € € € ðð ðð ð ð ð ð ð ðð ð ð ð ð ð-ð -ð -ð -ð,ð ,ð ,ð ,ð+"ð +"ð +"ð +"ð +"ð +"ð +"ð +"r   r[   c                  ó   — e Zd ZdS )ÚStreamWriterN©r&   r'   r(   r*   r   r   rl   rl   Á   ó   € € € € € Ø€Dr   rl   c                  ó   — e Zd ZdS )ÚStreamReaderNrm   r*   r   r   rp   rp   Å   rn   r   rp   Únamer   r   úcodecs.CodecInfo | Nonec           	     ó´   — | dk    rdS 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)rq   r   r
   ÚincrementalencoderÚincrementaldecoderÚstreamwriterÚstreamreader)	ÚcodecsÚ	CodecInfor   r   r
   r,   r[   rl   rp   )rq   s    r   Úsearch_functionr{   É   sO   € ð ˆzÒÐØˆtÝÔØÝ‰wŒwŒ~Ý‰wŒwŒ~Ý-Ý-Ý!Ý!ðñ ô ð r   )rq   r   r   rr   )Ú
__future__r   ry   Útypingr   Úcorer   r   r   r	   r
   r   r   r   ÚBufferedIncrementalEncoderr,   ÚBufferedIncrementalDecoderr[   rl   rp   r{   Úregisterr*   r   r   ú<module>r‚      sŒ  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ að'ð 'ð 'ð 'ð 'ˆFŒLñ 'ô 'ð 'ð<L"ð L"ð L"ð L"ð L"˜Ô:ñ L"ô L"ð L"ð^H"ð H"ð H"ð H"ð H"˜Ô:ñ H"ô H"ð H"ðV	ð 	ð 	ð 	ð 	�5˜&Ô-ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�5˜&Ô-ñ 	ô 	ð 	ðð ð ð ð0 €„�Ñ  Ô  Ð  Ð  Ð  r   