a
    »ÏOcÍ`  ã                   @   sJ  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 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„ dee!ƒZ"G dd„ dee!ƒZ#dS )é    )Úunicode_literalsN)ÚAny)ÚDict)Ú	Generator)ÚList)ÚOptional)ÚTuple)ÚUnioné   )ÚMutableMapping)Údecode)Úmerge_dicts)ÚKeyAlreadyPresent)ÚNonExistentKey)Ú
ParseError)ÚTOMLKitError)ÚAoT)ÚComment)ÚItem)ÚKey)ÚNull)ÚTable)Ú
Whitespace)Úitemc                       sR  e Zd ZdZdKdd„Zedd„ ƒZedd„ ƒZd	d
„ ZdLdd„Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdMdd„ZdNdd„ZdOd d!„ZdPd"d#„Zefd$d%„ZdQ‡ fd&d'„	Zd(d)„ Zd*d+„ Zd,d-„ Zd.d+„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Z d;d<„ Z!d=d>„ Z"d?d@„ Z#dAdB„ Z$dCdD„ Z%dEdF„ Z&dGdH„ Z'dIdJ„ Z(‡  Z)S )RÚ	Containerz6
    A container for items within a TOMLDocument.
    Fc                 C   s   i | _ g | _|| _g | _d S ©N)Ú_mapÚ_bodyÚ_parsedÚ_table_keys)ÚselfÚparsed© r"   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/tomlkit/container.pyÚ__init__&   s    zContainer.__init__c                 C   s   | j S r   ©r   ©r    r"   r"   r#   Úbody,   s    zContainer.bodyc                 C   s^   i }| j D ]N\}}|d u rq
|j}|j}t|tƒr8|j}||v rPt|| |ƒ q
|||< q
|S r   )r   ÚkeyÚvalueÚ
isinstancer   r   )r    ÚdÚkÚvr"   r"   r#   r)   0   s    

zContainer.valuec                 C   sT   || _ | jD ]B\}}t|tƒr,|j |¡ qt|tƒr|jD ]}|j |¡ q<qd S r   )r   r   r*   r   r)   Úparsingr   r'   )r    r.   r,   r-   Útr"   r"   r#   r.   D   s    


zContainer.parsingNc                 C   s4   |du r(t |ttfƒstdƒ‚d| }}|  ||¡S )z8
        Adds an item to the current Container.
        Nz8Non comment/whitespace items must have an associated key)r*   r   r   Ú
ValueErrorÚappend)r    r(   r   r"   r"   r#   ÚaddN   s    ÿ
zContainer.addc                 C   sÈ  t |tƒs|d urt|ƒ}t |tƒs,t|ƒ}t |ttfƒrL|jd u rL|j|_t |tƒrr| jrr| j	sr|j
jsrd|j
_t |tƒr´| jr´| j	s´|r´d|d j
jvr´d|d j
j |d j
_|d u�r¾|| v �r¾| j| }t |tƒrì| j|d  }n
| j| }|d }t |tƒ�rzt |ttfƒ�s"t|ƒ‚| ¡ �rht |tƒ�sZt||g| j	d�}|  |||¡ n
| |¡ | S | ¡ �r’| ¡ �s„t|ƒ‚| |¡ | S | ¡ �rf| ¡ �rN| jd |d k�sÒ| ¡ �sÒ|d  ¡ �r*t |tƒ�sä|f}|t| jƒf | j|< | j ||f¡ | j |¡ t| | j| ƒ | S |jjD ]\}}| ||¡ �q2| S |d  ¡ �rxtdƒ‚n| ¡ �s¾t|ƒ‚nDt |tƒ�r¶t |tƒ�sšt|ƒ‚|jD ]}| |¡ �q | S t|ƒ‚t |ttfƒ}	|d u�rò| j�rò| j	�sòd }
d}| jD ]b\}}t |tƒ�r�qôt |tƒ�r&| ¡ �s&�qô|	�sBt |ttfƒ�rB �qX|�pJ|}
|d7 }�qô|
d u�rät |
tƒ�rÔ|
d t| jƒk �r”|  |
d ||¡S | jd d }t |tƒ�sâ|	�sâd|j
j v�râ|j
 j d7  _ n|  !|
||¡S n|  d||¡S || jv �rr| j| }t |tƒ�r|d }| j| d }|d u�rHt |tƒ�sHt|ƒ‚t |tƒ�sZ|f}|t| jƒf | j|< nt| jƒ| j|< | j ||f¡ | "¡ �r¨| j |¡ |d u�rÄt# $| |j|j¡ | S )NÚ
r   éÿÿÿÿr
   )r!   z!Redefinition of an existing table)%r*   r   r   Ú_itemr   r   Únamer(   r   r   ÚtriviaÚindentr   Útupler   Úis_aot_elementÚ_replacer1   Zis_aotÚis_super_tabler   Ú	is_dottedÚlenÚOutOfOrderTableProxyr)   r'   r   r   r   Zis_fixedÚintÚ
_insert_atÚtrailÚ_insert_afterÚis_tableÚdictÚ__setitem__)r    r(   r   Zcurrent_idxZcurrent_body_elementÚcurrentr,   r-   ÚtablerD   Z	key_afterÚidxÚprevious_itemr"   r"   r#   r1   ^   sÞ    
ÿþýü









ÿþ
ý





ÿþ
ý


zContainer.appendc                 C   sx   t |tƒst|ƒ}| j |d ¡}|d u r0t|ƒ‚t |tƒrV|D ]}d tƒ f| j|< q>nd tƒ f| j|< t 	| |j
¡ | S r   )r*   r   r   Úpopr   r9   r   r   rE   Ú__delitem__r(   )r    r(   rI   Úir"   r"   r#   Úremoveý   s    

zContainer.removec           
      C   sB  |d u rt dƒ‚|| vr t|ƒ‚t|tƒs2t|ƒ}t|tƒsDt|ƒ}t|ƒ}| j| }t|tƒrht|ƒ}| j| d }d|j	j
vr’|j	 j
d7  _
| j ¡ D ]`\}}t|tƒræg }|D ]}	|	|krÊ|	d }	| |	¡ q¶t|ƒ| j|< qœ||krœ|d | j|< qœ|d | j|< | j |d ||f¡ |d u�r>t | |j|j¡ | S )Nz$Key cannot be null in insert_after()r
   r3   )r0   r   r*   r   r5   r   r9   Úmaxr   r7   rB   Úitemsr1   ÚinsertrE   rF   r(   r)   )
