HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib64/python3.10/site-packages/pyparsing/__pycache__/util.cpython-310.pyc
o

��h8�@s�ddlZddlZddlmZmZddlZddlZddlZddlm	Z	m
Z
mZmZm
Z
ddlZed�Zede	d�ZGdd�d�Zed	d
�deded
efdd��Zed	d
�deded
efdd��Zed	d
�deded
efdd��ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�de�Zded
efdd�ZGdd �d �Z	!d5de
eeefd"ed
efd#d$�Z d%ed
e!fd&d'�Z"	(d6d!d)d*�d+eed,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��Ze
dd��Ze
d	d��Z
d
S)�__config_flagsz=Internal class for defining compatibility and debugging flags�
_all_names�_fixed_names�
configurationcCsv||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 �D/usr/local/CyberPanel/lib/python3.10/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!�lineno9sr=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\rHr�oldest_keys�
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]rlrmrqrUr r r r!resrec@seZdZdZdd�ZdS)�
UnboundedMemoz<
    A memoizing mapping that retains all deleted items
    cCsdSrEr rkr r r!rq��zUnboundedMemo.__delitem__N)rr)r*r+rqr r r r!rs�srsr:cCs:dD]
}|�|t|�}q|�dd�}|�dd�}t|�S)Nz\^-[]r7z\n�	z\t)�replace�_bslashr)r:�cr r r!�_escape_regex_range_chars�s
ryc@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<�counterrrrr r r!r]�s

z_GroupConsecutive.__init__�charcCs4t|�}||j|_}||dkrt|j�|_|jSrn)�ordr|rar~r)r\r�c_intr|r r r!�__call__�s
z_GroupConsecutive.__call__)r5N)rr)r*r+r]r�intr�r r r r!rz�s
rzT�	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]'
    rxr5cSs|dvrd|S|S)Nz\^-][�\r �rxr 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�rtz;_collapse_string_to_ranges.<locals>.no_escape_re_range_char��rHNr6�-csg|]}�|��qSr r )�.0rx�r�r r!�
<listcomp>!sz._collapse_string_to_ranges.<locals>.<listcomp>�)r�sortedr[r8r}�groupbyrzra�
contextlib�suppressr�append�chrr��join)	r:r�r��ret�s_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�ryr�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��sep�ncgroup�initialr��trailing�	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�rwr
rr�rr;r=rArCr`re�dictrsryrz�boolr�r,r�r�r�r r r r!�<module>s`
	(		���
�T������
�_