o
    ûÞh8  ã                   @   s¸  d dl Z d dlZd dlmZmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZ d dlZedƒZede	d�ZG dd„ dƒZed	d
�dededefdd„ƒZed	d
�dededefdd„ƒZed	d
�dededefdd„ƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ deƒZdedefdd„ZG dd „ d ƒZ	!d5de
eee f d"edefd#d$„Z d%ede!fd&d'„Z"	(d6d!d)d*œd+ee d,ed-ed.edef
d/d0„Z#d1ed2edefd3d4„Z$dS )7é    N)Ú	lru_cacheÚwraps)ÚCallableÚUnionÚIterableÚTypeVarÚcasté\   ÚC)Úboundc                   @   sZ   e Zd ZU dZg Zee ed< g Zee ed< dZ	e
dd„ ƒZe
dd„ ƒZe
d	d„ ƒZd
S )Ú__config_flagsz=Internal class for defining compatibility and debugging flagsÚ
_all_namesÚ_fixed_namesÚconfigurationc                 C   sv   || j v r#tj| j› d|› d| j› dtt| |ƒƒ ¡ › d�dd� d S || jv r0t	| ||ƒ d S t
d| j› d|›�ƒ‚)NÚ.ú z is z and cannot be overriddené   )Ú
stacklevelzno such )r   ÚwarningsÚwarnÚ__name__Ú
_type_descÚstrÚgetattrÚupperr   ÚsetattrÚ
ValueError)ÚclsÚdnameÚvalue© r    úN/var/www/html/premium_crap/venv/lib/python3.10/site-packages/pyparsing/util.pyÚ_set   s   
,ý
z__config_flags._setc                 C   ó   |   |d¡S )NT©r"   ©r   Únamer    r    r!   Ú<lambda>$   ó    z__config_flags.<lambda>c                 C   r#   )NFr$   r%   r    r    r!   r'   %   r(   N)r   Ú
__module__Ú__qualname__Ú__doc__r   Úlistr   Ú__annotations__r   r   Úclassmethodr"   ÚenableÚdisabler    r    r    r!   r      s   
 
r   é€   )ÚmaxsizeÚlocÚstrgÚreturnc                 C   sF   |}d|   k rt |ƒk rn n
|| d  dkrdS | | dd| ¡ 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)r3   r4   Úsr    r    r!   Úcol(   s   Br;   c                 C   s   |  dd| ¡d S )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.
    r7   r   r6   )Úcount)r3   r4   r    r    r!   Úlineno9   s   r=   c                 C   sB   |  dd| ¡}| d| ¡}|dkr||d |… S ||d d… S )zh
    Returns the line of text containing loc within a string, counting newlines as line separators.
    r7   r   r6   N)r9   Úfind)r3   r4   Úlast_crÚnext_crr    r    r!   ÚlineG   s   (rA   c                   @   ó   e Zd Zdd„ ZdS )Ú_UnboundedCachec                    sp   i ‰ ˆ j ‰tƒ  | _‰‡‡fdd„}‡ fdd„}‡ fdd„}d | _t || ¡| _ t || ¡| _t || ¡| _d S )Nc                    ó
   ˆ |ˆƒS ©Nr    ©Ú_Úkey©Ú	cache_getÚnot_in_cacher    r!   ÚgetW   ó   
z%_UnboundedCache.__init__.<locals>.getc                    s   |ˆ |< d S rE   r    ©rG   rH   r   ©Úcacher    r!   Úset_Z   ó   z&_UnboundedCache.__init__.<locals>.set_c                    ó   ˆ   ¡  d S rE   ©Úclear©rG   rO   r    r!   rU   ]   rR   z'_UnboundedCache.__init__.<locals>.clear)rL   ÚobjectrK   ÚsizeÚtypesÚ
MethodTypeÚsetrU   )ÚselfrL   rQ   rU   r    )rP   rJ   rK   r!   Ú__init__R   s   z_UnboundedCache.__init__N©r   r)   r*   r]   r    r    r    r!   rC   Q   ó    rC   c                   @   rB   )Ú
_FifoCachec                    sz   i ‰ ˆ| _ tƒ  | _‰ˆ j‰ˆ j‰‡‡fdd„}‡ ‡‡fdd„}‡ fdd„}t || ¡| _t || ¡| _t || ¡| _d S )Nc                    rD   rE   r    rF   rI   r    r!   rL   n   rM   z _FifoCache.__init__.<locals>.getc                    s8   |ˆ |< t ˆ ƒˆkrˆttˆ ƒƒƒ t ˆ ƒˆks
d S d S rE   )r8   ÚnextÚiterrN   )rP   Ú	cache_poprX   r    r!   rQ   q   s   þz!_FifoCache.__init__.<locals>.set_c                    rS   rE   rT   rV   rO   r    r!   rU   w   rR   z"_FifoCache.__init__.<locals>.clear)	rX   rW   rK   rL   ÚpoprY   rZ   r[   rU   )r\   rX   rL   rQ   rU   r    )rP   rJ   rc   rK   rX   r!   r]   g   s   z_FifoCache.__init__Nr^   r    r    r    r!   r`   f   r_   r`   c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zd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.
    c                 C   s   || _ i | _i | _d S rE   )Ú	_capacityÚ_activeÚ_memory)r\   Úcapacityr    r    r!   r]   ‡   s   
