
    2 fs                    F   d dl mZ d dl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 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 d dlmZ d dlmZ d dlmZ  e            Z G d de	          Z G d de	          ZddZ dS )    )annotationsN)Any)Iterator)decode)_CustomDict)merge_dicts)KeyAlreadyPresent)NonExistentKey)TOMLKitError)AoT)Comment)Item)Key)Null)	SingleKey)Table)Trivia)
Whitespace)itemc                      e Zd ZdZdSdTdZedUd	            ZdVdZedVd            ZdWdZ	dXdYdZ
dZdZd[dZdXd\dZ	 d]d^d Zd_d"Zd`d$Zdad&Zdbd)Zdcd*Zddd+Zded,Zdfd.ZdXdgd3ZdXd4ZdXdhd5ZdXd6Zd[d7Zdid9Zdjd;Zdkd<Zdld=Zdm fd?Z dndAZ!dodCZ"dfdDZ#dfdEZ$dpdHZ%dI Z&dJ Z'dK Z(dL Z)dqdMZ*dqdNZ+de,ffdrdQZ-de,ffdsdRZ. xZ/S )t	Containerz
    A container for items within a TOMLDocument.

    This class implements the `dict` interface with copy/deepcopy protocol.
    FparsedboolreturnNonec                >    i | _         g | _        || _        g | _        d S N)_map_body_parsed_table_keys)selfr   s     G/var/www/equiseq/venv/lib/python3.11/site-packages/tomlkit/container.py__init__zContainer.__init__$   s%    <>	46
    list[tuple[Key | None, Item]]c                    | j         S r   r   r"   s    r#   bodyzContainer.body*   s
    zr%   dict[str, Any]c                   i }|                                  D ]h\  }}|t          |t                    r|j        }t	          |d          r|                                }||v rt          ||         |           c|||<   i|S )z#Returns as pure python object (ppo)Nunwrap)items
isinstancer   keyhasattrr-   r   )r"   	unwrappedkvs       r#   r-   zContainer.unwrap.   s    	JJLL 	! 	!DAqy!S!! Eq(## HHJJI~~IaL!,,,, 	!r%   c                    i }| j         D ]R\  }}||j        }|j        }t          |t                    r|j        }||v rt          ||         |           M|||<   S|S )zThe wrapped dict value)r   r0   valuer/   r   r   )r"   dr3   r4   s       r#   r6   zContainer.valueB   s}     J 	 	DAqyAA!Y'' GAvvAaD!$$$$!r%   parsingc                    || _         | j        D ]n\  }}t          |t                    r|j                            |           5t          |t                    r$|j        D ]}|j                            |           od S r   )r    r   r/   r   r6   r8   r   r*   )r"   r8   _r4   ts        r#   r8   zContainer.parsingW   s    J 	- 	-DAq!U## -((((As## - - -AGOOG,,,,	- 	-r%   Nr0   Key | Item | strr   Item | Nonec                    |/t          |t          t          f          st          d          d|}}|                     ||          S )z
        Adds an item to the current Container.

        :Example:

        >>> # add a key-value pair
        >>> doc.add('key', 'value')
        >>> # add a comment or whitespace or newline
        >>> doc.add(comment('# comment'))
        Nz8Non comment/whitespace items must have an associated key)r/   r   r   
ValueErrorappendr"   r0   r   s      r#   addzContainer.adda   sT     <cGZ#899  N   cC{{3%%%r%   r   r6   r   c                   t          |t          t          f          rt          d          |^}}}d|_        t          t          d          t                      dd          x}}|D ]M}d|_        t          t          d          t                      dd          }	|                    ||	           |	}N|j        |_        |                    ||           |                     ||           d S )Nz!Can't add a table to a dotted keyTF)is_super_table)	r/   r   r   r   _dottedr   r   r@   sep)
r"   r0   r6   namemidlasttablecurrent_name	new_tables
             r#   _handle_dotted_keyzContainer._handle_dotted_keyv   s    eeS\** 	DBCCCsD	$5QUVVVV 	  	 E EMioovxxtTTTINN5),,,GG7tU###D%   r%   intc                2   d}t          | j                  D ]|\  }\  }}t          |t                    rt          |t                    r|                                sHt          |t          t          f          r|                                s n|}}|dz   S N   )		enumerater   r/   r   r   is_fixedr   r   	is_dotted)r"   
