U
    „}agÞ!  ã                   @   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
�eeedœdd„ƒZed	d
�eeedœdd„ƒZed	d
�eeedœdd„ƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ deƒZeedœdd„Zd*eeee f eedœdd „Ze e d!œd"d#„Z!eeed$œd%d&„Z"ee	e	gef d'œ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   sx   || j krFtj| j› d|› d| j› dtt| |ƒƒ ¡ › d�dd� d S || jkr^t	| ||ƒ nt
d| j› d|›�ƒ‚d S )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   úR/var/www/html/publicvenv/lib/python3.8/site-packages/pip/_vendor/pyparsing/util.pyÚ_set   s    
,ý
z__config_flags._setc                 C   s   |   |d¡S )NT©r!   ©r   Únamer   r   r    Ú<lambda>#   ó    z__config_flags.<lambda>c                 C   s   |   |d¡S )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 r4n n|| d  dkr4d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)r0   r1   Úsr   r   r    Úcol'   s    r8   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.
    r4   r   r3   )Úcount)r0   r1   r   r   r    Úlineno8   s    r:   c                 C   sB   |  dd| ¡}| d| ¡}|dkr2||d |… S ||d d… S )zh
    Returns the line of text containing loc within a string, counting newlines as line separators.
    r4   r   r3   N)r6   Úfind)r0   r1   Zlast_crZnext_crr   r   r    ÚlineF   s    r<   c                   @   s   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
   ˆ |ˆƒS ©Nr   ©Ú_Úkey©Ú	cache_getÚnot_in_cacher   r    ÚgetV   s    z%_UnboundedCache.__init__.<locals>.getc                    s   |ˆ |< d S r>   r   )r@   rA   r   ©Úcacher   r    Úset_Y   s    z&_UnboundedCache.__init__.<locals>.set_c                    s   ˆ   ¡  d S r>   )Úclear©r@   rF   r   r    rI   \   s    z'_UnboundedCache.__init__.<locals>.clear)rE   ÚobjectrD   ÚsizeÚtypesÚ
MethodTypeÚsetrI   )ÚselfrE   rH   rI   r   )rG   rC   rD   r    Ú__init__Q   s    z_UnboundedCache.__init__N©r   r'   r(   rQ   r   r   r   r    r=   P   s   r=   c                   @   s   e Zd Zdd„ ZdS )Ú
_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                    s
   ˆ |ˆƒS r>   r   r?   rB   r   r    rE   n   s    z _FifoCache.__init__.<locals>.getc                    s*   |ˆ |< t ˆƒ}ˆˆ| d ƒ |ˆ|< d S r>   )Únext)r@   rA   r   Úi)rG   Ú	cache_popÚkeyiterÚkeyringr   r    rH   q   s    z!_FifoCache.__init__.<locals>.set_c                    s    ˆ   ¡  tƒ gˆ ˆd d …< d S r>   )rI   rK   rJ   )rG   rX   rL   r   r    rI   w   s    z"_FifoCache.__init__.<locals>.clear)rK   rD   rE   ÚpopÚ	itertoolsÚcycleÚrangerL   rM   rN   rO   rI   )rP   rL   rE   rH   rI   r   )rG   rC   rV   rW   rX   rD   rL   r    rQ   f   s    z_FifoCache.__init__NrR   r   r   r   r    rS   e   s   rS   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Ú_activeÚcollectionsÚOrderedDictÚ_memory)rP   Zcapacityr   r   r    rQ   ‰   s    zLRUMemo.__init__c                 C   s<   z| j | W S  tk
r6   | j |¡ | j|  Y S X d S r>   )r_   ÚKeyErrorrb   Úmove_to_end©rP   rA   r   r   r    Ú__getitem__Ž   s
    zLRUMemo.__getitem__c                 C   s   | j  |d ¡ || j|< d S r>   )rb   rY   r_   ©rP   rA   r   r   r   r    Ú__setitem__•   s    zLRUMemo.__setitem__c                 C   sT   z| j  |¡}W n tk
