o �J�h���@sBddlmZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddl m Z ddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&dd lm'Z'dd!lm(Z(dd"lm)Z)dd#lm*Z*dd$lm+Z+dd%lm,Z,dd&lm-Z-dd'lm.Z.dd(lm/Z/dd)lm0Z0dd*l1m2Z2dd+l3m4Z4dd,l5m6Z6d-Z7d.Z8d/Z9d0Z:d1Z;Gd2d3�d3�Z<dS)4�)� annotationsN)�decode)�RFC_3339_LOOSE)�_escaped)� parse_rfc3339)� Container)� EmptyKeyError)�EmptyTableNameError)�InternalParserError)�InvalidCharInStringError)�InvalidControlChar)�InvalidDateError)�InvalidDateTimeError)�InvalidNumberError)�InvalidTimeError)�InvalidUnicodeValueError)� ParseError)�UnexpectedCharError)�UnexpectedEofError)�AoT)�Array)�Bool)�BoolType)�Comment)�Date)�DateTime)�Float)� InlineTable)�Integer)�Item)�Key)�KeyType)�Null)� SingleKey)�String)� StringType)�Table)�Time)�Trivia)� Whitespace)�Source)�TOMLChar)� TOMLDocument� � � ��c@s�eZdZdZddd�Zedd ��Zed d ��Zed d ��Zedd��Z d�dd�Z d�d�dd�Z d�d�dd�Z d�dd �Z d�d!d"�Zd�d#d$�Zefd%d&�Zd�d(d)�Zd�d.d/�Zd�d3d4�Zd�d6d7�Zd�d�d;d<�Zd�d�d@dA�Zd�dBdC�Zd�dDdE�Zd�dFdG�Zd�dHdI�ZdJdK�ZdLdM�Zd�dQdR�Zd�dTdU�Zd�dWdX�Z d�d]d^�Z!d�d`da�Z"d�dbdc�Z#ddde�Z$d�dhdi�Z% d�d�dndo�Z&d�dqdr�Z'd�dwdx�Z(d�dydz�Z)d�d}d~�Z*dS)��Parserz$ Parser for TOML documents. �string� str | bytes�return�NonecCstt|��|_g|_dS�N)r*r�_src� _aot_stack)�selfr3�r;�LC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\tomlkit\parser.py�__init__?s zParser.__init__cC�|jjSr7)r8�state�r:r;r;r<�_stateE�z Parser._statecCr>r7)r8�idxr@r;r;r<�_idxIrBz Parser._idxcCr>r7)r8�currentr@r;r;r<�_currentMrBzParser._currentcCr>r7)r8�markerr@r;r;r<�_markerQrBzParser._marker�strcC� |j��S)z= Extracts the value between marker and index )r8�extractr@r;r;r<rKU� zParser.extractN� exception�type[ParseError] | None�boolcCs|jj|d�S)z� Increments the parser if the end of the input has not been reached. Returns whether or not it was able to advance. �rM)r8�inc)r:rMr;r;r<rQ[sz Parser.inc�n�intcCs|jj||d�S)zm Increments the parser by n characters if the end of the input has not been reached. )rRrM)r8�inc_n)r:rRrMr;r;r<rTbsz Parser.inc_nr�����cCs|jj|||d�S)zD Consume chars until min/max is satisfied is valid. )�chars�min�max)r8�consume)r:rVrWrXr;r;r<rYiszParser.consumecCrJ)zN Returns True if the parser has reached the end of the input. )r8�endr@r;r;r<rZorLz Parser.endcCs|j��dS)zA Sets the marker to the index's current position N)r8�markr@r;r;r<r[usz Parser.markcOs|jj|g|�Ri|��S)zJ Creates a generic "parse error" at the current position. )r8� parse_error)r:rM�args�kwargsr;r;r<r\{szParser.parse_errorr,c Cstd�}|��sM|jdkrn?|��}|sn8|\}}|dur!|��s'|�||�sEz|�||�WntyD}z |�t t |��|�d}~ww|� �|��r|��s�|� �\}}t |t�rf|��rf|�||�}z|�||�Wnty�}z |�t t |��|�d}~ww|��rQ|�d�|S)NT�[F)r,rZrF� _parse_item�is_multi� _merge_ws�append� Exceptionr\rrIr[� _parse_table� isinstancer&�is_aot_element� _parse_aot�parsing)r:�body�item�key�value�er;r;r<�parse�s< ���  ��� z Parser.parserkr� containerrcCsn|��}|sdSt|t�rt|t�sdS|jt|j�t|j�}|jddt|j||j��f|jd<dS)z� Merges the given Item with the last one currently in the given Container if both are whitespace items. Returns True if the items were merged. FrUrT)� last_itemrfr)rD�len�srjr8)r:rkrp�last�startr;r;r<rb�s  �zParser._merge_ws�parentr �childcCs0t|�}t|�}||krdS||dt|��kS)z� Returns whether a key is strictly a child of another key. AoT siblings are not considered children of one another. FN)�tuplerr)r:rvrwZ parent_parts� child_partsr;r;r<� _is_child�s zParser._is_child�tuple[Key | None, Item] | NonecCs|��|j�n} |j}|dkr#|��dt|���fWd�S|dvr;|��s:dt|���fWd�Sn2|dkr\|��}|��\}}}dtt||||��fWd�S|dkri Wd�dSd|_ nq Wd�n1sxwY|� d�S)zw Attempts to parse the next item and returns it, along with its key if the item is value-like. T� N� �#r_) r[rArFrQr)rK�_parse_comment_trailrr(�restore�_parse_key_value)r:r?�c�indent�cws�comment�trailr;r;r<r`�s6�� ���� zParser._parse_itemT� parse_trail�tuple[str, str, str]cCsb|��rdSd}d}|�� |j}|dkrn]|dkr_|��}|��|��|��sV|j��sVt|j�}|tksA|tkrH|t krH|� t |d��|��sMn |��sV|j��r0|��}|��n|dvrh|��n|� t |��|��rsnqd}|r�|j� �r�|��r� |j� �r�|��s�|jdkr�|��|jdkr�|��|j|jks�|j��r�|��}|||fS) z� Returns (comment_ws, comment, trail) If there is no comment, comment_ws and comment will simply be empty. )�r�r�r�Tr|r~�commentsr}� )rZr[rFrKrQZis_nl�ord�CHR_DEL�CTRL_CHAR_LIMIT�CTRL_Ir\r r� is_spacesrDrH�is_ws)r:r�r�� comment_wsr��coder�r;r;r<r�sR �  � �   zParser._parse_comment_trailF� parse_comment�tuple[Key, Item]c Cs|��|j��r|��r |j��r|��s |��}|��}|��|jdk}|j��rI|��rI|jdkr@|r>|�td��d}|j��rI|��s1|sR|�t|j��|j s[|��|_ n |j |��7_ |� �}|r�|� �\}}}|j } | j sz|| _ || _|| _nd|j _||j _||fS)N�=Tr�)r[rFr�rQrK� _parse_keyZ is_kv_sepr\r�sep� _parse_valuer�triviar�r�r�r�) r:r�r�rlZ found_equals�valr�r�r��metar;r;r<r�-s<�   � zParser._parse_key_valuecCsH|��|j��r|��r |j��r|��s |jdvr |��S|��S)zz Parses a Key at the current position; WS before the key must be exhausted first at the callsite. z"')r[rFr�rQ�_parse_quoted_key�_parse_bare_keyr@r;r;r<r�\s� zParser._parse_keycs�|��}|j�t�fdd�tD�d�}|durtd��|�|tjkr%tjntj �}|j � �r6|� t |j j��||��7}|��|j��rS|��rS |j��rS|��sI||��7}tt|�|d|d�}|jdkrs|��|�|���}|S)zJ Parses a key enclosed in either single or double quotes. c3s�|] }|j�kr|VqdSr7)rm)�.0�t�Z quote_styler;r<� <genexpr>qs�z+Parser._parse_quoted_key.<locals>.<genexpr>Nz+Should not have entered _parse_quoted_key()r�)r�r��original�.)rKrF�nextr!� RuntimeError� _parse_string�Basicr%�SLB�SLL�_t� is_multiliner\rrm� as_stringr[r�rQr#rI�concatr�)r:r��key_type�key_strrlr;r�r<r�js*�  �  zParser._parse_quoted_keycCs�|j��s |j��r|��r |j��s|j��r|��s|��}|��}|s,|�t��d|vr:|�td|�d���t |t j d|�}|jdkrR|��|� |� ��}|S)z$ Parses a bare key. � z Invalid key "�"r�r�)rFZis_bare_key_charr�rQrK�stripr\rrr#r!�Barer�r�)r:r�rlr;r;r<r��s0�������  zParser._parse_bare_keyc CsN|��|j}t�}|tjjkr|��S|tjjkr|��S|t j jdkr*|� �S|t j jdkr6|� �S|dkr>|��S|dkrF|��S|dvsQ|�d�dvry|jdvrd|��rd |jdvrd|��sZ|��}|�||�}|durt|S|�t��|tjv�r�|jdvr�|��r� |jdvr�|��s�|��}t�|�}|�r�|�d �r�|�d �r�z"t|�}t|tj�s�J�t|j|j |j!|j"|j#|j$|j%|j&||� WSt'y�|�t(�d�w|�d ��r]zpt|�}t|tj)�s�J�t*|j|j |j!||�}|��|jd v�r|���r |jd v�r|���s|��}|�+�} |t,| �d�|_-| �s(|WSt|| �}t|tj��s7J�t|j|j |j!|j"|j#|j$|j%|j&||| � WSt'�y\|�t.�d�w|�d ��r�zt|�} t| tj/��sqJ�t0| j"| j#| j$| j%| j&||�WSt'�y�|�t1�d�w|�||�}|du�r�|S|�t��|�t2|��) zD Attempts to parse a value at the current position. rr_�{z+-�>�nanz+nanz-nan�infz+infz-inf� #,]}N��z #,]})3r[rFr(r%r�rm�_parse_basic_stringr��_parse_literal_stringr�TRUE� _parse_true�FALSE� _parse_false� _parse_array�_parse_inline_table�_peekrQrK� _parse_numberr\rr3�digitsr�match�grouprrf�datetimer�year�month�day�hour�minute�second� microsecond�tzinfo� ValueErrorr�dater�rstriprrr�r �timer'rr) r:r�r��rawrk�m�dtr�Ztime_rawZ time_partr�r;r;r<r��s�   �   � � � � � � � �    zParser._parse_valuecC� |�tj�Sr7)� _parse_boolrr�r@r;r;r<r�� zParser._parse_truecCr�r7)r�rr�r@r;r;r<r�!r�zParser._parse_false�stylerrcCsX|j�t|�}|D] }|j|ddd�q t|t��Wd�S1s%wYdS)Nr�)rWrX)rArrYrr()r:r�r�r;r;r<r�$s  $�zParser._parse_boolrc Csx|jtd�g}d} |j}|�tjtj�|j||j�}ttj�t|�@}|r2|� t |��q |j dkrM|j dd�\}}}|� t t||||���q |rW|� t |��q |snz |� |���d}Wq tymYnw|r�|j dkr�|jtd�t|dt �r�|djd|d_n|� t d��d}q |j dkr�|��n|�t|j ��z t|t��} W| Sty�YdSw) NrPTr~F)r��,rU�])rQrrDrYr+�SPACES�NLr8�setrcr)rFrrr(r�rrfrs�_sr\rr�) r:�elemsZ prev_valuer[r��newliner�r�r��resr;r;r<r�/sV   �   ��zParser._parse_arrayrcCs(|jtd�td�}d} |j}|�tj�|j||j�}|r'|�t |��|sH|j dkr3|��n[|dus@|durG|j dkrG|� t |j ��n|j dksR|j dkrY|� t |j ��|� d�\}}|�||�|j}|�tj�|j||j�}|r�|�t |��|j dk}|r�|jtd�q t|t��S)NrPT�}Fr�)rQrrrDrYr+r�r8�addr)rFr\rr�rr()r:r�Ztrailing_commar[r�rlr�r;r;r<r�ms>   �    � +zParser._parse_inline_tabler�r�r(� Item | Nonec Csdd}|�d�r|d}|dd�}t|�dkr*|�d�r!|�d�r(|r*|�d�r*dS|�d�r3|r3dSd }d }|�d �rAd }d }n|�d�rKd}d}n |�d�rTd}d}t�d|�d|�d�d|���}d|vrjdS|�d�s|�d�s�|�dd�d�d�r�dSztt|||�|||�WSt y�zt t ||�|||�WYSt y�YYdSww)Nr�)�+�-rr��0)z0.�0o�0x�0bZ0er�)r�r�r�z[0-9]r.r�z[01]�r�z[0-7]�r�z[0-9a-f]�z(?i)(?<=z)_(?=�)�_rn) � startswithrr�re�sub�lower�endswith�splitrrSr�r�float)r:r�r��signr��base�cleanr;r;r<r��sZ   ����     ��  ��zParser._parse_numberr$cC�6|j�|�tj�Wd�S1swYdSr7)rAr�r%r�r@r;r;r<r��� $�zParser._parse_literal_stringcCr�r7)rAr�r%r�r@r;r;r<r��r�zParser._parse_basic_stringcCs�|r'|j��r'd}|j��r||j7}|jtd�q d|vr%|�t|j��dS|jtvr9t|j}|jtd�|S|jdvr\|�|jdk�\}}|durW|�t |�d�|S|�t ��|�t|j��)Nr�rPr|��U�urr�) rFr�rQrr\r r� _peek_unicoderTrrr)r:� multiline�tmpr�rZuer;r;r<�_parse_escaped_char�s(        zParser._parse_escaped_char�delimr%cCs�|j|jkr|�td|����|jtd�|j|jkr7|��r%|j|jkr-t|ddt��S|jtd�|��}|� �d}|� �rz|jdkrM|jtd�n-|j}|j dd��|��r`||j7}Wd�n1sjwY|dkrz|j dtd�d } t |j�}|��r�|s�|tks�|tkr�|tks�|� �r�|s�|tks�|tkr�|tttfvr�|�t|d ��|�s'|j|jk�r'|��}d}|� ��rd}|j|jkr�||j7}|��|j|jks�t|�d kr�||7}q|t|�d kr�t|||t��St|�d k�r|�t|j��||dd �7}||dd �7}t|||t��S|��t|||t��S|���r;|�r;||�|� ��7}d }n|���rO|jdk�rOd}|jtd�n ||j7}|jtd�q})Nz"Invalid character for string type rPr�r|T�r�z r�F�strings��������\)rF�unitr\r rQrr$r(�toggler[r�rArTr�� is_singleliner�r�r��CTRL_J�CTRL_Mr rKrrr �is_basicr)r:rrm�cur�escapedr�r��closer;r;r<r�s� �     �� ����    �    �zParser._parse_string� parent_name� Key | None� Table | None�tuple[Key, Table | AoT]c Cs�|jdkr |�td��|��}|��|��r|�t��d}|jdkr.|��s,|�t��d}z|��}Wn tyA|�t �d�w|��rK|�t��|jdkrW|�t |j��d|_ |}t |�}t dd �|D��ru|�td |���d ���d}|r~t |�} nd } t|�t| �d kr�d}|t| �d�}td�} |��|r�|��|��\} } } t�}t| t|| | | �||r�|djn|j|��dd�}t|�d k�rS|r�ttd�td| | | �|o�|d|jvd|djd�}|}|d}t|d d��D][\}}|�|ttd�t|| | | �|�o|t|�dk|t|�dk|j|t|�dk�r'|��ndd��}|�rF|t|�dk�rF|�|t|g|jdd��n|�||�|}|j} q�n|�rZ|d}|���s�|��}|�rx|\}}|�|| ��sw|�||�nN|jdk�r�|� �\}}|�!||��r�|�"||�\}}|�||�|���s�|� �\}}|�!||��s�n|�"||�\}}|�||�|���r�n |�td��|���r_|j�#�t$|t��r�|}|�r�|j�r�||jdk�r�|�%||�}||fS)z) Parses a table element. r_z/_parse_table() called on non-bracket character.FTNr�r�css&�|]}d|j��vo|��VqdS)r�N)rlr��is_bare)r��partr;r;r<r��s�$z&Parser._parse_table.<locals>.<genexpr>zInvalid table name "r�r;r�r)�name� display_name�is_super_table)rrr�)rrr)r�parsedz7_parse_item() returned None on a non-bracket character.rU)&rFr\r rKrQrZrr�rr rr�rx�anyrr�rrrrr"r&r(rlr9� enumerate�get� raw_appendrrrmr`rb� _peek_tablerzre�_validate_out_of_order_tablerfrh)r:rrvr��is_aotrlZfull_key� name_partsZ missing_tableZparent_name_parts�valuesr�r�r��result�table�i�_namerwrk�_keyr�Zkey_nextZ table_nextr;r;r<revs� �      �  �  �  � �� �  �       � � �  zParser._parse_table�tuple[bool, Key]c Cs�|jddd��9|jdkr|�td��|��d}|jdkr$|��d}z||��fWWd�Sty?|�t�d�w1sCwYdS)z� Peeks ahead non-intrusively by cloning then restoring the initial state of the parser. Returns the name of the table about to be parsed, as well as whether it is part of an AoT. T�Z save_markerr�r_z._peek_table() entered on non-bracket characterFN)rArFr\r rQr�rr )r:r'r;r;r<r%s$ �  �  ��zParser._peek_table�firstr&� name_firstrcCsl|g}|j�|�|��s+|��\}}|r&||kr&|�|�\}}|�|�nn|��r |j��t|dd�S)zg Parses all siblings of the provided table first and bundles them into an AoT. T)r )r9rcrZr%re�popr)r:r1r2�payloadZ is_aot_nextZ name_nextr�r+r;r;r<rh,s    �  zParser._parse_aotcCsl|jdd��&d}t|�D]}|jd|jjvr"||j7}|��q |Wd�S1s/wYdS)zk Peeks ahead n characters. n is the max number of characters that will be peeked. Trr�r�N)rA�rangerFr8�EOFrQ)r:rR�bufr�r;r;r<r�?s  $�z Parser._peek�is_long�tuple[str | None, str | None]c Cs�|jddd��c|jdvr|�td��|��|��|r d}nd}|�|�s,d\}}n3|��}|d��d krH|d � d �rH Wd �dSz t t |d ��}Wn t t fy^d }Ynw||fWd �S1smwYd S)z� Peeks ahead non-intrusively by cloning then restoring the initial state of the parser. Returns the unicode value is it's a valid one else None. Tr0rz,_peek_unicode() entered on non-unicode valuer�r��NNr�dr��01234567Nr�)rArFr\r rQr[rTrKr�r��chrrSr�� OverflowError)r:r8rVrmZ extractedr;r;r<rQs. �  ��$�zParser._peek_unicode)r3r4r5r6)r5rIr7)rMrNr5rO)rRrSrMrNr5rO)rrU)r5rO)r5r6)r5r,)rkrrprr5rO)rvr rwr r5rO)r5r{)T)r�rOr5r�)F)r�rOr5r�)r5r )r5r)r�rr5r)r5r)r5r)r�rIr�r(r5r�)r5r$)rr%r5r$r:)rrrvrr5r)r5r/)r1r&r2r r5r)rRrSr5rI)r8rOr5r9)+�__name__� __module__� __qualname__�__doc__r=�propertyrArDrFrHrKrQrTrYrZr[rr\rorbrzr`rr�r�r�r�r�r�r�r�r�r�r�r�r�rr�rer%rhr�rr;r;r;r<r2:sZ              (  $ = /   |  > 3 /  -s �   r2)=� __future__rr�r�r3�tomlkit._compatr�tomlkit._utilsrrr�tomlkit.containerr�tomlkit.exceptionsrr r r r r rrrrrrr� tomlkit.itemsrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)Ztomlkit.sourcer*Ztomlkit.toml_charr+�tomlkit.toml_documentr,r�rrr�r�r2r;r;r;r<�<module>sh                                           
Memory