
    .Ph{                    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     Q/var/www/html/test/jupyter/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    r1   valuer0   r   r   )r#   dr4   r5   s       r$   r7   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    r0   r   r7   r9   r   r+   )r#   r9   _r5   ts        r$   r9   zContainer.parsingW   s    J 	- 	-DAq!U## -((((As## - - -AGOOG,,,,	- 	-r&   Nr1   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)r0   r   r   
ValueErrorappendr#   r1   r   s      r$   addzContainer.adda   sT     <cGZ#899  N   cC{{3%%%r&   r   r7   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)	r0   r   r   r   _dottedr   r   rA   sep)
r#   r1   r7   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    r0   r   r   is_fixedr   r   	is_dotted)r#   
last_indexir4   r5   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_tabler0   tupleOutOfOrderTableProxyvalidate)r#   r1   r4   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     rf| j        |         d         }t          |t                    s'd|j        j        v sd|j        j        z   |j        _        |                     |||          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   rS   rT   )r   z!Redefinition of an existing table)(r0   r   r   r   _itemis_multirO   r   r   rH   r1   _previous_itemr   ends_with_whitespacer!   invalidate_display_namer    triviaindentrW   r   r^   r	   is_aot_element_replacerA   is_aotrE   r"   rZ   len
_insert_at_raw_appendr]   copydeepcopyr7   r+   r   trail)r#   r1   r   r`   prevprev_wscurrent_idxcurrent_body_elementrL   idxr4   r5   rK   is_tablerX   
after_itemprevious_items                    r$   rA   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++!Z
3A6
z:66Oz0777/3j6G6N/NJ%,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 rR   )r   r0   r^   r    r   r	   rn   rA   ry   r"   dict__setitem__r1   r7   )r#   r1   r   rv   rL   s        r$   rp   zContainer._raw_append7  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&   rx   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   rT   )r    r   getr
   r   r0   r^   listremovern   popr~   __delitem__r1   )r#   rx   r1   indexs       r$   
_remove_atzContainer._remove_atL  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)r0   r   r   r   r   r
   r^   r   r    r~   r   r1   )r#   r1   rx   rY   s       r$   r   zContainer.remove_  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()rT   rc   )r@   r
   r0   r   r   rd   r   r^   maxr    ri   rs   r/   rA   insertr~   r   r1   r7   )
r#   r1   r   r   rx   current_itemr4   r5   new_indicesv_s
             r$   _insert_afterzContainer._insert_afterr  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 )NrT   zUnable to insert at position r   rc   )rn   r    r@   r0   r   r   rd   r   rg   r   r   ri   rs   r   r/   r^   rA   r   r~   r   r1   r7   )
r#   rx   r1   r   r{   r4   r5   r   r   rv   s
             r$   ro   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.NrT   )	r0   r   r   r   r   r
   r^   r_   r    )r#   r1   rx   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.rS   rT   Nr)   r*   s    r$   	last_itemzContainer.last_item  s'    : 	%:b>!$$	% 	%r&   strc                   d}| j         D ]<\  }}|t          |t                    rj|                    d          r;|                    d                              d          sd|j        j        vr|dz  }||                     ||          z  }t          |t                    rk|                    d          r;|                    d                              d          sd|j        j        vr|dz  }|| 	                    ||          z  }|| 
                    ||          z  }#|| 
                    ||          z  }>|S )zRender as TOML string. N rc   )r    r0   r   stripendswithri   rj   _render_tabler   _render_aot_render_simple_item)r#   sr4   r5   s       r$   	as_stringzContainer.as_string  sR   J 	4 	4DAq}a'' 8" ! 5 5d ; ;" !77T	++Aq111AA3'' 	8" ! 5 5d ; ;" !77T	))!Q///AA11!Q777AAT--a333r&   rK   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|                    d          r;|                    d                              d          sd|
j        j        vr|dz  }|
                                r^|	                                r.|                                s||                     |	|
          z  }||                     |	|
|	          z  }||                     |	|
|	          z  }t          |
t(                    rm|                    d          r;|                    d                              d          sd|
j        j        vr|dz  }||                     |	|
|	          z  }{||                     |	|
|                                r|nd 	          z  }|S )
Nr   .c              3  n   K   | ]0\  }}t          |t          t          t          t          f           V  1d S r   )r0   r   r   r   r   ).0r;   r5   s      r$   	<genexpr>z*Container._render_table.<locals>.<genexpr>  sP        Aq q5#z4"@AAA     r&   )[]z[[z]]rc   r   r   r   )display_namer   rE   anyr7   r+   rW   rk   ri   rs   rn   rj   r   
comment_wscommentr0   r   r   r   r   r   r   r   )r#   r1   rK   r   cur_keyopen_closenewline_in_table_triviar4   r5   s              r$   r   zContainer._render_table  sY   )%DD==??D!|d*##%% 	'  !K,    	'
 MMOO	' $LE5##%% *)u EL$6663u{;K;Ka;O;OUW $ <& --$<<- - <*	-
 %,.//- <%- +- -	CC \ D((5<&&CK$ 	 	DAq!U## IIcNN IIcNN33D99  AHO334KC##%% A{{}} ES]]__ Et11!Q777t11!Qt1DDD4--a4-@@@CCAs## IIcNN IIcNN33D99  AHO334KC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#   r1   aotr   r   r   rK   s          r$   r   zContainer._render_aotF  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   )ri   rj   r   r   r   rs   r7   r+   r0   r   rE   rW   r   r   r   r   )	r#   rK   r   r   r   r   r   r4   r5   s	            r$   r   zContainer._render_aot_tableR  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   ri   rj   r   rG   r   r   rs   )r#   r1   r   r   r   s        r$   r   zContainer._render_simple_itemr  s    ;>>###}}C<$&D {! #d||#w# dnn&&''# {%	#
 dk)**# { # #	
