§
    xÅjé  ã                  ó†   — d dl mZ d dlmZ d dlmZ d dlmZ  G d„ d¦  «        Z G d„ d¦  «        Z G d	„ d
e	¦  «        Z
dS )é    )Úannotations)ÚAny)Ú
ParseError)ÚUnexpectedCharErrorc                  ó,   — e Zd Z	 	 ddd	„Zdd
„Zdd„ZdS )Ú_StateFÚsourceÚSourceÚsave_markerúbool | NoneÚrestoreÚreturnÚNonec                ó0   — || _         || _        || _        d S ©N)Ú_sourceÚ_save_markerr   )Úselfr	   r   r   s       ú?C:\Projects\Historical\venv\Lib\site-packages\tomlkit/source.pyÚ__init__z_State.__init__
   s   € ð ˆŒØ'ˆÔØˆŒˆˆó    c                ól   — | j         j        | _        | j         j        | _        | j         j        | _        | S r   )r   Ú_idxÚ_currentÚ_marker©r   s    r   Ú	__enter__z_State.__enter__   s-   € ð
 ”LÔ%ˆŒ	ØœÔ-ˆŒØ”|Ô+ˆŒàˆr   Úexception_typeútype[BaseException] | NoneÚexception_valúBaseException | NoneÚtracer   c                ó”   — | j         s|r>| j        | j        _        | j        | j        _        | j        r| j        | j        _        d S d S d S r   )r   r   r   r   r   r   )r   r   r    r"   s       r   Ú__exit__z_State.__exit__   s^   € ð Œ<ð 	4˜>ð 	4Ø $¤	ˆDŒLÔØ$(¤MˆDŒLÔ!ØÔ ð 4Ø'+¤|�”Ô$Ð$Ð$ð4ð 4ð	4ð 	4r   N©FF)r	   r
   r   r   r   r   r   r   ©r   r   ©r   r   r    r!   r"   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r$   © r   r   r   r   	   s]   € € € € € ð $)Ø$ð	ð ð ð ð ð	ð 	ð 	ð 	ð4ð 4ð 4ð 4ð 4ð 4r   r   c                  ó8   — e Zd ZdZdd„Z	 	 ddd„Zdd„Zdd„ZdS )Ú_StateHandlerz)
    State preserver for the Parser.
    r	   r
   r   r   c                ó"   — || _         g | _        d S r   )r   Ú_states)r   r	   s     r   r   z_StateHandler.__init__2   s   € ØˆŒØ%'ˆŒˆˆr   Fr   r   r   r   c                ó.   — t          | j        ||¦  «        S r   )r   r   )r   r   r   s      r   Ú__call__z_StateHandler.__call__6   s   € õ
 �d”l K°Ñ9Ô9Ð9r   c                ór   —  | ¦   «         }| j                              |¦  «         |                     ¦   «         S r   )r/   Úappendr   )r   Ústates     r   r   z_StateHandler.__enter__=   s3   € Ø�‘”ˆØŒ×Ò˜EÑ"Ô"Ð"Ø�ŠÑ Ô Ð r   r   r   r    r!   r"   r   c                óf   — | j                              ¦   «         }|                     |||¦  «         d S r   )r/   Úpopr$   )r   r   r    r"   r4   s        r   r$   z_StateHandler.__exit__B   s3   € ð ”× Ò Ñ"Ô"ˆØ�Š�~ }°eÑ<Ô<Ð<Ð<Ð<r   N)r	   r
   r   r   r%   )r   r   r   r   r   r   r&   r'   )r(   r)   r*   Ú__doc__r   r1   r   r$   r+   r   r   r-   r-   -   s{   € € € € € ðð ð(ð (ð (ð (ð $)Ø$ð:ð :ð :ð :ð :ð!ð !ð !ð !ð
=ð =ð =ð =ð =ð =r   r-   c                  óæ   ‡ — e Zd ZdZd+ˆ fd„Zd,d„Zed-d	„¦   «         Zed.d„¦   «         Zed/d„¦   «         Z	ed.d„¦   «         Z
d/d„Zd0d1d„Zd2d„Zd3d„Zd0d4d„Zd5d6d „Zd7d!„Zd,d"„Zefd8d(„Zd9d*„Zˆ xZS ):r
   ú Ú_Ústrr   r   c                óÂ   •— t          ¦   «                              ¦   «          d| _        d| _        d| _        t          | ¦  «        | _        |                      ¦   «          d S )Néÿÿÿÿr   Ú )Úsuperr   r   r   r   r-   Ú_stateÚinc)r   r:   Ú	__class__s     €r   r   zSource.__init__R   sP   ø€ Ý‰Œ×ÒÑÔÐð
 ˆŒ	ØˆŒØˆŒå# DÑ)Ô)ˆŒà�Š‰