r$   Y n,X t| jƒ| jkrF| jjdd� q&|| j|< d S )NF)Úlast)r_   rY   rc   r5   rb   r^   Úpopitemrg   r   r   r    Ú__delitem__™   s    zLRUMemo.__delitem__c                 C   s   | j  ¡  | j ¡  d S r>   )r_   rI   rb   )rP   r   r   r    rI   £   s    
zLRUMemo.clearN)	r   r'   r(   r)   rQ   rf   rh   rk   rI   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   re   r   r   r    rk   ­   s    zUnboundedMemo.__delitem__N)r   r'   r(   r)   rk   r   r   r   r    rl   ¨   s   rl   )r7   r2   c                 C   s:   dD ]}|   |t| ¡} q|   dd¡} |   dd¡} t| ƒS )Nz\^-[]r4   z\nú	z\t)ÚreplaceÚ_bslashr   )r7   Úcr   r   r    Ú_escape_regex_range_chars±   s
    rq   T)r7   Ú	re_escaper2   c           	         s  ‡fdd„‰dˆ_ t ¡ ˆ_dˆ_dd„ ‰ dd„ }|s:|‰ g }d	 tt| ƒƒ¡} t| ƒd
krôtj	| ˆd�D ]†\}}t
|ƒ }}tjt t|gƒ|¡dd� ¡ }||kr¶| ˆ |ƒ¡ qjt|ƒt|ƒd krÎd	nd}| ˆ |ƒ› |› ˆ |ƒ› �¡ qjn‡ fdd„| D ƒ}d	 |¡S )Nc                    s4   t | ƒ}|ˆ j ˆ _}|| dkr.tˆ jƒˆ _ˆ jS )Nr3   )ÚordÚprevrT   Úcounterr   )rp   Zc_intrt   )Úis_consecutiver   r    rv   ½   s
    z2_collapse_string_to_ranges.<locals>.is_consecutiver   éÿÿÿÿc                 S   s   | dkrd|  S | S )Nz\^-][ú\r   ©rp   r   r   r    Úescape_re_range_charÈ   s    z8_collapse_string_to_ranges.<locals>.escape_re_range_charc                 S   s   | S r>   r   ry   r   r   r    Úno_escape_re_range_charË   s    z;_collapse_string_to_ranges.<locals>.no_escape_re_range_charÚ r   )rA   r3   )Úmaxlenú-c                    s   g | ]}ˆ |ƒ‘qS r   r   )Ú.0rp   )rz   r   r    Ú
<listcomp>á   s     z._collapse_string_to_ranges.<locals>.<listcomp>)rt   rZ   r9   ru   r   ÚjoinÚsortedrO   r5   ÚgroupbyrT   r`   ÚdequeÚchainÚiterrY   Úappendrs   )	r7   rr   r{   Úretr@   ÚcharsÚfirstri   Úsepr   )rz   rv   r    Ú_collapse_string_to_rangesº   s2    
 ÿ
ÿrŒ   )Úllr2   c                 C   s6   g }| D ](}t |tƒr&| t|ƒ¡ q| |¡ q|S r>   )Ú
isinstanceÚlistÚextendÚ_flattenr‡   )r�   rˆ   rU   r   r   r    r‘   æ   s    
r‘   )Úcompat_nameÚfnr2   c                    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ƒr‚ˆ j|_n&t	ˆ tƒr¢tˆ d	ƒr¢ˆ jj|_nd |_ˆ j|_tt|ƒS )
NÚ__func__rP   r   c                    s   ˆ | f|ž|ŽS r>   r   )rP   ÚargsÚkwargs©r“   r   r    Ú_innerû   s    z&_make_synonym_function.<locals>._innerc                     s
   ˆ | |ŽS r>   r   )r•   r–   r—   r   r    r˜     s    zDeprecated - use :class:`ú`rQ   )r   r�   ÚinspectZ	signatureÚ
parametersr   r   r)   r*   rŽ   rM   ÚFunctionTypeÚ__kwdefaults__ÚtypeÚhasattrrQ   r(   r	   r   )r’   r“   r˜   r   r—   r    Ú_make_synonym_functionð   s     
r    )r“   r2   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 r>   )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   rM   r`   rZ   Ú	functoolsr   r   Útypingr   r   r   r   r   r	   Úchrro   r   r   Úintr   r8   r:   r<   r=   rS   r]   Údictrl   rq   ÚboolrŒ   r�   r‘   r    r¢   r   r   r   r    Ú<module>   s:    	'	
 ÿ þ,
(