o
    IBe!                     @   s  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'ede	e	gef 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_namesZ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)clsZdnamevalue r   [/home/www/facesmatcher.com/frenv/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.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)r1   r2   sr   r   r    col'   s   Br9   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.
    r5   r   r4   )count)r1   r2   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.
    r5   r   r4   N)r7   find)r1   r2   Zlast_crZnext_crr   r   r    lineF   s   (r=   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 rA   r   )rC   rD   r   cacher   r    set_Y      z&_UnboundedCache.__init__.<locals>.set_c                    s       d S rA   )clearrC   rJ   r   r    rN   \   rM   z'_UnboundedCache.__init__.<locals>.clear)rH   objectrG   sizetypes
MethodTypesetrN   )selfrH   rL   rN   r   )rK   rF   rG   r    __init__Q   s   z_UnboundedCache.__init__Nr   r(   r)   rV   r   r   r   r    r?   P       r?   c                   @   r>   )
_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                    r@   rA   r   rB   rE   r   r    rH   n   rI   z _FifoCache.__init__.<locals>.getc                    s*   | |< t }| d  ||< d S rA   )next)rC   rD   r   i)rK   	cache_popkeyiterkeyringr   r    rL   q   s   z!_FifoCache.__init__.<locals>.set_c                    s        t g d d < d S rA   )rN   rP   rO   )rK   r^   rQ   r   r    rN   w   s   z"_FifoCache.__init__.<locals>.clear)rP   rG   rH   pop	itertoolscyclerangerQ   rR   rS   rT   rN   )rU   rQ   rH   rL   rN   r   )rK   rF   r\   r]   r^   rG   rQ   r    rV   f   s   z_FifoCache.__init__NrW   r   r   r   r    rY   e   rX   rY   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 rA   )	_capacity_activecollectionsOrderedDict_memory)rU   Zcapacityr   r   r    rV      s   zLRUMemo.__init__c                 C   s6   z| j | W S  ty   | j| | j|  Y S w rA   )re   KeyErrorrh   move_to_endrU   rD   r   r   r    __getitem__   s   zLRUMemo.__getitem__c                 C   s   | j |d  || j|< d S rA   )rh   r_   re   rU   rD   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)re   r_   ri   r6   rh   rd   popitemrm   r   r   r    __delitem__   s   zLRUMemo.__delitem__c                 C   s   | j   | j  d S rA   )re   rN   rh   )rU   r   r   r    rN      s   
zLRUMemo.clearN)	r   r(   r)   r*   rV   rl   rn   rq   rN   r   r   r   r    rc      s    
rc   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 rA   r   rk   r   r   r    rq         zUnboundedMemo.__delitem__N)r   r(   r)   r*   rq   r   r   r   r    rr      s    rr   r8   c                 C   s:   dD ]
}|  |t| } q|  dd} |  dd} t| S )Nz\^-[]r5   z\n	z\t)replace_bslashr   )r8   cr   r   r    _escape_regex_range_chars   s
   rx   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 )Nr4   )ordprevrZ   counterr   )rw   Z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   rw   r   r   r    escape_re_range_char   s   z8_collapse_string_to_ranges.<locals>.escape_re_range_charc                 S   s   | S rA   r   r   r   r   r    no_escape_re_range_char   rs   z;_collapse_string_to_ranges.<locals>.no_escape_re_range_char r   )rD   r4   )maxlen-c                    s   g | ]} |qS r   r   ).0rw   )r   r   r    
<listcomp>   s    z._collapse_string_to_ranges.<locals>.<listcomp>)r{   r`   r:   r|   r   joinsortedrT   r6   groupbyrZ   rf   dequechainiterr_   appendrz   )	r8   ry   r   retrC   charsfirstro   sepr   )r   r}   r    _collapse_string_to_ranges   s6   

r   llc                 C   s6   g }| D ]}t |tr|t| q|| q|S rA   )
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__rU   r   c                    s    | g|R i |S rA   r   )rU   argskwargsr   r   r    _inner   s   z&_make_synonym_function.<locals>._innerc                     s    | i |S rA   r   )r   r   r   r   r    r     s   zDeprecated - use :class:``rV   )r   r   inspectZ	signature
parametersr   r   r*   r+   r   rR   FunctionType__kwdefaults__typehasattrrV   r)   r	   r   )r   r   r   r   r   r    _make_synonym_function   s    

r   c                    s    fddS )zZ
    Decorator for pre-PEP8 compatibility synonyms, to link them to the new function.
    c                    s   t | j S rA   )r   r   )otherr   r   r    r&     r'   z"replaced_by_pep8.<locals>.<lambda>r   r   r   r   r    replaced_by_pep8  s   r   )T)$r   r   rR   rf   r`   	functoolsr   r   typingr   r   r   r   r   r	   chrrv   r   r   intr   r9   r;   r=   r?   rY   rc   dictrr   rx   boolr   r   r   r   r   r   r   r   r    <module>   s@    	'	

,
 (