Œ
ˆ
ˆ
ˆ
r   c                óV   — |                       ¦   «          |                      ¦   «          d S r   )rA   Úmarkr   s    r   ÚresetzSource.reset`   s"   € à�Š‰
Œ
ˆ
ð 	�	Š	‰Œˆˆˆr   r-   c                ó   — | j         S r   )r@   r   s    r   r4   zSource.stateg   s
   € àŒ{Ðr   Úintc                ó   — | j         S r   )r   r   s    r   Úidxz
Source.idxk   s
   € àŒyÐr   c                ó   — | j         S r   )r   r   s    r   ÚcurrentzSource.currento   s
   € àŒ}Ðr   c                ó   — | j         S r   )r   r   s    r   ÚmarkerzSource.markers   s
   € àŒ|Ðr   c                ó*   — | | j         | j        …         S )z=
        Extracts the value between marker and index
        )r   r   r   s    r   ÚextractzSource.extractw   s   € ð �D”L 4¤9Ð,Ô-Ð-r   NÚ	exceptionútype[ParseError] | NoneÚboolc                óÜ   — | j         dz   }|t          | ¦  «        k     r|| _         | |         | _        dS t          | ¦  «        | _         | j        | _        |r|                      |¦  «        d‚dS )zŒ
        Increments the parser if the end of the input has not been reached.
        Returns whether or not it was able to advance.
        é   TNF)r   Úlenr   ÚEOFÚparse_error)r   rP   Únext_idxs      r   rA   z
Source.inc}   sr   € ð ”9˜q‘=ˆØ•c˜$‘i”iÒÐØ ˆDŒIØ  œNˆDŒMØ�4õ ˜‘I”IˆŒ	ØœˆŒØð 	8Ø×"Ò" 9Ñ-Ô-°4Ð7Øˆur   ÚcharsetÚ	frozensetc                óÚ   — | j         }t          | ¦  «        }||k     r| |         |v r|dz  }||k     r
| |         |v °||k     r|| _         | |         | _        dS || _         | j        | _        dS )u
  Advance while the current character is in ``charset``.

        Equivalent to ``while self.current in charset and self.inc(): pass`` but
        it scans the underlying string in a single pass and updates the index
        and current character only once, instead of paying a per-character
        ``inc()`` call. On return ``current`` is the first character NOT in
        ``charset`` (or EOF). Returns ``True`` if it stopped on a real
        character, ``False`` at EOF â€” the same value contract as the loop.
        rT   TF©r   rU   r   rV   )r   rY   ÚiÚns       r   Úadvance_whilezSource.advance_while�   s„   € ð ŒIˆÝ�‰IŒIˆØ�!Šeˆe˜˜Qœ 7Ð*Ð*Ø�‰FˆAð �!Šeˆe˜˜Qœ 7Ð*Ð*àˆqŠ5ˆ5ØˆDŒIØ  œGˆDŒMØ�4ØˆŒ	ØœˆŒØˆur   Ústopsetc                óÚ   — | j         }t          | ¦  «        }||k     r| |         |vr|dz  }||k     r
| |         |v°||k     r|| _         | |         | _        dS || _         | j        | _        dS )aO  Advance while the current character is NOT in ``stopset``.

        The mirror of :meth:`advance_while`: equivalent to
        ``while self.current not in stopset and self.inc(): pass`` in a single
        scan. On return ``current`` is the first character IN ``stopset`` (or
        EOF), with the same return-value contract.
        rT   TFr\   )r   r`   r]   r^   s       r   Úadvance_untilzSource.advance_until¦   s„   € ð ŒIˆÝ�‰IŒIˆØ�!Šeˆe˜˜Qœ wÐ.Ð.Ø�‰FˆAð �!Šeˆe˜˜Qœ wÐ.Ð.àˆqŠ5ˆ5ØˆDŒIØ  œGˆDŒMØ�4ØˆŒ	ØœˆŒØˆur   r^   c                óX   ‡ ‡— t          ˆˆ fd„t          |¦  «        D ¦   «         ¦  «        S )zm
        Increments the parser by n characters
        if the end of the input has not been reached.
        c              3  óD   •K  — | ]}‰                      ‰¬ ¦  «        V — ŒdS ))rP   N)rA   )Ú.0r:   rP   r   s     €€r   ú	<genexpr>zSource.inc_n.<locals>.<genexpr>¿   s1   øè è € ÐCÐC°Q�4—8’8 i�8Ñ0Ô0ÐCÐCÐCÐCÐCÐCr   )ÚallÚrange)r   r^   rP   s   ` `r   Úinc_nzSource.inc_nº   s2   øø€ õ
 ÐCÐCÐCÐCÐC½%À¹(¼(ÐCÑCÔCÑCÔCÐCr   r   r=   ÚcharsÚminÚmaxc                óÌ   — | j         |v r4|dk    r.|dz  }|dz  }|                      ¦   «         sn| j         |v r|dk    °.|dk    r |                      t          | j         ¦  «        ‚dS )zD
        Consume chars until min/max is satisfied is valid.
        r   rT   N)rK   rA   rW   r   )r   rj   rk   rl   s       r   ÚconsumezSource.consumeÁ   s€   € ð Œl˜eÐ#Ð#¨¨qª¨Ø�1‰HˆCØ�1‰HˆCØ—8’8‘:”:ð Øð	 Œl˜eÐ#Ð#¨¨qª¨ð �Š7ˆ7Ø×"Ò"Õ#6¸¼ÑEÔEÐEð ˆ7r   c                ó2   — | j         t          | ¦  «        k    S )zN
        Returns True if the parser has reached the end of the input.
        )r   rU   r   s    r   Úendz
