o
    ÒèFhõ   ã                   @   sx  d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZmZmZm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	d*deeee f d edefd!d"„Zd#e de fd$d%„Z!d&ed'edefd(d)„Z"dS )+é    N)Ú	lru_cacheÚwraps)ÚCallableÚListÚ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!   úG/var/www/html/loop/nvenv/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   r   r   Ú__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"   Úlineno8   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"   ÚlineF   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"   ÚgetV   ó   
z%_UnboundedCache.__init__.<locals>.getc                    s   |ˆ |< d S rE   r!   )rG   rH   r    ©Úcacher!   r"   Úset_Y   ó   z&_UnboundedCache.__init__.<locals>.set_c                    s   ˆ   ¡  d S rE   )Úclear©rG   rN   r!   r"   rR   \   rQ   z'_UnboundedCache.__init__.<locals>.clear)rL   ÚobjectrK   ÚsizeÚtypesÚ
MethodTypeÚsetrR   )ÚselfrL   rP   rR   r!   )rO   rJ   rK   r"   Ú__init__Q   s   z_UnboundedCache.__init__N©r   r*   r+   rZ   r!   r!   r!   r"   rC   P   ó    rC   c                   @   rB   )Ú
_FifoCachec                    sš   t ƒ  | _‰i ‰ t ƒ gˆ ‰ˆ j‰ˆ j‰t tˆƒ¡‰‡‡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                    s*   |ˆ |< t ˆƒ}ˆˆ| d ƒ |ˆ|< d S rE   )Únext)rG   rH   r    Úi)rO   Ú	cache_popÚkeyiterÚkeyringr!   r"   rP   q   s   z!_FifoCache.__init__.<locals>.set_c                    s    ˆ   ¡  tƒ gˆ ˆd d …< d S rE   )rR   rT   rS   )rO   rb   rU   r!   r"   rR   w   s   z"_FifoCache.__init__.<locals>.clear)rT   rK   rL   ÚpopÚ	itertoolsÚcycleÚrangerU   rV   rW   rX   rR   )rY   rU   rL   rP   rR   r!   )rO   rJ   r`   ra   rb   rK   rU   r"   rZ   f   s   z_FifoCache.__init__Nr[   r!   r!   r!   r"   r]   e   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 | _t ¡ | _d S rE   )Ú	_capacityÚ_activeÚcollectionsÚOrderedDictÚ_memory)rY   Úcapacityr!   r!   r"   rZ   ‰   s   zLRUMemo.__init__c                 C   s6   z| j | W S  ty   | j |¡ | j|  Y S w rE   )ri   ÚKeyErrorrl   Úmove_to_end©rY   rH   r!   r!   r"   Ú__getitem__Ž   s   þzLRUMemo.__getitem__c                 C   s   | j  |d ¡ || j|< d S rE   )rl   rc   ri   ©rY   rH   r    r!   r!   r"   Ú__setitem__•   s   zLRUMemo.__setitem__c                 C   sb   z| j  |¡}W n
 ty   Y d S w t| jƒ| jkr*| jjdd� t| jƒ| jks|| j|< d S )NF)Úlast)ri   rc   rn   r8   rl   rh   Úpopitemrr   r!   r!   r"   Ú__delitem__™   s   ÿÿzLRUMemo.__delitem__c                 C   s   | j  ¡  | j ¡  d S rE   )ri   rR   rl   )rY   r!   r!   r"   rR   £   s   
zLRUMemo.clearN)	r   r*   r+   r,   rZ   rq   rs   rv   rR   r!   r!   r!   r"   rg   �   s    
rg   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!   rp   r!   r!   r"   rv   ­   ó   zUnboundedMemo.__delitem__N)r   r*   r+   r,   rv   r!   r!   r!   r"   rw   ¨   s    rw   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
   r}   TÚ	re_escapec           	         s  ‡fdd„‰dˆ_ t ¡ ˆ_dˆ_dd„ ‰ dd„ }|s|‰ g }d	 tt| ƒƒ¡} t| ƒd
krztj	| ˆd�D ]C\}}t
|ƒ }}tjt t|gƒ|¡dd� ¡ }||kr[| ˆ |ƒ¡ q5t|ƒt|ƒd krgd	nd}| ˆ |ƒ› |› ˆ |ƒ› �¡ q5n	‡ fdd„| D ƒ}d	 |¡S )Nc                    s4   t | ƒ}|ˆ jˆ _}|| dkrtˆ jƒˆ _ˆ jS )Nr6   )ÚordÚprevr^   Úcounterr    )r|   Úc_intr€   )Úis_consecutiver!   r"   rƒ   ½   s
   z2_collapse_string_to_ranges.<locals>.is_consecutiver   éÿÿÿÿc                 S   s   | dv rd|  S | S )Nz\^-][ú\r!   ©r|   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Ë   rx   z;_collapse_string_to_ranges.<locals>.no_escape_re_range_charÚ r   )rH   r6   )Úmaxlenú-c                    s   g | ]}ˆ |ƒ‘qS r!   r!   )Ú.0r|   )r‡   r!   r"   Ú
<listcomp>á   s    z._collapse_string_to_ranges.<locals>.<listcomp>)r€   rd   r<   r�   r    ÚjoinÚsortedrX   r8   Úgroupbyr^   rj   ÚdequeÚchainÚiterrc   Úappendr   )	r:   r~   rˆ   ÚretrG   ÚcharsÚfirstrt   Úsepr!   )r‡   rƒ   r"   Ú_collapse_string_to_rangesº   s6   
ÿþÿ÷
r™   Úllc                 C   s6   g }| D ]}t |tƒr| t|ƒ¡ q| |¡ q|S rE   )Ú
isinstanceÚlistÚextendÚ_flattenr”   )rš   r•   r_   r!   r!   r"   rž   æ   s   
rž   Úcompat_nameÚfnc                    sº   t ˆ dˆ ƒ‰ dtt ˆ ¡jƒd krtˆ ƒ‡ fdd„ƒ}n
tˆ ƒ‡ fdd„ƒ}dˆ j› d�|_| |_ˆ j|_t	ˆ t
jƒrAˆ j|_nt	ˆ tƒrQtˆ d	ƒrQˆ jj|_nd |_ˆ j|_tt|ƒS )
NÚ__func__rY   r   c                    s   ˆ | g|¢R i |¤ŽS rE   r!   )rY   Ú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:`ú`rZ   )r   rœ   ÚinspectÚ	signatureÚ
parametersr   r   r,   r-   r›   rV   ÚFunctionTypeÚ__kwdefaults__ÚtypeÚhasattrrZ   r+   r	   r   )rŸ   r    r¥   r!   r¤   r"   Úreplaced_by_pep8ð   s    

r®   )T)#r§   r   rV   rj   rd   Ú	functoolsr   r   Útypingr   r   r   r   r   r	   Úchrr{   r   r   Úintr   r;   r=   rA   rC   r]   rg   Údictrw   r}   Úboolr™   rœ   rž   r®   r!   r!   r!   r"   Ú<module>   s>    	'	
ÿÿÿ
þ,