last_indexir3   r4   s        r#   _get_last_index_before_tablez&Container._get_last_index_before_table   s    
"4:.. 		 		IAv1!T"" !Z((  !eS\** 1;;== JJA~r%   SingleKey | Nonec                    |%| j         D ]}|J |                     |           d S || j         vs t          | j         |         t                    sd S t                              | | j         |                    d S r   )r   _validate_out_of_order_tabler/   tupleOutOfOrderTableProxyvalidate)r"   r0   r3   s      r#   r\   z&Container._validate_out_of_order_table   s    ;Y 5 5}}}11!4444Fdiz$)C.%'H'HF%%dDIcN;;;;;r%   TKey | str | Noner_   c                ~   t          |t                    s|t          |          }t          |t                    st	          |          }|,|                                r|                     ||           | S t          |t          t          f          r|j	        |j
        |_	        |                                 }t          |t                    pt          |          }t          |t                    rW| j        s|                                 | j        r5| j        s.|j        j        s"|s |                                sd|j        _        t          |t                    r_| j        rX| j        sQ|                                 |r;d|d         j        j        v s'|s%d|d         j        j        z   |d         j        _        ||| v r| j        |         }t          |t*                    r| j        |d                  }n| j        |         }|d         }t          |t                    rt          |t          t          f          st-          |          |                                r\t          |t                    s0t          ||g| j                  }|                     |||           n|                    |           | S |                                r:|                                st-          |          |                    |           | S |                                r|                                rU|                                s1|d                                         s| j        d         |d         k    r|                                r| j        s|                                 }	nt=          | j                  }	|	t=          | j                  k     r|                     |	||           n|                      ||           |r| !                    |           | S tE          j#        |          }|j$        j%        D ]\  }
}|                    |
|           |d         |f| j        t          |t*                    r|d         n|<   | S |d                                         rtM          d          n|                                st-          |          nit          |t                    rEt          |t                    st-          |          |j%        D ]}|                    |           | S t-          |          t          |t          t          f          }|| j        r| j        s|r|                                r|                                 }|t=          | j                  k     r|                     |||          S | j        d         d         }t          |t                    s2t          |          s#d|j        j'        v s|j        xj'        dz  c_'        |                      ||           | S )z<Similar to :meth:`add` but both key and value must be given.N
r   rR   rS   )r   z!Redefinition of an existing table)(r/   r   r   r   _itemis_multirN   r   r   rG   r0   _previous_itemr   ends_with_whitespacer    invalidate_display_namer   triviaindentrV   r   r]   r	   is_aot_element_replacer@   is_aotrD   r!   rY   len
_insert_at_raw_appendr\   copydeepcopyr6   r*   r   trail)r"   r0   r   r_   prevprev_wscurrent_idxcurrent_body_elementrK   idxr3   r4   rJ   is_tablerW   previous_items                   r#   r@   zContainer.append   s<    #s## 	!C..C$%% 	;;D?s||~~?##C...KdS%L)) 	 di.?DI""$$T:..L2Ft2L2LdE"" 	*< /,,...
**)-);*?F* *
 &*"dC   	ETZ 	E 	E((*** ETT!W^%:::g:(,tAw~/D(DQ%?sd{{)C.K+u-- ?'+z+b/'B$$'+z+'>$*1-G$&& I-!'E3<88 1+C000&&(( :1 &gs33 -"%wodl"K"K"Kc38888t,,,K^^%% /1..00 5/444NN4(((K++-- '1**,, $P  MMOO(3A6@@BB(  $/37KA7NNN"}} 6t| 6&*&G&G&I&I&)$*oo"S__44 $S$ ? ? ? ? $ 0 0d ; ; ;' G $ A A# F F F#'K #'-"8"8$(JO 1 1DAq#NN1a0000 2!4g> 
 $.k5#A#A!1B%0	  $-a0::<< P*+NOOOP,,.. 1+C0001D#&& 
-!'3// 1+C000!Y * *ENN5))))',,,dUCL11O
 L    "%  ::<<JC