Source.endÏ   s   € ð Œy�C ™IœIÒ%Ð%r   c                ó   — | j         | _        dS )zA
        Sets the marker to the index's current position
        N)r   r   r   s    r   rD   zSource.markÕ   s   € ð ”yˆŒˆˆr   útype[ParseError]Úargsr   Úkwargsr   c                óJ   — |                       ¦   «         \  }} |||g|¢R i |¤ŽS )zJ
        Creates a generic "parse error" at the current position.
        )Ú_to_linecol)r   rP   rs   rt   ÚlineÚcols         r   rW   zSource.parse_errorÛ   s;   € ð ×$Ò$Ñ&Ô&‰	ˆˆcàˆy˜˜sÐ4 TÐ4Ð4Ð4¨VÐ4Ð4Ð4r   útuple[int, int]c                ó"  — d}t          |                      ¦   «         ¦  «        D ]I\  }}|t          |¦  «        z   dz   | j        k    r|dz   | j        |z
  fc S |t          |¦  «        dz   z  }ŒJt          |                      ¦   «         ¦  «        dfS )Nr   rT   )Ú	enumerateÚ
splitlinesrU   rI   )r   Úcurr]   rw   s       r   rv   zSource._to_linecolè   s–   € ØˆÝ  §¢Ñ!2Ô!2Ñ3Ô3ð 	!ð 	!‰GˆAˆtØ•S˜‘Y”Y‰ Ñ" T¤XÒ-Ð-Ø˜A™˜tœx¨#™~Ð.Ð.Ð.Ð.à•3�t‘9”9˜q‘=Ñ ˆCˆCå�4—?’?Ñ$Ô$Ñ%Ô% qÐ(Ð(r   )r:   r;   r   r   )r   r   )r   r-   )r   rG   )r   r;   r   )rP   rQ   r   rR   )rY   rZ   r   rR   )r`   rZ   r   rR   )r^   rG   rP   rQ   r   rR   )r   r=   )rj   r;   rk   rG   rl   rG   r   r   )r   rR   )rP   rr   rs   r   rt   r   r   r   )r   ry   )r(   r)   r*   rV   r   rE   Úpropertyr4   rI   rK   rM   rO   rA   r_   rb   ri   rn   rp   rD   r   rW   rv   Ú__classcell__)rB   s   @r   r
   r
   L   sÃ  ø€ € € € € ð €Cðð ð ð ð ð ðð ð ð ð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð.ð .ð .ð .ðð ð ð ð ð&ð ð ð ð,ð ð ð ð(Dð Dð Dð Dð DðFð Fð Fð Fð Fð&ð &ð &ð &ð!ð !ð !ð !ð '1ð5ð 5ð 5ð 5ð 5ð)ð )ð )ð )ð )ð )ð )ð )r   r
   N)Ú
__future__r   Útypingr   Útomlkit.exceptionsr   r   r   r-   r;   r
   r+   r   r   ú<module>rƒ      sÜ   ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð!4ð !4ð !4ð !4ð !4ñ !4ô !4ð !4ðH=ð =ð =ð =ð =ñ =ô =ð =ð>d)ð d)ð d)ð d)ð d)ˆSñ d)ô d)ð d)ð d)ð d)r   