
    Jc8                         d dl m Z  d dlmZ d dlmZ d dlmZ 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 )    )copy)Any)Optional)Tuple)Type   )
ParseError)UnexpectedCharErrorTOMLCharc            	       R    e Zd Z	 	 ddddee         dee         ddfdZdd	Zd
 ZdS )_StateFsourceSourcesave_markerrestorereturnNc                 0    || _         || _        || _        d S N)_source_save_markerr   )selfr   r   r   s       .lib/python3.11/site-packages/tomlkit/source.py__init__z_State.__init__   s     '    c                     t          | j        j                  | _        | j        j        | _        | j        j        | _        | j        j        | _        | S r   )r   r   _chars_idx_current_markerr   s    r   	__enter__z_State.__enter__   s?    4<.//L%	-|+r   c                     | j         s|rO| j        | j        _        | j        | j        _        | j        | j        _        | j        r| j        | j        _        d S d S d S r   )r   r   r   r   r   r   r    )r   exception_typeexception_valtraces       r   __exit__z_State.__exit__    sh    < 	4> 	4"&+DL $	DL$(MDL!  4'+|$$$4 4		4 	4r   )FF)r   r   )__name__
__module____qualname__r   boolr   r"   r'    r   r   r   r      s         ',"'	  d^ $	
 
      4 4 4 4 4r   r   c                   .    e Zd ZdZd
dZd ZddZd	 ZdS )_StateHandlerz)
    State preserver for the Parser.
    r   r   r   Nc                 "    || _         g | _        d S r   )r   _states)r   r   s     r   r   z_StateHandler.__init__/   s    r   c                 ,    t          | j        g|R i |S r   )r   r   )r   argskwargss      r   __call__z_StateHandler.__call__3   s"    dl4T444V444r   c                 r     |             }| j                             |           |                                S r   )r0   appendr"   )r   states     r   r"   z_StateHandler.__enter__6   s3    E"""   r   c                 b    | j                                         }|                    |||          S r   )r0   popr'   )r   r$   r%   r&   r7   s        r   r'   z_StateHandler.__exit__;   s+      ""~~nmUCCCr   )r   r   r   Nr   N)r(   r)   r*   __doc__r   r4   r"   r'   r,   r   r   r.   r.   *   si            5 5 5! ! ! !
D D D D Dr   r.   c            	       x    e Zd Z ed          Zdeddf fdZd Zede	fd            Z
edefd            Zedefd	            Zedefd
            ZdefdZddeee                  defdZddedeee                  defdZddZdefdZddZefdee         dededefdZdeeef         fdZ xZS )r    _r   Nc                 2   t                                                       t          d t          |           D                       | _        d| _        d| _        t          d          | _        t          |           | _
        |                                  d S )Nc                 6    g | ]\  }}|t          |          fS r,   r   ).0ics      r   
<listcomp>z#Source.__init__.<locals>.<listcomp>G   s'    IIIAQ,IIIr   r    )superr   iter	enumerater   r   r    r   r   r.   _stateinc)r   r>   	__class__s     r   r   zSource.__init__C   sz     II4IIIJJ	 #D))




r   c                 V    |                                   |                                  d S r   )rJ   markr!   s    r   resetzSource.resetQ   s"    


 			r   c                     | j         S r   )rI   r!   s    r   r7   zSource.stateX   s
    {r   c                     | j         S r   )r   r!   s    r   idxz
Source.idx\   s
    yr   c                     | j         S r   )r   r!   s    r   currentzSource.current`   s
    }r   c                     | j         S r   )r    r!   s    r   markerzSource.markerd   s
    |r   c                 *    | | j         | j                 S )z=
        Extracts the value between marker and index
        )r    r   r!   s    r   extractzSource.extracth   s     DL49,--r   	exceptionc                     	 t          | j                  \  | _        | _        dS # t          $ r; t          |           | _        | j        | _        |r|                     |          Y dS w xY w)z
        Increments the parser if the end of the input has not been reached.
        Returns whether or not it was able to advance.
        TF)nextr   r   r   StopIterationlenEOFparse_error)r   rX   s     r   rJ   z
Source.incn   sx    

	'+DK'8'8$DIt}4 	 	 	D		DI HDM 2&&y11155	s   !% AA*)A*nc                 \    t          |          D ]}|                     |          s dS dS )zm
        Increments the parser by n characters
        if the end of the input has not been reached.
        )rX   FT)rangerJ   )r   r_   rX   r>   s       r   inc_nzSource.inc_n   sB    
 q 	 	A88i800 uu tr   r   c                     | 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   r   N)rS   rJ   r^   r
   )r   charsminmaxs       r   consumezSource.consume   s     le# 	q 	1HC1HC88:: 	 le# 	q 	 7 	F""#6EEE	F 	Fr   c                     | j         | j        u S )zN
        Returns True if the parser has reached the end of the input.
        )r   r]   r!   s    r   endz
Source.end   s     }((r   c                     | j         | _        dS )zA
        Sets the marker to the index's current position
        N)r   r    r!   s    r   rM   zSource.mark   s     yr   r2   r3   c                 J    |                                  \  }} |||g|R i |S )zJ
        Creates a generic "parse error" at the current position.
        )_to_linecol)r   rX   r2   r3   linecols         r   r^   zSource.parse_error   s;     $$&&	cys4T444V444r   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   r   )rH   
splitlinesr\   rQ   )r   currB   rn   s       r   rm   zSource._to_linecol   s     !2!233 	! 	!GAtSYY"TX- /Atx#~....3t99q= CC4??$$%%q((r   r   )r   rc   r:   )r(   r)   r*   r   r]   strr   rN   propertyr.   r7   intrQ   rS   rU   rW   r   r   r	   r+   rJ   rb   rh   rj   rM   r   r^   r   rm   __classcell__)rK   s   @r   r   r   @   s:       
(4..C# $         }    X S    X     X     X. . . . . Xd:&67 4    "	 	s 	xZ0@'A 	T 	 	 	 	F F F F)T ) ) ) )! ! ! ! '15 5
#5 5 	5
 
5 5 5 5)U38_ ) ) ) ) ) ) ) )r   r   N)r   typingr   r   r   r   
exceptionsr	   r
   	toml_charr   r   r.   rs   r   r,   r   r   <module>rz      s+                                 " " " " " " + + + + + +      4 4 4 4 4 4 4 4<D D D D D D D D,y) y) y) y) y)S y) y) y) y) y)r   