o
    Ëý°j•  ã                   @   s>  d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	 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S )%é    N)Ú	lru_cache)ÚListÚUnionÚIterableé\   c                   @   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   sb   || j v rt d | j|| jtt| |ƒƒ ¡ ¡¡ d S || j	v r(t
| ||ƒ d S td | j|¡ƒ‚)Nz'{}.{} {} is {} and cannot be overriddenzno such {} {!r})r	   ÚwarningsÚwarnÚformatÚ__name__Ú
_type_descÚstrÚgetattrÚupperr   ÚsetattrÚ
ValueError)ÚclsÚdnameÚvalue© r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_vendor/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.parseString` 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)r*   r+   Úsr   r   r   Úcol(   s   Br2   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.parseString`
    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.   r   r-   )Úcount)r*   r+   r   r   r   Úlineno9   s   r4   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.
    r.   r   r-   N)r0   Úfind)r*   r+   Úlast_crÚnext_crr   r   r   ÚlineG   s   (r8   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 r<   r   ©r>   r?   r   ©Úcacher   r   Úset_Z   ó   z&_UnboundedCache.__init__.<locals>.set_c                    ó   ˆ   ¡  d S r<   ©Úclear©r>   rF   r   r   rL   ]   rI   z'_UnboundedCache.__init__.<locals>.clear)rC   ÚobjectrB   ÚsizeÚtypesÚ
MethodTypeÚsetrL   )ÚselfrC   rH   rL   r   )rG   rA   rB   r   Ú__init__R   s   z_UnboundedCache.__init__N©r   r!   r"   rT   r   r   r   r   r:   Q   ó    r:   c                   @   r9   )Ú
_FifoCachec                    sv   t ƒ  | _‰t ¡ ‰ ˆ j‰‡‡fdd„}‡ ‡fdd„}‡ fdd„}ˆ| _t || ¡| _t || ¡| _t || ¡| _	d S )Nc                    r;   r<   r   r=   r@   r   r   rC   l   rD   z _FifoCache.__init__.<locals>.getc                    s4   |ˆ |< t ˆ ƒˆkrˆ jdd� t ˆ ƒˆks
d S d S ©NF)Úlast)r/   ÚpopitemrE   )rG   rO   r   r   rH   o   s   ÿz!_FifoCache.__init__.<locals>.set_c                    rJ   r<   rK   rM   rF   r   r   rL   t   rI   z"_FifoCache.__init__.<locals>.clear)
rN   rB   ÚcollectionsÚOrderedDictrC   rO   rP   rQ   rR   rL   )rS   rO   rC   rH   rL   r   )rG   rA   rB   rO   r   rT   g   s   z_FifoCache.__init__NrU   r   r   r   r   rW   f   rV   rW   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 r<   )Ú	_capacityÚ_activer[   r\   Ú_memory)rS   Úcapacityr   r   r   rT   …   s   zLRUMemo.__init__c                 C   s6   z| j | W S  ty   | j |¡ | j|  Y S w r<   )r_   ÚKeyErrorr`   Úmove_to_end©rS   r?   r   r   r   Ú__getitem__Š   s   þzLRUMemo.__getitem__c                 C   s   | j  |d ¡ || j|< d S r<   )r`   Úpopr_   ©rS   r?   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 rX   )r_   rf   rb   r/   r`   r^   rZ   rg   r   r   r   Ú__delitem__•   s   ÿÿzLRUMemo.__delitem__c                 C   s   | j  ¡  | j ¡  d S r<   )r_   rL   r`   )rS   r   r   r   rL   Ÿ   s   
zLRUMemo.clearN)	r   r!   r"   r#   rT   re   rh   ri   rL   r   r   r   r   r]   }   s    
r]   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 r<   r   rd   r   r   r   ri   ©   ó   zUnboundedMemo.__delitem__N)r   r!   r"   r#   ri   r   r   r   r   rj   ¤   s    rj   r1   c                 C   s:   dD ]
}|   |t| ¡} q|   dd¡} |   dd¡} t| ƒS )Nz\^-[]r.   z\nú	z\t)ÚreplaceÚ_bslashr   )r1   Úcr   r   r   Ú_escape_regex_range_chars­   s
   rp   TÚ	re_escapec           	   	      s  ‡fdd„‰dˆ_ t ¡ ˆ_dˆ_dd„ ‰ dd„ }|s|‰ g }d	 tt| ƒƒ¡} t| ƒd
krytj	| ˆd�D ]B\}}t
|ƒ }}tjt t|gƒ|¡dd� ¡ }||kr[| ˆ |ƒ¡ q5t|ƒt|ƒd krgd	nd}| d ˆ |ƒ|ˆ |ƒ¡¡ q5n	‡ fdd„| D ƒ}d	 |¡S )Nc                    s4   t | ƒ}|ˆ jˆ _}|| dkrtˆ jƒˆ _ˆ jS )Nr-   )ÚordÚprevÚnextÚcounterr   )ro   Úc_intrs   )Úis_consecutiver   r   rw   ¹   s
   z2_collapse_string_to_ranges.<locals>.is_consecutiver   éÿÿÿÿc                 S   s   | dv rd|  S | S )Nz\^-][ú\r   ©ro   r   r   r   Úescape_re_range_charÄ   s   z8_collapse_string_to_ranges.<locals>.escape_re_range_charc                 S   s   | S r<   r   rz   r   r   r   Úno_escape_re_range_charÇ   rk   z;_collapse_string_to_ranges.<locals>.no_escape_re_range_charÚ é   )r?   r-   )Úmaxlenú-z{}{}{}c                    s   g | ]}ˆ |ƒ‘qS r   r   )Ú.0ro   )r{   r   r   Ú
<listcomp>ß   s    z._collapse_string_to_ranges.<locals>.<listcomp>)rs   Ú	itertoolsr3   ru   r   ÚjoinÚsortedrR   r/   Úgroupbyrt   r[   ÚdequeÚchainÚiterrf   Úappendrr   r   )	r1   rq   r|   Úretr>   ÚcharsÚfirstrY   Úsepr   )r{   rw   r   Ú_collapse_string_to_ranges¶   s:   
ÿþÿÿ÷
r�   Úllc                 C   s6   g }| D ]}t |tƒr| t|ƒ¡ q| |¡ q|S r<   )Ú
isinstanceÚlistÚextendÚ_flattenrŠ   )r�   r‹   Úir   r   r   r”   ä   s   
r”   )T)r   rP   r[   rƒ   Ú	functoolsr   Útypingr   r   r   Úchrrn   r   Úintr   r2   r4   r8   r:   rW   r]   Údictrj   rp   Úboolr�   r’   r”   r   r   r   r   Ú<module>   s8   	'	
ÿÿÿ
þ.