OO++z3=== $
2q 1}j997+M::7 }3999!(..$6..d###r%   
Key | Nonec                H   || j         v r| j         |         }t          |t                    s|f}| j        |d                  d         }|$t          |t                    st          |          g |t          | j                  R | j         |<   n|t          | j                  | j         |<   | j                            ||f           |                                r| j	                            |           |(t                              | |j        |j                   d S d S rQ   )r   r/   r]   r   r   r	   rm   r@   rx   r!   dict__setitem__r0   r6   )r"   r0   r   ru   rK   s        r#   ro   zContainer._raw_append1  s   $))C.Kk511 -*njR1!4Gz'5'A'A',,,<{<C
OO<<DIcNN_ __DIcN
3+&&&==?? 	)##C(((?T37DJ77777 ?r%   rw   c                   | j         |         d         }| j                            |          }|t          |          d t	                      f| j         |<   t          |t                    rgt          |          }|                    |           t          |          dk    r|
                                }nt          |          }|| j        |<   d S t                              | |j                   | j        
                    |           d S )Nr   rS   )r   r   getr
   r   r/   r]   listremoverm   popr|   __delitem__r0   )r"   rw   r0   indexs       r#   
_remove_atzContainer._remove_atF  s    joa 	c""= %%%.
3eU## 
	KKELL5zzQ		e"DIcNNNT37+++IMM#r%   	Key | strc                |   t          |t                    st          |          }| j                            |d          }|t          |          t          |t                    r|D ]}dt                      f| j        |<   ndt                      f| j        |<   t          
                    | |j                   | S )z Remove a key from the container.N)r/   r   r   r   r   r
   r]   r   r   r|   r   r0   )r"   r0   rw   rX   s       r#   r   zContainer.removeY  s    #s## 	!C..CimmC&&; %%%c5!! 	- / /!%tvv
