o �J�h�{�@s ddlmZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z dd l mZdd l mZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZe�ZGdd�de �ZGdd�de �Zddd�Z dS) �)� annotationsN)�Any)�Iterator)�decode)� _CustomDict)� merge_dicts)�KeyAlreadyPresent)�NonExistentKey)� TOMLKitError)�AoT)�Comment)�Item)�Key)�Null)� SingleKey)�Table)�Trivia)� Whitespace��itemcs�eZdZdZd|d}dd�Zed~d d ��Zdd d�Zeddd��Zd�dd�Z d�d�dd�Z d�dd�Z d�d!d"�Z d�d�d$d%�Z &d�d�d)d*�Zd�d,d-�Zd�d/d0�Zd�d2d3�Zd�d6d7�Zd�d8d9�Zd�d:d;�Zd�d<d=�Zd�d?d@�Zd�d�dEdF�Zd�dGdH�Zd�d�dIdJ�Zd�dKdL�Zd�dMdN�Zd�dPdQ�Zd�dSdT�Zd�dUdV�Zd�dWdX�Zd��fdZd[� Z d�d]d^�Z!d�d`da�Z"d�dbdc�Z#d�ddde�Z$d�dhdi�Z%djdk�Z&dldm�Z'dndo�Z(dpdq�Z)d�drds�Z*d�dtdu�Z+de,ffd�dxdy�Z-de,ffd�dzd{�Z.�Z/S)�� Containerz� A container for items within a TOMLDocument. This class implements the `dict` interface with copy/deepcopy protocol. F�parsed�bool�return�NonecCsi|_g|_||_g|_dS�N)�_map�_body�_parsed� _table_keys)�selfr�r!�OC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\tomlkit\container.py�__init__$s zContainer.__init__�list[tuple[Key | None, Item]]cCs|jSr�r�r r!r!r"�body*szContainer.body�dict[str, Any]cCsfi}|��D]*\}}|durqt|t�r|j}t|d�r |��}||vr,t|||�q|||<q|S)z#Returns as pure python object (ppo)N�unwrap)�items� isinstancer�key�hasattrr)r)r � unwrapped�k�vr!r!r"r).s   zContainer.unwrapcCs^i}|jD]'\}}|durq|j}|j}t|t�r|j}||vr(t|||�q|||<q|S)zThe wrapped dict valueN)rr,�valuer+rr)r �dr/r0r!r!r"r1Bs  zContainer.value�parsingcCsT||_|jD]!\}}t|t�r|j�|�qt|t�r'|jD]}|j�|�qqdSr)rrr+rr1r3r r')r r3�_r0�tr!r!r"r3Ws   ��zContainer.parsingNr,�Key | Item | strr� Item | NonecCs4|durt|ttf�std��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 r,rr!r!r"�addas �  z Container.addrr1r c Cs�t|ttf�r td��|�^}}}d|_ttd�t�ddd�}}|D]}d|_ttd�t�ddd�} |�|| �| }q#|j|_|�||�|�||�dS)Nz!Can't add a table to a dotted keyTF)�is_super_table) r+rr r Z_dottedrrr9�sep) r r,r1�name�mid�last�table�current�_nameZ new_tabler!r!r"�_handle_dotted_keyvs    zContainer._handle_dotted_key�intcCshd}t|j�D](\}\}}t|t�rqt|t�r|��sqt|ttf�r-|��s-|dS|}q|dS�N������) � enumeraterr+rrZis_fixedrr � is_dotted)r � last_index�ir/r0r!r!r"�_get_last_index_before_table�s �z&Container._get_last_index_before_table�SingleKey | NonecCsb|dur|jD] }|dusJ�|�|�qdS||jvs$t|j|t�s&dSt�||j|�dSr)r�_validate_out_of_order_tabler+�tuple�OutOfOrderTableProxy�validate)r r,r/r!r!r"rO�s   z&Container._validate_out_of_order_tableT�Key | str | NonerRcCs@t|t�s |dur t|�}t|t�st|�}|dur&|��r&|�||�|St|ttf�r6|j dur6|j |_ |� �}t|t �pBt |�}t|t�rc|jsO|��|jrc|jsc|jjsc|sc|��scd|j_t|t�r�|jr�|js�|��|r�d|djjvs�|s�d|djj|dj_|du�r�||v�r�|j|}t|t�r�|j|d}n|j|}|d}t|t��r�t|ttf�s�t|��|��r�t|t�s�t||g|jd�}|�|||�|S|�|�|S|��r�|��s�t|��|�|�|S|���r�|���rt|���s|d���s|jd|dk�rH|���r#|j�s#|��} nt|j�} | t|j�k�r8|�| ||�n|� ||�|�rF|�!|�|St"�#|�}|j$j%D] \} } |�| | ��qQ|d|f|jt|t��rp|d<|S|<|S|d���rt&d��n,|���s�t|��n"t|t��r�t|t��s�t|��|j%D]} |�| ��q�|St|��t|ttf�} |du�r|j�r|j�s| �r�|���r|��}|t|j�k�r�|j|d}t|t ��s�d|jjv�s�d|jj|j_|�|||�S|jdd}t|t ��st |��sd|jj'v�s|jj'd7_'|� ||�|S)z<Similar to :meth:`add` but both key and value must be given.N� rrGrH)rz!Redefinition of an existing table)(r+rrr �_itemZis_multirDr rr>r,�_previous_itemr�ends_with_whitespacer�invalidate_display_namer�trivia�indentrJrrPr�is_aot_element�_replacer9Zis_aotr<rrM�len� _insert_at� _raw_appendrO�copy�deepcopyr1r'r �trail)r r,rrR�prevZprev_ws� current_idxZcurrent_body_elementrB�idxr/r0rA�is_tablerKZ after_item� previous_itemr!r!r"r9�s�   �����      �   � �      � ����� �    ���� ��� zContainer.append� Key | NonecCs�||jvr6|j|}t|t�s|f}|j|dd}|dur(t|t�s(t|��g|�t|j��R|j|<n |durBt|j�|j|<|j�||f�|��rT|j �|�|durct � ||j |j �dSdSrF)rr+rPrrrr]r9rfr�dict� __setitem__r,r1)r r,rrdrBr!r!r"r_7s    �zContainer._raw_appendrecCs�|j|d}|j�|�}|durt|��dt�f|j|<t|t�rAt|�}|�|�t |�dkr6|� �}nt|�}||j|<dSt � ||j �|j� |�dS)NrrH)rr�getr rr+rP�list�remover]�popri� __delitem__r,)r rer,�indexr!r!r"� _remove_atLs     zContainer._remove_at� Key | strcCsxt|t�s t|�}|j�|d�}|durt|��t|t�r+|D] }dt�f|j|<qndt�f|j|<t � ||j �|S)z Remove a key from the container.N) r+rrrrnr rPrrriror,)r r,rerLr!r!r"rm_s  �zContainer.remove� other_keyrc Cs@|durtd��||vrt|��t|t�st|�}t|t�s"t|�}t|�}|j|}t|t�r4t|�}|j |d}d|j j vrI|j j d7_ |j� �D]0\}}t|t�rsg}|D]} | |kre| d} |� | �q[t|�|j|<qN||kr~|d|j|<qN|d|j|<|j �|d||f�|dur�t�||j|j�|S)Nz$Key cannot be null in insert_after()rHrT)r8r r+rrrUrrP�maxrrYrbr*r9�insertrirjr,r1) r r,rsrreZ current_itemr/r0� new_indices�v_r!r!r"� _insert_afterrs>       �zContainer._insert_afterc Csh|t|j�dkrtd|����t|t�st|�}t|�}|dkrH|j|dd}t|t�sHt|�sHt|t t f�sHd|j j vsH|j j d7_ |j ��D]0\}}t|t�rrg}|D]}||krd|d}|�|�qZt|�|j |<qM||kr}|d|j |<qM||j vr�|j |} t| t�s�| f} g| �|�R|j |<n||j |<|j�|||f�t�||j|j�|S)NrHzUnable to insert at position rrT)r]rr8r+rrrUrrWr rrYrbrr*rPr9rurirjr,r1) r rer,rrgr/r0rvrwrdr!r!r"r^�sF �� �   �    zContainer._insert_atcCsPt|t�s t|�}|j�|�}|durt|��t|t�r!t||�S|j|dS)zGet an item for the given key.NrH) r+rrrrkr rPrQr)r r,rer!r!r"r�s    zContainer.itemcCs|jr |jddSdS)zGet the last item.rGrHNr%r&r!r!r"� last_item�s�zContainer.last_item�strcCs�d}|jD]c\}}|dur`t|t�r2|�d�r)|�d��d�s)d|jjvr)|d7}||�||�7}qt|t�rW|�d�rN|�d��d�sNd|jjvrN|d7}||� ||�7}q||� ||�7}q||� ||�7}q|S)zRender as TOML string.�N� rT) rr+r�strip�endswithrYrZ� _render_tabler � _render_aot�_render_simple_item)r �sr/r0r!r!r"� as_string�s, ��  �� zContainer.as_stringrAr�prefix� str | Nonec Cs�d}|jdur |j}n|��}|dur|d|}|��r,tdd�|jjD��rj|��sjd\}}|��r8d\}}d|jj vrGt |j�dkrGdnd}||jj �|�t |��|�|jj �t |jj��|jj �|��7}n |jj dkrv||jj 7}|jjD]�\} } t| t�r�|�d �r�|�d ��d�s�d| jj vr�|d7}| ��r�| ��r�|��s�||�| | �7}qz||j| | |d �7}qz||j| | |d �7}qzt| t�r�|�d �r�|�d ��d�s�d| jj vr�|d7}||j| | |d �7}qz||j| | |��r�|ndd �7}qz|S) Nr{�.css(�|]\}}t|ttttf� VqdSr)r+rr rr��.0r4r0r!r!r"� <genexpr> s �� �z*Container._render_table.<locals>.<genexpr>)�[�]�z[[z]]rTrr|�r�)Z display_namer�r<�anyr1r'rJr[rYrbr]rZr� comment_ws�commentr+rr}r~rr r�r�) r r,rAr��cur�_key�open_�closeZnewline_in_table_triviar/r0r!r!r"rs|  ��� ����� ����  ��  ��  �zContainer._render_tablecCsJ|��}|dur|d|}d}t|�}|jD] }||j||d�7}q|S)Nr�r{r�)r�rr'�_render_aot_table)r r,�aotr�r�r�rAr!r!r"r�Fs  zContainer._render_aotc Cs�d}|pd}d\}}||jj�|�t|��|�|jj�t|jj��|jj��7}|jjD]H\}}t|t �r\|� �rQ|� �rF||� ||�7}q,||j |||d�7}q,||j |||d�7}q,t|t �rl||j|||d�7}q,||�||�7}q,|S)Nr{r�r�)rYrZrr�r�rbr1r'r+rr<rJrr r�r�) r rAr�r�r�r�r�r/r0r!r!r"r�Rs:���� ���  zContainer._render_aot_tablecCsn|dur|��S|��}|dur|d|}|jj�t|��|j�t|����|jj�t|jj��|jj��S)Nr�)r�rYrZrr=r�r�rb)r r,rr�r�r!r!r"r�rs& �� �� ���zContainer._render_simple_itemcC� t�|�Sr�ri�__len__r&r!r!r"r��� zContainer.__len__� Iterator[str]cC�tt�|��Sr��iterri�keysr&r!r!r"�__iter__��zContainer.__iter__�Item | ContainercCs&|�|�}t|t�r|��r|jS|Sr)rr+r Z is_booleanr1r:r!r!r"� __getitem__�s zContainer.__getitem__csJ�dur�|vrtt�fdd�|j��}|�|�|�dS|��|�dS)Ncs|�kSrr!)r/�r,r!r"�<lambda>�sz'Container.__setitem__.<locals>.<lambda>)�next�filterrr\r9)r r,r1�old_keyr!r�r"rj�szContainer.__setitem__cCs|�|�dSr)rm�r r,r!r!r"ro�r�zContainer.__delitem__�defaultc�t�j||d�||S�N)r���super� setdefault�r r,r��� __class__r!r"r���zContainer.setdefault�new_keycCs@t|t�s t|�}|j�|�}|durt|��|�|||�dSr)r+rrrrkr � _replace_at)r r,r�r1rer!r!r"r\�s  zContainer._replace�int | tuple[int]c CsXt|�}t|t�r|dd�D] }dt�f|j|<q|d}|j|\}}t|t�sDt|ttf�t|ttf�ks=||jkrBt |�}n|}|j |=||j |<||krWt � ||�t|ttf�t|ttf�kr�|� |�t|t|j��D]}t|j|dttf�r�|�|||�|}n qrd}|�||�n.t|ttf�s�|jj|j_|jjp�|jj|j_|jjp�|jj|j_|jj|j_||f|j|<t|d�r�|��t|t��r*|��\}}|dkr�|n|}t|�} t|t�o�|jjo�t|jjddt�} ||k�ot|j|ddt�} ||k�s| �r| �s| �s|�dtd��t �||j|j�dSdS)NrHrrGrXrT)rUr+rPrrrr rr,rrrirorm�ranger]r^r9rrYrZr�r�rbr-rX�_previous_item_with_indexrWr1r'rj) r rer�r1rLr/r0r@r4Zhas_wsZreplace_has_wsZnext_wsr!r!r"r��s`       � �      ��"�zContainer._replace_atcC� t|j�Sr)rzr1r&r!r!r"�__str__�r�zContainer.__str__cCr�r)�reprr1r&r!r!r"�__repr__�r�zContainer.__repr__�otherricCst|t�stS|j|kSr)r+ri�NotImplementedr1)r r�r!r!r"�__eq__�s  zContainer.__eq__cCs|jfSr)r�r �protocolr!r!r"� _getstate�szContainer._getstatecCs |�d�S)N�)� __reduce_ex__r&r!r!r"� __reduce__�r�zContainer.__reduce__cCs"|j|�|�|j|j|j|jffSr)r�r�rrrrr�r!r!r"r�s�zContainer.__reduce_ex__cCsV|d|_|d|_|d|_|d|_|jD]\}}|dur(t�||j|j�qdS)NrrHr��)rrrrrirjr,r1)r �stater,rr!r!r"� __setstate__s    ��zContainer.__setstate__cCs t�|�Sr)r`r&r!r!r"r`r�zContainer.copycCsP|�|j�}t�|�D] \}}t�|||�q |j|j7_|j�|j�|Sr) r�rrir*rjrr'r�update)r �cr/r0r!r!r"�__copy__s zContainer.__copy__� int | None�tuple[int, Item] | NonecCs^|dus |t|j�krt|j�}t|ddd�D]}|j|d}t||�s,||fSqdS)z5Find the immediate previous item before index ``idx``NrHrG)r]rr�r+)r re�ignorerLr0r!r!r"r�s   �z#Container._previous_item_with_indexcCs|�||�}|r |dSdS)z{Find the immediate previous item before index ``idx``. If ``idx`` is not given, the last item is returned. rGN)r�)r rer�rcr!r!r"rV*s zContainer._previous_item)F)rrrr)rr$)rr()r3rrrr)r,r6rr7rr)r,rr1r rr�rrE)r,rNrr)T)r,rSrr rRrrr)r,rhrr rr)rerErr)r,rrrr)r,rrrsrrrrrr)rerEr,rrrrrr)r,rrrr )rr7�rrz)r,rrArr�r�rrz)rArr�r�rrz�rr�)r,rrrr��r,rrr1rrr�r,rrrr�r,rrr�rrr)r,rrr�rrr1r rr)rer�r�rrr1r rr)r�rirr)rr)rer�rr�)rer�rr7)0�__name__� __module__� __qualname__�__doc__r#�propertyr'r)r1r3r;rDrMrOr9r_rqrmrxr^rryr�rr�r�r�r�r�r�rjror�r\r�r�r�r�r�r�r�r�r`r�rr�rV� __classcell__r!r!r�r"rs`         �     / .    E       D    � rcs�eZdZed'dd��Zd'd d �Zd(d d �Zedd��Zd)dd�Z d*dd�Z d+dd�Z d,dd�Z d-dd �Z d.d"d#�Zd/�fd%d&� Z�ZS)0rQ� containerr�indices�tuple[int, ...]rrcCsXtd�}|D]}|j|\}}t|t�r%|jjD] \}}|j||dd�qq|��dS)z3Validate out of order tables in the given containerTF)rRN)rrr+rr1r'r9rO)r�r�Ztemp_containerrLr4rr/r0r!r!r"rR3s � zOutOfOrderTableProxy.validatec Cs�||_td�|_g|_i|_|D]H}|jj|\}}t|t�rX|j�|�t |j�d}|j j D]'\}}|j� ||�|j� |g�}||vrK|�|�|durWt�||j|�q0q|j��dS)NTrH)� _containerr�_internal_container�_tables� _tables_maprr+rr9r]r1r'r_r�rirjr,rO) r r�r�rLr4rZ table_idxr/r0r!r!r"r#As$    �zOutOfOrderTableProxy.__init__rzcCs |j��Sr)r�r)r&r!r!r"r)Wr�zOutOfOrderTableProxy.unwrapcCs|jjSr)r�r1r&r!r!r"r1ZszOutOfOrderTableProxy.valuer,rrrcCs||jvr t|��|j|Sr)r�r r�r!r!r"r�^s  z OutOfOrderTableProxy.__getitem__r1csJddlm�d �fdd� �||jvr\|j|}t|�dkr/|j|��}|�|�t|�dks|j|d |}�|�rR�|�sR|j|d |=|j|=|||<dS||j|d |<n5|jr��|�s�|jD]}t�fd d �|��D��r{|||<nqf||jd |<n ||jd |<n||j|<||j |<|dur�t � |||�dSdS) NrHr�itrrrcst�|�ttf�Sr)r+rr �r�rr!r"�_is_table_or_aotgsz:OutOfOrderTableProxy.__setitem__.<locals>._is_table_or_aotrc3s�|] \}}�|� VqdSrr!r�)r�r!r"r�|s�z3OutOfOrderTableProxy.__setitem__.<locals>.<genexpr>�r�rrr) r*rr�r]r�rn� _remove_tabler�r�r�rirj)r r,r1r�rA� old_valuer!)r�rr"rjds<      � ��  �z OutOfOrderTableProxy.__setitem__rArcCsD|j�|�t|jj�D]\}}|d|ur|j�|�dSq dS)z&Remove table from the parent containerrHN)r�rmrIr�rrq)r rArerr!r!r"r��s   ��z"OutOfOrderTableProxy._remove_tablecCs~||jvr t|��t|j|�D]}|j|}||=|s(t|j�dkr(|�|�q|j|=|j|=|dur=t�||�dSdS)NrH) r�r �reversedr�r]r�r�riro)r r,rLrAr!r!r"ro�s   ��z OutOfOrderTableProxy.__delitem__r�cCr�rr�r&r!r!r"r��r�zOutOfOrderTableProxy.__iter__rEcCr�rr�r&r!r!r"r��r�zOutOfOrderTableProxy.__len__r�cr�r�r�r�r�r!r"r��r�zOutOfOrderTableProxy.setdefault)r�rr�r�rrr�)r,rrrrr�)rArrrr�r�r�r�)r�r�r�� staticmethodrRr#r)r�r1r�rjr�ror�r�r�r�r!r!r�r"rQ2s      &   rQr�rrrcCs>t|t�o t|j��t�pt|t�ot|�dkot|dt�S)zqReturns ``True`` if the given item ``it`` is a ``Table`` or ``AoT`` object ending with a ``Whitespace``. rrG)r+rr1rVrr r]r�r!r!r"rW�s�"�rWr�)!� __future__rr`�typingrr�tomlkit._compatrZtomlkit._typesr�tomlkit._utilsr�tomlkit.exceptionsrr r � tomlkit.itemsr r r rrrrrrrrU�objectZ_NOT_SETrrQrWr!r!r!r"�<module>s<                   z
Memory