zLRUMemo.__init__c                 C   s<   z| j | W S  ty   | j |¡| j|< | j|  Y S w rE   )rg   ÚKeyErrorrh   rd   ©r\   rH   r    r    r!   Ú__getitem__Œ   s   þzLRUMemo.__getitem__c                 C   s   | j  |d ¡ || j|< d S rE   )rh   rd   rg   )r\   rH   r   r    r    r!   Ú__setitem__“   s   zLRUMemo.__setitem__c                 C   sd   z| j  |¡}W n
 ty   Y d S w t| jƒd | jd  … }|D ]}| j |¡ q"|| j|< d S ©Nr6   )rg   rd   rj   r,   rh   rf   )r\   rH   r   Úoldest_keysÚkey_to_deleter    r    r!   Ú__delitem__—   s   ÿzLRUMemo.__delitem__c                 C   s   | j  ¡  | j ¡  d S rE   )rg   rU   rh   ©r\   r    r    r!   rU   ¢   s   
zLRUMemo.clearN)	r   r)   r*   r+   r]   rl   rm   rq   rU   r    r    r    r!   re      s    re   c                   @   s   e Zd ZdZdd„ ZdS )ÚUnboundedMemoz<
    A memoizing mapping that retains all deleted items
    c                 C   s   d S rE   r    rk   r    r    r!   rq   ¬   ó   zUnboundedMemo.__delitem__N)r   r)   r*   r+   rq   r    r    r    r!   rs   §   s    rs   r:   c                 C   s:   dD ]
}|   |t| ¡} q|   dd¡} |   dd¡} t| ƒS )Nz\^-[]r7   z\nú	z\t)ÚreplaceÚ_bslashr   )r:   Úcr    r    r!   Ú_escape_regex_range_chars°   s
   ry   c                   @   s,   e Zd ZdZd	dd„Zdedefdd„ZdS )
Ú_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']))
    r5   Nc                 C   s   d| _ t ¡ | _d| _d S )Nr   éÿÿÿÿ)ÚprevÚ	itertoolsr<   Úcounterr   rr   r    r    r!   r]   Å   s   

z_GroupConsecutive.__init__Úcharc                 C   s4   t |ƒ}|| j| _}|| dkrt| jƒ| _| jS rn   )Úordr|   ra   r~   r   )r\   r   Úc_intr|   r    r    r!   Ú__call__Ê   s
   z_GroupConsecutive.__call__)r5   N)r   r)   r*   r+   r]   r   Úintr‚   r    r    r    r!   rz   ¹   s    
rz   TÚ	re_escapec           	   	      s$  dt dt fdd„‰ dt dt fdd„}|s|‰ g }tt| ƒƒ}t|ƒdkr„tj|tƒ d�D ]V\}}t|ƒ }}t 	t
¡� |�^ }}W d	  ƒ n1 sKw   Y  ||kr\| ˆ |ƒ¡ q,|tt|ƒd
 ƒkrt| ˆ |ƒ› ˆ |ƒ› �¡ q,| ˆ |ƒ› dˆ |ƒ› �¡ q,n	‡ fd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]'
    rx   r5   c                 S   s   | dv rd|  S | S )Nz\^-][ú\r    ©rx   r    r    r!   Úescape_re_range_charò   s   z8_collapse_string_to_ranges.<locals>.escape_re_range_charc                 S   s   | S rE   r    r†   r    r    r!   Úno_escape_re_range_charõ   rt   z;_collapse_string_to_ranges.<locals>.no_escape_re_range_charé   ©rH   Nr6   ú-c                    s   g | ]}ˆ |ƒ‘qS r    r    )Ú.0rx   ©r‡   r    r!   Ú
<listcomp>!  s    z._collapse_string_to_ranges.<locals>.<listcomp>Ú )r   Úsortedr[   r8   r}   Úgroupbyrz   ra   Ú
contextlibÚsuppressr   ÚappendÚchrr€   Újoin)	r:   r„   rˆ   ÚretÚs_charsrG   ÚcharsÚfirstÚlastr    r�   r!   Ú_collapse_string_to_rangesÒ   s,    ÿÿì
rœ   Úllc                 C   sN   g }g | ¢}|r%|  d¡}t|tƒrt|tƒs||d d…< n| |¡ |s|S )Nr   )rd   Ú
isinstancer   r   r”   )r�   r—   Úto_visitÚir    r    r!   Ú_flatten&  s   

ûr¡   r‰   r6   ©Únon_capturing_groupsÚ_levelÚ	word_listÚ	max_levelr£   r¤   c             
   C   sz  dt t fdd„}|dkr| stdƒ‚d| v rtdƒ‚n| s dS t i  | ¡ƒ} |dkrQtd	d