r    r(   Z	other_keyr   rI   Zcurrent_itemr,   r-   Únew_indicesÚv_r"   r"   r#   rC     s<    





zContainer._insert_afterc           	      C   s0  |t | jƒd kr td |¡ƒ‚t|tƒs2t|ƒ}t|ƒ}|dkrˆ| j|d  d }t|tƒsˆt|tt	fƒsˆd|j
jvrˆ|j
 jd7  _| j ¡ D ]`\}}t|tƒrÜg }|D ]}||krÀ|d }| |¡ q¬t|ƒ| j|< q’||kr’|d | j|< q’|| j|< | j |||f¡ |d u�r,t | |j|j¡ | S )Nr
   zUnable to insert at position {}r   r3   )r>   r   r0   Úformatr*   r   r5   r   r   r   r7   rB   r   rP   r9   r1   rQ   rE   rF   r(   r)   )	r    rI   r(   r   rJ   r,   r-   rR   rS   r"   r"   r#   rA   >  s:    
ÿþ
ý


zContainer._insert_atc                 C   sR   t |tƒst|ƒ}| j |d ¡}|d u r0t|ƒ‚t |tƒrDt| |ƒS | j| d S ©Nr
   )r*   r   r   Úgetr   r9   r?   r   )r    r(   rI   r"   r"   r#   r   h  s    


zContainer.itemc                 C   s   | j r| j d d S d S )Nr4   r
   r%   r&   r"   r"   r#   Ú	last_itemx  s    zContainer.last_itemc                 C   sz   d}| j D ]j\}}|d urdt|tƒr6||  ||¡7 }qtt|tƒrR||  ||¡7 }qt||  ||¡7 }q
||  ||¡7 }q
|S )NÚ )r   r*   r   Ú_render_tabler   Ú_render_aotÚ_render_simple_item)r    Úsr,   r-   r"   r"   r#   Ú	as_string|  s    

zContainer.as_stringc           
      C   s„  d}|j d ur|j }n| ¡ }|d ur2|d | }| ¡ rXtdd„ |jjD ƒƒrÂ| ¡ sÂd\}}| ¡ rpd\}}|d |j	j
|t|ƒ||j	jt|j	jƒ|j	jd|j	jvrºt|jƒd	krºdnd¡7 }|jjD ]´\}}	t|	tƒ�r:|	 ¡ �r$| ¡ �r| ¡ �s||  ||	¡7 }n|| j||	|d
�7 }n|| j||	|d
�7 }qÊt|	tƒ�r\|| j||	|d
�7 }qÊ|| j||	| ¡ �rt|nd d
�7 }qÊ|S )NrX   Ú.c                 s   s$   | ]\}}t |tttfƒ V  qd S r   )r*   r   r   r   )Ú.0Ú_r-   r"   r"   r#   Ú	<genexpr>™  s   z*Container._render_table.<locals>.<genexpr>)ú[ú]©z[[z]]z{}{}{}{}{}{}{}{}r3   r   ©Úprefix)Zdisplay_namer]   r<   Úanyr)   r'   r=   r:   rT   r7   r8   r   Ú
comment_wsÚcommentrB   r>   r*   r   rY   r   rZ   r[   )
r    r(   rH   rf   ÚcurÚ_keyÚopen_Úcloser,   r-   r"   r"   r#   rY   ‹  sN    
ÿÿü
 ø
ÿ
zContainer._render_tablec                 C   sJ   |  ¡ }|d ur|d | }d}t|ƒ}|jD ]}|| j||d�7 }q.|S )Nr^   rX   re   )r]   r   r'   Ú_render_aot_table)r    r(   Zaotrf   rk   rj   rH   r"   r"   r#   rZ   À  s    
zContainer._render_aotc           	   
   C   sì   d}|p
d}|  ¡ sNd\}}|d |jj|t|ƒ||jjt|jjƒ|jj¡7 }|jj	D ]�\}}t
|tƒr¶|  ¡ r | ¡ rŠ||  ||¡7 }q´|| j|||d�7 }qæ|| j|||d�7 }qVt
|tƒrÖ|| j|||d�7 }qV||  ||¡7 }qV|S )NrX   rd   ú{}{}{}{}{}{}{}re   )r<   rT   r7   r8   r   rh   ri   rB   r)   r'   r*   r   r=   rY   r   rZ   r[   )	r    rH   rf   rj   rk   rl   rm   r,   r-   r"   r"   r#   rn   Ì  s0    
ù


zContainer._render_aot_tablec              	   C   sd   |d u r|  ¡ S |  ¡ }|d ur,|d | }d |jjt|ƒ|jt|  ¡ ƒ|jjt|jjƒ|jj¡S )Nr^   ro   )	r]   rT   r7   r8   r   Úseprh   ri   rB   )r    r(   r   rf   rk   r"   r"   r#   r[   ï  s    

ùzContainer._render_simple_itemc                 C   s8   z| | }W n  t y,   |tu r$‚ | Y S 0 | |= |S r   )ÚKeyErrorÚ_NOT_SET)r    r(   Údefaultr)   r"   r"   r#   rK     s    
zContainer.popc                    s   t t| ƒj||d� | | S ©N)rs   )Úsuperr   Ú
setdefault©r    r(   rs   ©Ú	__class__r"   r#   rv     s    zContainer.setdefaultc                 C   s   t |tƒst|ƒ}|| jv S r   )r*   r   r   ©r    r(   r"   r"   r#   Ú__contains__  s    
zContainer.__contains__c                 C   s0   |d ur || v r |   |||¡ n|  ||¡ d S r   ©r;   r1   ©r    r(   r)   r"   r"   r#   rF     s    zContainer.__setitem__c                 C   sd   t |tƒst|ƒ}| j |d ¡}|d u r0t|ƒ‚t |tƒrDt| |ƒS | j| d }| ¡ r`|j	S |S rU   )
r*   r   r   rV   r   r9   r?   r   Z
is_booleanr)   )r    r(   rI   r   r"   r"   r#   Ú__getitem__#  s    


zContainer.__getitem__c                 C   s0   |d ur || v r |   |||¡ n|  ||¡ d S r   r|   r}   r"   r"   r#   rF   7  s    c                 C   s   |   |¡ d S r   )rN   rz   r"   r"   r#   rL   =  s    zContainer.__delitem__c                 C   s
   t  | ¡S r   )rE   Ú__len__r&   r"   r"   r#   r   @  s    zContainer.__len__c                 C   s   t t | ¡ƒS r   )ÚiterrE   Úkeysr&   r"   r"   r#   Ú__iter__C  s    zContainer.__iter__c                 C   sT   t |tƒst|ƒ}t |tƒs$t|ƒ}| j |d ¡}|d u rBt|ƒ‚|  |||¡ d S r   )r*   r   r   rV   r   Ú_replace_at)r    r(   Únew_keyr)   rI   r"   r"   r#   r;   F  s    

