o �J�h8� @s�ddlZddlZddlmZmZddlZddlZddlZddlm Z m Z m Z m Z m Z ddlZed�Ze de d�ZGdd�d�Zed d �d ed ed efdd��Zed d �d ed ed efdd��Zed d �d ed ed efdd��ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�de�Zded efdd�ZGdd �d �Z !d5de ee efd"ed efd#d$�Z d%e d e!fd&d'�Z" (d6d!d)d*�d+e ed,ed-ed.ed ef d/d0�Z#d1ed2ed efd3d4�Z$dS)7�N)� lru_cache�wraps)�Callable�Union�Iterable�TypeVar�cast�\�C)�boundc@sZeZdZUdZgZeeed<gZeeed<dZ e dd��Z e dd��Z e d d��Z d S) �__config_flagsz=Internal class for defining compatibility and debugging flags� _all_names� _fixed_names� configurationc Csv||jvr#tj|j�d|�d|j�dtt||�����d�dd�dS||jvr0t |||�dSt d|j�d|����)N�.� z is z and cannot be overridden�)� stacklevelzno such ) r�warnings�warn�__name__� _type_desc�str�getattr�upperr �setattr� ValueError)�cls�dname�value�r �LC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\pyparsing\util.py�_sets ,� z__config_flags._setcC� |�|d�S)NT�r"�r�namer r r!�<lambda>$� z__config_flags.<lambda>cCr#)NFr$r%r r r!r'%r(N)r� __module__� __qualname__�__doc__r �listr�__annotations__rr� classmethodr"�enable�disabler r r r!r s   r �)�maxsize�loc�strg�returncCsF|}d|krt|�krnn ||ddkrdS||�dd|�S)a� Returns current column within a string, counting newlines as line separators. The first column is number 1. Note: the default parsing behavior is to expand tabs in the input string before starting the parsing process. See :class:`ParserElement.parse_string` for more information on parsing strings containing ``<TAB>`` s, and suggested methods to maintain a consistent view of the parsed string, the parse location, and line and column positions within the parsed string. r�� )�len�rfind)r3r4�sr r r!�col(s Br;cCs|�dd|�dS)a�Returns current line number within a string, counting newlines as line separators. The first line is number 1. Note - the default parsing behavior is to expand tabs in the input string before starting the parsing process. See :class:`ParserElement.parse_string` for more information on parsing strings containing ``<TAB>`` s, and suggested methods to maintain a consistent view of the parsed string, the parse location, and line and column positions within the parsed string. r7rr6)�count)r3r4r r r!�lineno9s r=cCsB|�dd|�}|�d|�}|dkr||d|�S||dd�S)zh Returns the line of text containing loc within a string, counting newlines as line separators. r7rr6N)r9�find)r3r4�last_cr�next_crr r r!�lineGs (rAc@�eZdZdd�ZdS)�_UnboundedCachecspi��j�t�|_���fdd�}�fdd�}�fdd�}d|_t�||�|_t�||�|_t�||�|_dS)Nc� �|��S�Nr ��_�key�� cache_get� not_in_cacher r!�getW� z%_UnboundedCache.__init__.<locals>.getcs |�|<dSrEr �rGrHr��cacher r!�set_Z� z&_UnboundedCache.__init__.<locals>.set_c� ���dSrE��clear�rGrOr r!rU]rRz'_UnboundedCache.__init__.<locals>.clear)rL�objectrK�size�types� MethodType�setrU)�selfrLrQrUr )rPrJrKr!�__init__Rs   z_UnboundedCache.__init__N�rr)r*r]r r r r!rCQ� rCc@rB)� _FifoCachecszi��|_t�|_��j��j���fdd�}���fdd�}�fdd�}t�||�|_t�||�|_t�||�|_dS)NcrDrEr rFrIr r!rLnrMz _FifoCache.__init__.<locals>.getcs8|�|<t���kr�tt����t���ks dSdSrE)r8�next�iterrN)rP� cache_poprXr r!rQqs �z!_FifoCache.__init__.<locals>.set_crSrErTrVrOr r!rUwrRz"_FifoCache.__init__.<locals>.clear) rXrWrKrL�poprYrZr[rU)r\rXrLrQrUr )rPrJrcrKrXr!r]gs  z_FifoCache.__init__Nr^r r r r!r`fr_r`c@s8eZdZdZdd�Zdd�Zdd�Zdd �Zd d �Zd S) �LRUMemoz� A memoizing mapping that retains `capacity` deleted items The memo tracks retained items by their access order; once `capacity` items are retained, the least recently used item is discarded. cCs||_i|_i|_dSrE)� _capacity�_active�_memory)r\�capacityr r r!r]�s zLRUMemo.__init__cCs<z|j|WSty|j�|�|j|<|j|YSwrE)rg�KeyErrorrhrd�r\rHr r r!� __getitem__�s   �zLRUMemo.__getitem__cCs|j�|d�||j|<dSrE)rhrdrg)r\rHrr r r!� __setitem__�szLRUMemo.__setitem__cCsdz|j�|�}Wn tyYdSwt|j�d|jd �}|D]}|j�|�q"||j|<dS�Nr6)rgrdrjr,rhrf)r\rHrZ oldest_keysZ key_to_deleter r r!� __delitem__�s �zLRUMemo.__delitem__cCs|j��|j��dSrE)rgrUrh�r\r r r!rU�s z LRUMemo.clearN) rr)r*r+r]rlrmrorUr r r r!res rec@seZdZdZdd�ZdS)� UnboundedMemoz< A memoizing mapping that retains all deleted items cCsdSrEr rkr r r!ro��zUnboundedMemo.__delitem__N)rr)r*r+ror r r r!rq�s rqr:cCs:dD] }|�|t|�}q|�dd�}|�dd�}t|�S)Nz\^-[]r7z\n� z\t)�replace�_bslashr)r:�cr r r!�_escape_regex_range_chars�s   rwc@s,eZdZdZd dd�Zdedefdd�ZdS) �_GroupConsecutiveaQ Used as a callable `key` for itertools.groupby to group characters that are consecutive: itertools.groupby("abcdejkmpqrs", key=IsConsecutive()) yields: (0, iter(['a', 'b', 'c', 'd', 'e'])) (1, iter(['j', 'k'])) (2, iter(['m'])) (3, iter(['p', 'q', 'r', 's'])) r5NcCsd|_t��|_d|_dS)Nr�����)�prev� itertoolsr<�counterrrpr r r!r]�s  z_GroupConsecutive.__init__�charcCs4t|�}||j|_}||dkrt|j�|_|jSrn)�ordrzrar|r)r\r}�c_intrzr r r!�__call__�s   z_GroupConsecutive.__call__)r5N)rr)r*r+r]r�intr�r r r r!rx�s rxT� re_escapec s$dtdtfdd��dtdtfdd�}|s|�g}tt|��}t|�dkr�tj|t�d�D]V\}}t|�}}t� t �� |�^}}Wd �n1sKwY||kr\|� �|��q,|t t |�d �krt|� �|���|����q,|� �|��d �|����q,n �fd d �|D�}d�|�S)a Take a string or list of single-character strings, and return a string of the consecutive characters in that string collapsed into groups, as might be used in a regular expression '[a-z]' character set: 'a' -> 'a' -> '[a]' 'bc' -> 'bc' -> '[bc]' 'defgh' -> 'd-h' -> '[d-h]' 'fdgeh' -> 'd-h' -> '[d-h]' 'jklnpqrtu' -> 'j-lnp-rtu' -> '[j-lnp-rtu]' Duplicates get collapsed out: 'aaa' -> 'a' -> '[a]' 'bcbccb' -> 'bc' -> '[bc]' 'defghhgf' -> 'd-h' -> '[d-h]' 'jklnpqrjjjtu' -> 'j-lnp-rtu' -> '[j-lnp-rtu]' Spaces are preserved: 'ab c' -> ' a-c' -> '[ a-c]' Characters that are significant when defining regex ranges get escaped: 'acde[]-' -> r'\-\[\]ac-e' -> r'[\-\[\]ac-e]' rvr5cSs|dvrd|S|S)Nz\^-][�\r �rvr r r!�escape_re_range_char�sz8_collapse_string_to_ranges.<locals>.escape_re_range_charcSs|SrEr r�r r r!�no_escape_re_range_char�rrz;_collapse_string_to_ranges.<locals>.no_escape_re_range_char��rHNr6�-csg|]}�|��qSr r )�.0rv�r�r r!� <listcomp>!sz._collapse_string_to_ranges.<locals>.<listcomp>�)r�sortedr[r8r{�groupbyrxra� contextlib�suppressr�append�chrr~�join) r:r�r��retZs_charsrG�chars�first�lastr r�r!�_collapse_string_to_ranges�s,      ��� r��llcCsNg}g|�}|r%|�d�}t|t�rt|t�s||dd�<n|�|�|s|S)Nr)rd� isinstancerrr�)r�r��to_visit�ir r r!�_flatten&s  �r�r�r6��non_capturing_groups�_level� word_list� max_levelr�r�c Cszdttfdd�}|dkr|std��d|vrtd��n|s dSti�|��}|dkrQtd d �|D��rCd �td d �|D�tdd��Sdd�dd �|D���d�Sg}d}|rYdnd}|t|��D]�\}} |�|�d }t � |�}d} d| vr~d} | � d�t| �dk�rt dd �| D��r�|�|�dd�dd �| D���d| ���qa||kr�t t| �|||dd�} |�|�d|�| �d| ���qat dd �| D��r�|�|�dd�dd �| D���d| ���qa| jtdd�|�|�d|�d �dd �| D���d| ���qa| �r2t � | d�} t| �dk�r&| �r&|�|�d|�| �d| ���qa|�|�| �| ���qa|�|�qad�|�S)z� Create a regular expression string from a list of words, collapsing by common prefixes and optional suffixes. Calls itself recursively to build nested sublists for each group of suffixes that have a shared prefix. �namelistcssp�t|�dkr&tj|dd�d�D]\}}|tdd�|D�tdd�fVqdS|d d |d dd�gfVdS) Nr6cSs |dd�Srnr )r:r r r!r'Cr(zOmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<lambda>r�cSsg|]}|dd��qS�r6Nr �r�r:r r r!r�DszQmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<listcomp>T�rH�reverser)r8r{r�r�)r��prefix�suffixesr r r!�!get_suffixes_from_common_prefixesAs �  �$z=make_compressed_re.<locals>.get_suffixes_from_common_prefixesr6z&no words given to make_compressed_re()r�z%word list cannot contain empty stringrcss�|] }t|�dkVqdSr��r8�r��wdr r r!� <genexpr>W��z%make_compressed_re.<locals>.<genexpr>�|cSsg|]}t�|��qSr ��re�escaper�r r r!r�Ysz&make_compressed_re.<locals>.<listcomp>Tr��[cs��|]}t|�VqdSrE�rwr�r r r!r�\���]z?:�?cs��|] }t|�dkVqdSr�r�r�r r r!r�nr�csr�rEr�r�r r r!r�pr�r��(�)csr�r�r�r�r r r!r�|r�csr�rEr�r�r r r!r�~r�css�|]}t�|�VqdSrEr�r�r r r!r��s�)r,rr�fromkeys�anyr�r�r8r�r�r��remove�all�make_compressed_re�sort) r�r�r�r�r�r��sepZncgroup�initialr��trailingZ suffix_re�suffixr r r!r�2sn��    "�� "�&�   r�� compat_name�fncs�t�d���dgtt���j�dd�kr t���fdd��}n t���fdd��}d�j�d�|_||_�j|_t �t j �rD�j |_ nt �t �rTt�d �rT�jj |_ nd|_ �j|_tt|�S) N�__func__r\r6cs�|g|�Ri|��SrEr )r\�args�kwargs�r�r r!�_inner�sz replaced_by_pep8.<locals>._innercs�|i|��SrEr )r�r�r�r r!r��szDeprecated - use :class:`�`r])rr,�inspect� signature� parametersrrr+r-r�rY� FunctionType�__kwdefaults__�type�hasattrr]r*rr )r�r�r�r r�r!�replaced_by_pep8�s     r�)T)r�)%r�r�� functoolsrrr�r{rY�typingrrrrrrr�rur r r�rr;r=rArCr`re�dictrqrwrx�boolr�r,r�r�r�r r r r!�<module>s`   (  ��� �T������ �_
Memory