r&   c                6    t                               |           S r   r~   __len__r*   s    r$   r   zContainer.__len__      ||D!!!r&   Iterator[str]c                P    t          t                              |                     S r   iterr~   keysr*   s    r$   __iter__zContainer.__iter__      DIIdOO$$$r&   Item | Containerc                    |                      |          }t          |t                    r|                                r|j        S |S r   )r   r0   r   
is_booleanr7   rB   s      r$   __getitem__zContainer.__getitem__  sA    yy~~dD!! 	doo&7&7 	:r&   c                    B| v r>t          t          fd| j                            }|                     ||           d S |                     |           d S )Nc                    | k    S r    )r4   r1   s    r$   <lambda>z'Container.__setitem__.<locals>.<lambda>  s    AH r&   )nextfilterr   rl   rA   )r#   r1   r7   old_keys    `  r$   r   zContainer.__setitem__  si    ?sd{{6"4"4"4"4di@@AAGMM'3.....KKU#####r&   c                0    |                      |           d S r   )r   r#   r1   s     r$   r   zContainer.__delitem__  s    Cr&   defaultc                Z    t                                          ||           | |         S N)r   super
setdefaultr#   r1   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   )r0   r   r   r   r   r
   _replace_at)r#   r1   r   r7   rx   s        r$   rl   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 )NrT   r   rS   rh   rc   )rd   r0   r^   r   r    r   r   r   r1   r   r   r~   r   r   rangern   ro   rA   r   ri   rj   r   r   rs   r2   rh   _previous_item_with_indexrg   r7   r+   r   )r#   rx   r   r7   rY   r4   r5   rJ   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   r7   r*   s    r$   __str__zContainer.__str__  s    4:r&   c                *    t          | j                  S r   )reprr7   r*   s    r$   __repr__zContainer.__repr__  s    DJr&   otherr~   c                P    t          |t                    st          S | j        |k    S r   )r0   r~   NotImplementedr7   )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   rT   r      )r   r    r!   r"   r~   r   r1   r7   )r#   stater1   r   s       r$   __setstate__zContainer.__setstate__  sp    !H	1X
Qx 8 	< 	<IC  sw
;;;	< 	<r&   c                *    t          j         |           S r   )rq   r*   s    r$   rq   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#   cr4   r5   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``NrT   rS   )rn   r    r   r0   )r#   rx   ignorerY   r5   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.
        rS   N)r   )r#   rx   r  rt   s       r$   rf   zContainer._previous_item*  s,     --c6::)tBxxT)r&   )F)r   r   r   r   )r   r'   )r   r,   )r9   r   r   r   r   )r1   r=   r   r>   r   r   )r1   r   r7   r   r   r   r   rP   )r1   r[   r   r   )T)r1   ra   r   r   r`   r   r   r   )r1   r|   r   r   r   r   )rx   rP   r   r   )r1   r   r   r   )r1   r   r   r   r   r   r   r   )rx   rP   r1   r   r   r   r   r   )r1   r   r   r   )r   r>   r   r   )r1   r   rK   r   r   r   r   r   )rK   r   r   r   r   r   r   r   )r1   r   r   r   r1   r   r7   r   r   r   r1   r   r   r   r1   r   r   r   r   r   )r1   r   r   r   r7   r   r   r   )rx   r   r   r   r7   r   r   r   )r   r~   r   r   )r   r   )rx   r   r   r  )rx   r   r   r>   )0__name__