„ | D ƒƒrCd tdd„ | D ƒtdd�¡S dd dd
„ | D ƒ¡› d�S g }d}|rYdnd}|t| ƒƒD ]Ö\}}	| |¡ d}t	 
|¡}d}
d|	v r~d}
|	 d¡ t|	ƒdk�rtdd
„ |	D ƒƒr¤| |› dd dd
„ |	D ƒ¡› d|
› �¡ qa||k rÄtt|	ƒ|||d d�}| |› d|› |› d|
› �¡ qatdd
„ |	D ƒƒrã| |› dd dd
„ |	D ƒ¡› d|
› �¡ qa|	jtdd� | |› d|› d dd
„ |	D ƒ¡› d|
› �¡ qa|	�r2t	 
|	d ¡}t|ƒdk�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.
    Únamelistc                 s   sp   � t | ƒdkr&tj| dd„ d�D ]\}}|tdd„ |D ƒt dd�fV  qd S | d	 d	 | d	 dd … gfV  d S )
Nr6   c                 S   s   | d d… S rn   r    )r:   r    r    r!   r'   C  r(   zOmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<lambda>rŠ   c                 S   s   g | ]}|d d… ‘qS ©r6   Nr    ©rŒ   r:   r    r    r!   rŽ   D  s    zQmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<listcomp>T©rH   Úreverser   )r8   r}   r‘   r�   )r§   ÚprefixÚsuffixesr    r    r!   Ú!get_suffixes_from_common_prefixesA  s   € ÿ$z=make_compressed_re.<locals>.get_suffixes_from_common_prefixesr6   z&no words given to make_compressed_re()r�   z%word list cannot contain empty stringr   c                 s   s   � | ]	}t |ƒd kV  qdS r¨   ©r8   ©rŒ   Úwdr    r    r!   Ú	<genexpr>W  ó   € z%make_compressed_re.<locals>.<genexpr>ú|c                 S   s   g | ]}t  |¡‘qS r    ©ÚreÚescaper°   r    r    r!   rŽ   Y  s    z&make_compressed_re.<locals>.<listcomp>Trª   ú[c                 s   ó   � | ]}t |ƒV  qd S rE   ©ry   r°   r    r    r!   r²   \  ó   € ú]z?:ú?c                 s   ó   � | ]	}t |ƒd kV  qdS r¨   r¯   r©   r    r    r!   r²   n  r³   c                 s   r¹   rE   rº   r©   r    r    r!   r²   p  r»   r¢   ú(ú)c                 s   r¾   r¨   r¯   r©   r    r    r!   r²   |  r³   c                 s   r¹   rE   rº   r©   r    r    r!   r²   ~  r»   c                 s   s   � | ]}t  |¡V  qd S rE   rµ   r©   r    r    r!   r²   ƒ  s   € )r,   r   r   ÚfromkeysÚanyr–   r�   r8   r”   r¶   r·   ÚremoveÚallÚmake_compressed_reÚsort)r¥   r¦   r£   r¤   r®   r—   ÚsepÚncgroupÚinitialr­   ÚtrailingÚ	suffix_reÚsuffixr    r    r!   rÅ   2  sn   ÿÿ


"ÿü "ÿ&ÿ 
rÅ   Úcompat_nameÚfnc                    sÀ   t ˆ dˆ ƒ‰ dgtt ˆ ¡jƒd d… kr tˆ ƒ‡ fdd„ƒ}n
tˆ ƒ‡ fdd„ƒ}dˆ j› d�|_| |_ˆ j|_t	ˆ t
jƒrDˆ j|_nt	ˆ tƒrTtˆ d	ƒrTˆ jj|_nd |_ˆ j|_tt|ƒS )
NÚ__func__r\   r6   c                    s   ˆ | g|¢R i |¤ŽS rE   r    )r\   ÚargsÚkwargs©rÎ   r    r!   Ú_innerœ  s   z replaced_by_pep8.<locals>._innerc                     s   ˆ | i |¤ŽS rE   r    )rÐ   rÑ   rÒ   r    r!   rÓ   ¥  s   zDeprecated - use :class:`ú`r]   )r   r,   ÚinspectÚ	signatureÚ
parametersr   r   r+   r-   rž   rY   ÚFunctionTypeÚ__kwdefaults__ÚtypeÚhasattrr]   r*   r   r
   )rÍ   rÎ   rÓ   r    rÒ   r!   Úreplaced_by_pep8‘  s    

rÜ   )T)r‰   )%r’   r¶   Ú	functoolsr   r   rÕ   r}   rY   Útypingr   r   r   r   r   r   r•   rw   r
   r   rƒ   r   r;   r=   rA   rC   r`   re   Údictrs   ry   rz   Úboolrœ   r,   r¡   rÅ   rÜ   r    r    r    r!   Ú<module>   s`   	(		ÿÿÿ
þTþûÿþüû
ú_