1/  $TVVnDJsOsw'''r%   	other_keyr   c                   |t          d          || vrt          |          t          |t                    st	          |          }t          |t                    st	          |          }t          |          }| j        |         }t          |t                    rt          |          }| j	        |         d         }d|j
        j        vr|j
        xj        dz  c_        | j                                        D ]l\  }}t          |t                    r?g }|D ]"}	|	|k    r|	dz   }	|                    |	           #t          |          | j        |<   Y||k    r|dz   | j        |<   m|dz   | j        |<   | j	                            |dz   ||f           |&t                              | |j        |j                   | S )Nz$Key cannot be null in insert_after()rS   rb   )r?   r
   r/   r   r   rc   r   r]   maxr   rh   rr   r.   r@   insertr|   r}   r0   r6   )
r"   r0   r   r   rw   current_itemr3   r4   new_indicesv_s
             r#   _insert_afterzContainer._insert_afterl  s    ;CDDDd?? %%%#s## 	!C..C)S)) 	-!),,IT{{inc5!! 	c((Cz#q)|*000%%-%% IOO%% 	% 	%DAq!U## 
%  + +BCxx!V&&r****$[11	!S 1u	!"Qw	)
#'It#4555?T9=$*===r%   c                   |t          | j                  dz
  k    rt          d|           t          |t                    st          |          }t          |          }|dk    ry| j        |dz
           d         }t          |t                    sNt          |          s?t          |t          t          f          s#d|j        j        v s|j        xj        dz  c_        | j                                        D ]l\  }}t          |t                    r?g }|D ]"}||k    r|dz   }|                    |           #t          |          | j        |<   Y||k    r|dz   | j        |<   m|| j        v r5| j        |         }	t          |	t                    s|	f}	g |	|R | j        |<   n
|| j        |<   | j                            |||f           t$                              | |j        |j                   | S )NrS   zUnable to insert at position r   rb   )rm   r   r?   r/   r   r   rc   r   rf   r   r   rh   rr   r   r.   r]   r@   r   r|   r}   r0   r6   )
r"   rw   r0   r   ry   r3   r4   r   r   ru   s
             r#   rn   zContainer._insert_at  s   TZ1$$$BSBBCCC#s## 	!C..CT{{77 JsQw/2M=*553'663 dS%L113 =/555$**d2** IOO%% 	% 	%DAq!U## 
%  + +BSyy!V&&r****$[11	!c 1u	!$))C.Kk511 -*n0{0C00DIcNN DIcN
#T{+++sw
333r%   c                   t          |t                    st          |          }| j                            |          }|t          |          t          |t                    rt          | |          S | j        |         d         S )zGet an item for the given key.NrS   )	r/   r   r   r   r   r
   r]   r^   r   )r"   r0   rw   s      r#   r   zContainer.item  sz    #s## 	!C..CimmC  ; %%%c5!! 	3 (c222z#q!!r%   c                :    | j         r| j         d         d         S dS )zGet the last item.rR   rS   Nr(   r)   s    r#   	last_itemzContainer.last_item  s'    : 	%:b>!$$	% 	%r%   strc                J   d}| j         D ]\  }}|xt          |t                    r||                     ||          z  }6t          |t                    r||                     ||          z  }e||                     ||          z  }||                     ||          z  }|S )zRender as TOML string. )r   r/   r   _render_tabler   _render_aot_render_simple_item)r"   sr3   r4   s       r#   	as_stringzContainer.as_string  s    J 		4 		4DAq}a'' 8++Aq111AA3'' 8))!Q///AA11!Q777AAT--a333r%   rJ   r   prefix
str | Nonec           	        d}|j         |j         }n|                                }||dz   |z   }|                                r7t          d |j        j        D                       r|                                sd\  }}|                                rd\  }}d|j        j	        vrt          |j                  dk    rdnd}||j        j         | t          |           | |j        j         t          |j        j                   |j        j	         | z  }n|j        j        dk    r||j        j        z  }|j        j        D ]\  }	}
t          |
t                     r|
                                r^|	                                r.|                                s||                     |	|
          z  }q||                     |	|
|          z  }||                     |	|
|          z  }t          |
t$                    r||                     |	|
|          z  }||                     |	|
|                                r|nd           z  }|S )	Nr   .c              3  n   K   | ]0\  }}t          |t          t          t          t          f           V  1d S r   )r/   r   r   r   r   ).0r:   r4   s      r#   	<genexpr>z*Container._render_table.<locals>.<genexpr>  sP        Aq q5#z4"@AAA     r%   )[]z[[z]]rb   r   r   )display_namer   rD   anyr6   r*   rV   rj   rh   rr   rm   ri   r   
comment_wscommentr/   r   r   r   r   r   )r"   r0   rJ   r   cur_keyopen_closenewline_in_table_triviar3   r4   s              r#   r   zContainer._render_table  s   )%DD==??D!|d*##%% 	'  !K,    	'
 MMOO	' $LE5##%% *)u EL$6663u{;K;Ka;O;OUW $ <& --$<<- - <*	-
 %,.//- <%- +- -	CC \ D((5<&&CK$ 	 	DAq!U## ##%% A{{}} ES]]__ Et11!Q777t11!Qt1DDD4--a4-@@@CCAs## t''1T':::t//q!Bd 0    
r%   c                    |                                 }||dz   |z   }d}t          |          }|j        D ]}||                     ||          z  }|S )Nr   r   r   )r   r   r*   _render_aot_table)r"   r0   aotr   r   r   rJ   s          r#   r   zContainer._render_aot(  sh    }}C<$&Dd||X 	> 	>E4))%)===CC
r%   c           	        d}|pd}d\  }}||j         j         | t          |           | |j         j         t          |j         j                   |j         j         z  }|j        j        D ]\  }}t          |t                    rz|
                                rJ|                                r||                     ||          z  }\||                     |||          z  }x||                     |||          z  }t          |t                    r||                     |||          z  }||                     ||          z  }|S )Nr   r   r   )rh   ri   r   r   r   rr   r6   r*   r/   r   rD   rV   r   r   r   r   )	r"   rJ   r   r   r   r   r   r3   r4   s	            r#   r   zContainer._render_aot_table4  s   |!u|" $$d||$ $ |&	$
 el*++$ |!$ $	
 K$ 	6 	6DAq!U## 6##%% A{{}} Et11!Q777t11!Qt1DDD4--a4-@@@CCAs## 6t''1T':::t//1555
r%   c                V   ||                                 S |                                 }||dz   |z   }|j        j         t          |           |j         t          |                                            |j        j         t          |j        j                   |j        j         S )Nr   )r   rh   ri   r   rF   r   r   rr   )r"   r0   r   r   r   s        r#   r   zContainer._render_simple_itemT  s    ;>>###}}C<$&D {! #d||#w# dnn&&''# {%	#
 dk)**# { # #	
r%   c                6    t                               |           S r   r|   __len__r)   s    r#   r   zContainer.__len__f      ||D!!!r%   Iterator[str]c                P    t          t                              |                     S r   iterr|   keysr)   s    r#   __iter__zContainer.__iter__i      DIIdOO$$$r%   Item | Containerc                    |                      |          }t          |t                    r|                                r|j        S |S r   )r   r/   r   
is_booleanr6   rA   s      r#   __getitem__zContainer.__getitem__m  sA    yy~~dD!! 	doo&7&7 	:r%   c                    B| v r>t          t          fd| j                            }|                     ||           d S |                     |           d S )Nc                    | k    S r    )r3   r0   s    r#   <lambda>z'Container.__setitem__.<locals>.<lambda>v  s    AH r%   )nextfilterr   rk   r@   )r"   r0   r6   old_keys    `  r#   r}   zContainer.__setitem__t  si    ?sd{{6"4"4"4"4di@@AAGMM'3.....KKU#####r%   c                0    |                      |           d S r   )r   r"   r0   s     r#   r   zContainer.__delitem__{  s    Cr%   defaultc                Z    t                                          ||           | |         S N)r   super
setdefaultr"   r0   r   	__class__s      r#   r   zContainer.setdefault~  *    3000Cyr%   new_keyc                    t          |t                    st          |          }| j                            |          }|t          |          |                     |||           d S r   )r/   r   r   r   r   r
   _replace_at)r"   r0   r   r6   rw   s        r#   rk   zContainer._replace  sc    #s## 	!C..CimmC  ; %%%gu-----r%   int | tuple[int]c                X   t          |          }t          |t                    r-|dd          D ]}d t                      f| j        |<   |d         }| j        |         \  }}t          |t
                    sWt          |t          t          f          t          |t          t          f          k    s||j        k    rt          |          }n|}| j
        |= || j
        |<   ||k    rt                              | |           t          |t          t          f          t          |t          t          f          k    r|                     |           t          |t          | j                            D ]J}t          | j        |         d         t          t          f          r|                     |||           |} nKd}|                     ||           nt          |t$          t          f          sp|j        j        |j        _        |j        j        p|j        j        |j        _        |j        j        p|j        j        |j        _        |j        j        |j        _        ||f| j        |<   t1          |d          r|                                 t          |t                    r|                                 \  }}|dk     r|n|}t7          |          }	t          |t                    o6|j        j        o*t          |j        j        d         d         t$                    }
||k     o(t          | j        |dz            d         t$                    }||k     s|
r'|s%|	s#|                    d t%          d                     t                              | |j        |j                   d S d S )NrS   r   rR   rg   rb   )rc   r/   r]   r   r   r   r   r   r0   r   r   r|   r   r   rangerm   rn   r@   r   rh   ri   r   r   rr   r1   rg   _previous_item_with_indexrf   r6   r*   r}   )r"   rw   r   r6   rX   r3   r4   rI   r:   has_wsreplace_has_wsnext_wss               r#   r   zContainer._replace_at  sV    ec5!! 	W / /!%tvv
1a&Cz#1'3'' 	53,//:a#u3N3NNNae###G,,IaL 	'a<<T1%%%ec5\**jS%L.I.IIIKKNNN3DJ00 , ,djmA.e== OOAw666CE
 GU+++ ej#%677 4&'ho#*/,*A*XQXEX'',|';'Oqx?O$%&X^"&.DJsO5344 	,))+++eU## 	=
 4466GD!''$$sC)%00F1e$$ @GL@qw|B/2J?? 
 DjSZ
370CA0F
%S%SGd

n
w
&
T:d#3#3444T7;<<<<<#	= 	=r%   c                *    t          | j                  S r   )r   r6   r)   s    r#   __str__zContainer.__str__  s    4:r%   c                *    t          | j                  S r   )reprr6   r)   s    r#   __repr__zContainer.__repr__  s    DJr%   otherr|   c                P    t          |t                    st          S | j        |k    S r   )r/   r|   NotImplementedr6   )r"   r   s     r#   __eq__zContainer.__eq__  s'    %&& 	"!!zU""r%   c                    | j         fS r   )r    r"   protocols     r#   	_getstatezContainer._getstate  s    r%   c                ,    |                      d          S )N   )__reduce_ex__r)   s    r#   
__reduce__zContainer.__reduce__  s    !!!$$$r%   c                l    | j         |                     |          | j        | j        | j        | j        ffS r   )r   r   r   r   r    r!   r   s     r#   r   zContainer.__reduce_ex__  s5    NNN8$$Y
DL$2BC
 	
r%   c                    |d         | _         |d         | _        |d         | _        |d         | _        | j        D ]-\  }}|&t                              | |j        |j                   .d S )Nr   rS   r      )r   r   r    r!   r|   r}   r0   r6   )r"   stater0   r   s       r#   __setstate__zContainer.__setstate__  sp    !H	1X
Qx 8 	< 	<IC  sw
;;;	< 	<r%   c                *    t          j         |           S r   )rp   r)   s    r#   rp   zContainer.copy  s    yr%   c                   |                      | j                  }t                              |           D ]!\  }}t                              |||           "|xj        | j        z  c_        |j                            | j                   |S r   )	r   r    r|   r.   r}   r   r*   r   update)r"   cr3   r4   s       r#   __copy__zContainer.__copy__  s|    NN4<((JJt$$ 	& 	&DAqQ1%%%%	49	di   r%   
int | Nonetuple[int, Item] | Nonec                    ||t          | j                  k    rt          | j                  }t          |dz
  dd          D ]+}| j        |         d         }t          ||          s||fc S ,dS )z5Find the immediate previous item before index ``idx``NrS   rR   )rm   r   r   r/   )r"   rw   ignorerX   r4   s        r#   r   z#Container._previous_item_with_index   s     ;#DJ//dj//CsQwB'' 	 	A
1b!Aa(( !ttr%   c                F    |                      ||          }|r|d         ndS )z{Find the immediate previous item before index ``idx``.
        If ``idx`` is not given, the last item is returned.
        rR   N)r   )r"   rw   r   rs   s       r#   re   zContainer._previous_item  s,     --c6::)tBxxT)r%   )F)r   r   r   r   )r   r&   )r   r+   )r8   r   r   r   r   )r0   r<   r   r=   r   r   )r0   r   r6   r   r   r   r   rO   )r0   rZ   r   r   )T)r0   r`   r   r   r_   r   r   r   )r0   rz   r   r   r   r   )rw   rO   r   r   )r0   r   r   r   )r0   r   r   r   r   r   r   r   )rw   rO   r0   r   r   r   r   r   )r0   r   r   r   )r   r=   r   r   )r0   r   rJ   r   r   r   r   r   )rJ   r   r   r   r   r   r   r   )r0   r   r   r   )r0   r   r6   r   r   r   r0   r   r   r   r0   r   r   r   r   r   )r0   r   r   r   r6   r   r   r   )rw   r   r   r   r6   r   r   r   )r   r|   r   r   )r   r   )rw   r   r   r   )rw   r   r   r=   )0__name__
__module____qualname____doc__r$   propertyr*   r-   r6   r8   rB   rN   rY   r\   r@   ro   r   r   r   rn   r   r   r   r   r   r   r   r   r   r   r}   r   r   rk   r   r   r   r   r   r   r   r   rp   r   r   r   re   __classcell__r   s   @r#   r   r      s                X   (    X(- - - -& & & & &*   $   < < < < < CGO O O O Ob8 8 8 8*   &   &- - - -^, , , ,\" " " ""% % % %
    7 7 7 7 7r
 
 
 
    @
 
 
 
$" " " "% % % %   $ $ $ $        . . . .B= B= B= B=H          # # # #  % % %
 
 
< < <       !%dW
 
 
 
 
 04TG * * * * * * * * *r%   r   c                       e Zd Zedd            ZddZdd
Zed             ZddZ	ddZ
d dZd!dZd"dZd#dZd$ fdZ xZS )%r^   	containerr   indicestuple[int, ...]r   r   c                    t          d          }|D ]Q}| j        |         \  }}t          |t                    r*|j        j        D ]\  }}|                    ||d           R|                                 dS )z3Validate out of order tables in the given containerTF)r_   N)r   r   r/   r   r6   r*   r@   r\   )r  r  temp_containerrX   r:   r   r3   r4   s           r#   r_   zOutOfOrderTableProxy.validate  s     #4 	@ 	@Aoa(GAt$&& @ JO @ @DAq"))!Q)????3355555r%   c                F   || _         t          d          | _        g | _        i | _        |D ]}| j         j        |         \  }}t          |t                    r| j                            |           t          | j                  dz
  }|j
        j        D ]q\  }}| j                            ||           | j                            |g                               |           |!t                              | |j        |           r| j                                         d S )NTrS   )
_containerr   _internal_container_tables_tables_mapr   r/   r   r@   rm   r6   r*   ro   r   r|   r}   r0   r\   )	r"   r  r  rX   r:   r   	table_idxr3   r4   s	            r#   r$   zOutOfOrderTableProxy.__init__#  s   ##,T??  
	9 
	9Ao+A.GAt$&& 9##D)))--1	 JO 9 9DAq,88A>>>$//266==iHHH}((qua888 ==?????r%   r   c                4    | j                                         S r   )r  r-   r)   s    r#   r-   zOutOfOrderTableProxy.unwrap7  s    '..000r%   c                    | j         j        S r   )r  r6   r)   s    r#   r6   zOutOfOrderTableProxy.value:  s    '--r%   r0   r   r   c                L    || j         vrt          |          | j         |         S r   )r  r
   r   s     r#   r   z OutOfOrderTableProxy.__getitem__>  s,    d... %%%',,r%   r   c                   || j         v r~| j         |         }t          |          dk    rG| j        |                                         }|                     |           t          |          dk    G|| j        |d                  |<   n$| j        r| j        d         }|||<   n
|| j        |<   || j        |<   |t                              | ||           d S d S )NrS   r   )	r  rm   r  r   _remove_tabler  r  r|   r}   )r"   r0   r   r  rJ   s        r#   r}   z OutOfOrderTableProxy.__setitem__D  s    $"""&s+Gg,,""W[[]]3""5))) g,,"" -1DL$S))\ 	(LOEE#JJ#'DOC (, %?T3----- ?r%   rJ   r   c                    | j                             |           t          | j        j                  D ],\  }}|d         |u r| j                            |            dS -dS )z&Remove table from the parent containerrS   N)r  r   rT   r  r   r   )r"   rJ   rw   r   s       r#   r  z"OutOfOrderTableProxy._remove_tableV  ss    E""""4?#899 	 	ICAw%**3///  	 	r%   c                L   || j         vrt          |          t          | j         |                   D ]A}| j        |         }||= |s-t	          | j                  dk    r|                     |           B| j         |= | j        |= |t                              | |           d S d S )NrS   )	r  r
   reversedr  rm   r  r  r|   r   )r"   r0   rX   rJ   s       r#   r   z OutOfOrderTableProxy.__delitem__^  s    d&&& %%%$*3/00 	* 	*ALOEc
 *S..22""5)))S!$S)?T3''''' ?r%   r   c                P    t          t                              |                     S r   r   r)   s    r#   r   zOutOfOrderTableProxy.__iter__m  r   r%   rO   c                6    t                               |           S r   r   r)   s    r#   r   zOutOfOrderTableProxy.__len__p  r   r%   r   c                Z    t                                          ||           | |         S r   r   r   s      r#   r   zOutOfOrderTableProxy.setdefaults  r   r%   )r  r   r  r  r   r   r  )r0   r   r   r   )r0   r   r   r   r   r   )rJ   r   r   r   r  r  r   r  )r  r  r  staticmethodr_   r$   r-   r	  r6   r   r}   r  r   r   r   r   r
  r  s   @r#   r^   r^     s       6 6 6 \6@ @ @ @(1 1 1 1 . . X.- - - -. . . .$   ( ( ( (% % % %" " " "         r%   r^   itr   r   r   c                
   t          | t                    o+t          | j                                        t                    pBt          | t
                    o-t          |           dk    ot          | d         t                    S )zqReturns ``True`` if the given item ``it`` is a ``Table`` or ``AoT`` object
    ending with a ``Whitespace``.
    r   rR   )r/   r   r6   re   r   r   rm   )r$  s    r#   rf   rf   x  si    
 	2uS*RX-D-D-F-F
"S"SR
R


P#b''A+
P*RVZ2P2PRr%   )r$  r   r   r   )!
__future__r   rp   typingr   r   tomlkit._compatr   tomlkit._typesr   tomlkit._utilsr   tomlkit.exceptionsr	   r
   r   tomlkit.itemsr   r   r   r   r   r   r   r   r   r   rc   object_NOT_SETr   r^   rf   r   r%   r#   <module>r/     s   " " " " " "              " " " " " " & & & & & & & & & & & & 0 0 0 0 0 0 - - - - - - + + + + + +       ! ! ! ! ! !                   # # # # # #                   $ $ $ $ $ $ ' ' ' ' ' ' 688t* t* t* t* t* t* t* t*na a a a a; a a aHR R R R R Rr%   