__module____qualname____doc__r%   propertyr+   r.   r7   r9   rC   rO   rZ   r]   rA   rp   r   r   r   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   r   r   r   r   r   r   r   r   rq   r   r   r   rf   __classcell__r   s   @r$   r   r      s                X   (    X(- - - -& & & & &*   $   < < < < < CGU U U U Un8 8 8 8*   &   &- - - -^, , , ,\" " " ""% % % %
   8C C C C CJ
 
 
 
    @
 
 
 
$" " " "% % % %   $ $ $ $        . . . .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    r0   r   r7   r+   rA   r]   )r  r  temp_containerrY   r;   r   r4   r5   s           r$   r`   zOutOfOrderTableProxy.validate3  s     #4 	@ 	@Aoa(GAt$&& @ JO @ @DAq"))!Q)????3355555r&   c                R   || _         t          d          | _        g | _        i | _        |D ]}| j         j        |         \  }}t          |t                    r| j                            |           t          | j                  dz
  }|j
        j        D ]w\  }}| j                            ||           | j                            |g           }||vr|                    |           |!t                              | |j        |           x| j                                         d S )NTrT   )
_containerr   _internal_container_tables_tables_mapr    r0   r   rA   rn   r7   r+   rp   r   r~   r   r1   r]   )	r#   r  r  rY   r;   r   	table_idxr4   r5   s	            r$   r%   zOutOfOrderTableProxy.__init__A  s%   ##,T?? $&13 	9 	9Ao+A.GAt$&& 	9##D)))--1	 JO 9 9DAq,88A>>>".99!R@@G //y111}((qua888 ==?????r&   r   c                4    | j                                         S r   )r  r.   r*   s    r$   r.   zOutOfOrderTableProxy.unwrapW  s    '..000r&   c                    | j         j        S r   )r  r7   r*   s    r$   r7   zOutOfOrderTableProxy.valueZ  s    '--r&   r1   r   r   c                L    || j         vrt          |          | j         |         S r   )r  r
   r   s     r$   r   z OutOfOrderTableProxy.__getitem__^  s,    d... %%%',,r&   r7   c                    ddl m d
fd|| j        v r| j        |         }t          |          dk    rG| j        |                                         }|                     |           t          |          dk    G| j        |d                  |         } |          r. |          s#| j        |d                  |= | j        |= || |<   d S || j        |d                  |<   n|| j        rk |          sO| j        D ]6}t          fd	|                                 D                       r|||<    n7|| j        d         |<   n|| j        d         |<   n
|| j        |<   || j	        |<   |t                              | ||           d S d S )NrT   r   itr   r   r   c                N    t           |           t          t          f          S r   )r0   r   r   )r"  r   s    r$   _is_table_or_aotz:OutOfOrderTableProxy.__setitem__.<locals>._is_table_or_aotg  s    dd2hh555r&   r   c              3  6   K   | ]\  }} |           V  d S r   r   )r   r;   r5   r$  s      r$   r   z3OutOfOrderTableProxy.__setitem__.<locals>.<genexpr>|  s6      MMtq!//222MMMMMMr&   r"  r   r   r   )r/   r   r  rn   r  r   _remove_tabler   r  r  r~   r   )r#   r1   r7   r  rK   	old_valuer$  r   s         @@r$   r   z OutOfOrderTableProxy.__setitem__d  s   	6 	6 	6 	6 	6 	6 $"""&s+Gg,,""W[[]]3""5))) g,,"" WQZ05I	** 3C3CE3J3J L,S1$S)!S	,1DL$S))\ 	)##E** 	-!\ 1 1EMMMMu{{}}MMMMM %*c
 ,1DLOC(',Q$$#(DOC (- %?T3..... ?r&   rK   r   c                    | j                             |           t          | j        j                  D ],\  }}|d         |u r| j                            |            dS -dS )z&Remove table from the parent containerrT   N)r  r   rU   r  r    r   )r#   rK   rx   r   s       r$   r'  z"OutOfOrderTableProxy._remove_table  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 )NrT   )	r  r
   reversedr  rn   r'  r  r~   r   )r#   r1   rY   rK   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__  r   r&   rP   c                6    t                               |           S r   r   r*   s    r$   r   zOutOfOrderTableProxy.__len__  r   r&   r   c                Z    t                                          ||           | |         S r   r   r   s      r$   r   zOutOfOrderTableProxy.setdefault  r   r&   )r  r   r  r  r   r   r  )r1   r   r   r   r  )rK   r   r   r   r	  r  r  r
  )r  r  r  staticmethodr`   r%   r.   r  r7   r   r   r'  r   r   r   r   r  r  s   @r$   r_   r_   2  s       6 6 6 \6@ @ @ @,1 1 1 1 . . X.- - - -$/ $/ $/ $/L   ( ( ( (% % % %" " " "         r&   r_   r"  r   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   rS   )r0   r   r7   rf   r   r   rn   )r"  s    r$   rg   rg     si    
 	2uS*RX-D-D-F-F
"S"SR
R


P#b''A+
P*RVZ2P2PRr&   r&  )!
__future__r   rq   typingr   r   tomlkit._compatr   tomlkit._typesr   tomlkit._utilsr   tomlkit.exceptionsr	   r
   r   tomlkit.itemsr   r   r   r   r   r   r   r   r   r   rd   object_NOT_SETr   r_   rg   r   r&   r$   <module>r:     s   " " " " " "              " " " " " " & & & & & & & & & & & & 0 0 0 0 0 0 - - - - - - + + + + + +       ! ! ! ! ! !                   # # # # # #                   $ $ $ $ $ $ ' ' ' ' ' ' 688R* R* R* R* R* R* R* R*jw w w w w; w w wtR R R R R Rr&   