zContainer._replacec                 C   s"  t |tƒst|ƒ}t |tƒrF|dd … D ]}d tƒ f| j|< q(|d }| j| \}}| j |¡| j|< ||krzt | |¡ t | j| tƒrž| j| d | j|< t	|ƒ}t |t
tfƒsä|jj|j_|jj|j_|jj|j_|jj|j_t |tƒrþ| d t
dƒ¡ ||f| j|< t | |j|j¡ d S )Nr
   r   r3   )r*   r   r9   r   r   r   rK   rE   rL   r5   r   r   r7   r8   rh   ri   rB   r   r1   rF   r(   r)   )r    rI   r„   r)   rM   r,   r-   r"   r"   r#   rƒ   U  s,    


zContainer._replace_atc                 C   s
   t | jƒS r   )Ústrr)   r&   r"   r"   r#   Ú__str__{  s    zContainer.__str__c                 C   s
   t | jƒS r   )Úreprr)   r&   r"   r"   r#   Ú__repr__~  s    zContainer.__repr__c                 C   s   t |tƒstS | j|kS r   )r*   rE   ÚNotImplementedr)   ©r    Úotherr"   r"   r#   Ú__eq__�  s    
zContainer.__eq__c                 C   s   | j fS r   )r   ©r    Úprotocolr"   r"   r#   Ú	_getstate‡  s    zContainer._getstatec                 C   s
   |   d¡S )Né   )Ú__reduce_ex__r&   r"   r"   r#   Ú
__reduce__Š  s    zContainer.__reduce__c                 C   s"   | j |  |¡| j| j| j| jffS r   )ry   r�   r   r   r   r   r�   r"   r"   r#   r‘   �  s    ýzContainer.__reduce_ex__c                 C   sV   |d | _ |d | _|d | _|d | _| jD ]"\}}|d ur.t | |j|j¡ q.d S )Nr   r
   r�   é   )r   r   r   r   rE   rF   r(   r)   )r    Ústater(   r   r"   r"   r#   Ú__setstate__”  s    



zContainer.__setstate__c                 C   s
   t   | ¡S r   )Úcopyr&   r"   r"   r#   r–   ž  s    zContainer.copyc                 C   sP   |   | j¡}t | ¡D ]\}}t |||¡ q| j| j7  _|j | j¡ |S r   )	ry   r   rE   rP   rF   r   r'   r   Úupdate)r    Úcr,   r-   r"   r"   r#   Ú__copy__¡  s    zContainer.__copy__)F)N)N)N)N)N)N)*Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   Úpropertyr'   r)   r.   r2   r1   rN   rC   rA   r   rW   r]   rY   rZ   rn   r[   rr   rK   rv   r{   rF   r~   rL   r   r‚   r;   rƒ   r†   rˆ   rŒ   r�   r’   r‘   r•   r–   r™   Ú__classcell__r"   r"   rx   r#   r   !   sV   


 ÿ
  /* ÿ
5

#
 ÿ&
r   c                   @   s¨   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zd&dd„Zefdd„Zd'dd„Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ ZdS )(r?   c           	      C   sÜ   || _ t| j jƒ| _g | _i | _i | _|D ]¬}| j j| \}}t|t	ƒr¦| j 
|¡ t| jƒd }|jjD ]8\}}| j 
||¡ || j|< |d urjt | |j|¡ qjq*| j 
||¡ || j|< |d ur*t | |j|¡ q*d S rU   )Ú
_containerr   r.   Ú_internal_containerÚ_tablesÚ_tables_mapr   r   r*   r   r1   r>   r)   r'   rE   rF   r(   )	r    Ú	containerÚindicesrM   r(   r   Z	table_idxr,   r-   r"   r"   r#   r$   ­  s&    


zOutOfOrderTableProxy.__init__c                 C   s   | j jS r   )r¡   r)   r&   r"   r"   r#   r)   Å  s    zOutOfOrderTableProxy.valuec                 C   s   || j vrt|ƒ‚| j | S r   )r¡   r   rz   r"   r"   r#   r~   É  s    
z OutOfOrderTableProxy.__getitem__c                 C   sˆ   || j v r&| j | }| j |||¡ nH|| jv rJ| j| j|  }|||< n$| jrd| jd }|||< n
|| j|< |d ur„t | ||¡ d S )Nr   )r   r    rƒ   r£   r¢   rE   rF   )r    r(   r   rI   rH   r"   r"   r#   rF   Ï  s    






z OutOfOrderTableProxy.__setitem__c                 C   sd   || j v r&| j | }| j|= | j |= n2|| jv rP| j| j|  }||= | j|= nt|ƒ‚| j|= d S r   )r   r    r£   r¢   r   r¡   )r    r(   rI   rH   r"   r"   r#   rL   ß  s    




z OutOfOrderTableProxy.__delitem__c                 C   s
   | j  ¡ S r   )r¡   r�   r&   r"   r"   r#   r�   í  s    zOutOfOrderTableProxy.keysc                 C   s
   | j  ¡ S r   )r¡   Úvaluesr&   r"   r"   r#   r¦   ð  s    zOutOfOrderTableProxy.valuesc                 C   s
   | j  ¡ S r   )r¡   rP   r&   r"   r"   r#   rP   ó  s    zOutOfOrderTableProxy.itemsc                 C   s   | j  |¡ d S r   )r¡   r—   rŠ   r"   r"   r#   r—   ö  s    zOutOfOrderTableProxy.updateNc                 C   s   | j j||d�S rt   )r¡   rV   rw   r"   r"   r#   rV   ù  s    zOutOfOrderTableProxy.getc                 C   s   | j j||d�S rt   )r¡   rK   rw   r"   r"   r#   rK   ü  s    zOutOfOrderTableProxy.popc                 C   s   | j j||d�S rt   )r¡   rv   rw   r"   r"   r#   rv   ÿ  s    zOutOfOrderTableProxy.setdefaultc                 C   s
   || j v S r   )r¡   rz   r"   r"   r#   r{     s    z!OutOfOrderTableProxy.__contains__c                 C   s
   t | jƒS r   )r€   r¡   r&   r"   r"   r#   r‚     s    zOutOfOrderTableProxy.__iter__c                 C   s
   t | jƒS r   )r…   r¡   r&   r"   r"   r#   r†   
  s    zOutOfOrderTableProxy.__str__c                 C   s
   t | jƒS r   )r‡   r¡   r&   r"   r"   r#   rˆ     s    zOutOfOrderTableProxy.__repr__c                 C   s   t |tƒstS | j|kS r   )r*   rE   r‰   r¡   rŠ   r"   r"   r#   rŒ     s    
zOutOfOrderTableProxy.__eq__c                 C   s   t | j|ƒS r   )Úgetattrr¡   )r    Ú	attributer"   r"   r#   Ú__getattr__  s    z OutOfOrderTableProxy.__getattr__)N)N)rš   r›   rœ   r$   rž   r)   r~   rF   rL   r�   r¦   rP   r—   rV   rr   rK   rv   r{   r‚   r†   rˆ   rŒ   r©   r"   r"   r"   r#   r?   ¬  s(   

 ÿ
r?   )$Ú
__future__r   r–   Útypingr   r   r   r   r   r   r	   Ú_compatr   r   Ú_utilsr   Ú
exceptionsr   r   r   r   rP   r   r   r   r   r   r   r   r   r5   Úobjectrr   rE   r   r?   r"   r"   r"   r#   Ú<module>   s>        