a
    7Xh2                     @   s  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
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G dd dZd.e	ee
e f eed d!d"Ze
e d#d$d%Z!d/e
e eeed(d)d*Z"eeed+d,d-Z#dS )0    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   sx   || j v rFtj| j d| d| j dtt| |  ddd d S || jv 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   S/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/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   listr   __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)r1   r2   sr   r   r    col'   s    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r2||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                   @   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   rA   rB   r   cacher   r    set_Y   s    z&_UnboundedCache.__init__.<locals>.set_c                    s       d S r?   clearrA   rH   r   r    rL   \   s    z'_UnboundedCache.__init__.<locals>.clear)rF   objectrE   sizetypes
MethodTypesetrL   )selfrF   rJ   rL   r   )rI   rD   rE   r    __init__Q   s    z_UnboundedCache.__init__Nr   r'   r(   rT   r   r   r   r    r>   P   s   r>   c                   @   s   e Zd Zdd ZdS )
_FifoCachec                    sz   i  | _ t  | _ j jfdd} fdd} fdd}t|| | _t|| | _t|| | _d S )Nc                    s
    |S r?   r   r@   rC   r   r    rF   m   s    z _FifoCache.__init__.<locals>.getc                    s*   | |< t  kr&tt  qd S r?   )r6   nextiterrG   )rI   	cache_poprO   r   r    rJ   p   s    z!_FifoCache.__init__.<locals>.set_c                    s       d S r?   rK   rM   rH   r   r    rL   v   s    z"_FifoCache.__init__.<locals>.clear)	rO   rN   rE   rF   poprP   rQ   rR   rL   )rS   rO   rF   rJ   rL   r   )rI   rD   rY   rE   rO   r    rT   f   s    z_FifoCache.__init__NrU   r   r   r   r    rV   e   s   rV   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 r?   )	_capacity_active_memory)rS   capacityr   r   r    rT      s    zLRUMemo.__init__c                 C   s@   z| j | W S  ty:   | j|| j|< | j|  Y S 0 d S r?   )r]   KeyErrorr^   rZ   rS   rB   r   r   r    __getitem__   s
    zLRUMemo.__getitem__c                 C   s   | j |d  || j|< d S r?   )r^   rZ   r]   )rS   rB   r   r   r   r    __setitem__   s    zLRUMemo.__setitem__c                 C   sb   z| j |}W n ty"   Y n<0 t| jd | jd   }|D ]}| j| qB|| j|< d S Nr4   )r]   rZ   r`   r*   r^   r\   )rS   rB   r   Zoldest_keysZkey_to_deleter   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   rb   rc   re   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   ra   r   r   r    re      s    zUnboundedMemo.__delitem__N)r   r'   r(   r)   re   r   r   r   r    rg      s   rg   )r8   r3   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
    rl   c                   @   s(   e Zd ZdZdd Zeed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']))
    c                 C   s   d| _ t | _d| _d S )Nr   )prev	itertoolsr:   counterr   rf   r   r   r    rT      s    
z_GroupConsecutive.__init__)charr3   c                 C   s4   t |}|| j | _}|| dkr.t| j| _| jS rd   )ordro   rW   rq   r   )rS   rr   c_intro   r   r   r    __call__   s
    z_GroupConsecutive.__call__N)r   r'   r(   r)   rT   r   intru   r   r   r   r    rm      s   
rm   T)r8   	re_escaper3   c           	   	      s"  t t ddd t t ddd}|s(| g }tt| }t|dkrtj|t dD ]\}}t| }}t	t
 |^ }}W d   n1 s0    Y  ||kr| | qV|tt|d	 kr| |  |  qV| | d
 |  qVn 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]'
    )rk   r3   c                 S   s   | dv rd|  S | S )Nz\^-][\r   rk   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   rB   Nr4   -c                    s   g | ]} |qS r   r   ).0rk   rz   r   r    
<listcomp>  r&   z._collapse_string_to_ranges.<locals>.<listcomp> )r   sortedrR   r6   rp   groupbyrm   rW   
contextlibsuppressr   appendchrrs   join)	r8   rw   r{   retZs_charsrA   charsfirstlastr   r   r    _collapse_string_to_ranges   s(     (
r   )llr3   c                 C   sL   g }g | }|rH| d}t|tr<t|ts<||d d< q|| q|S )Nr   )rZ   
isinstancer   r   r   )r   r   Zto_visitir   r   r    _flatten$  s    
r   r|   r4   )	word_list	max_level_levelr3   c                 C   s  t t ddd}|dkr.dt| tddS g }d}|t| D ]:\}}|| d}d}d|v rtd	}|d t|d
krtdd |D r|| dd| d|  nf||k rtt|||d
 }	|| d|	 d|  n.|j	tdd || dd| d|  qB|rt|d }
t|
d
kr\|r\|| d|
 d|  n|| |
 |  qB|| qBd|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   sl   t | dkrHtj| dd dD ]&\}}|tdd |D t ddfV  qn | d	 d	 | d	 dd  gfV  d S )
Nr4   c                 S   s   | d d S rd   r   )r8   r   r   r    r%   =  r&   zOmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<lambda>r}   c                 S   s   g | ]}|d d qS r4   Nr   r   r8   r   r   r    r   >  r&   zQmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<listcomp>TrB   reverser   )r6   rp   r   r   )r   prefixsuffixesr   r   r    !get_suffixes_from_common_prefixes;  s    "z=make_compressed_re.<locals>.get_suffixes_from_common_prefixesr   |Tr   r   ?r4   c                 s   s   | ]}t |d kV  qdS r   )r6   r   r   r   r    	<genexpr>Q  r&   z%make_compressed_re.<locals>.<genexpr>[]())
r*   r   r   r   r6   r   removeallmake_compressed_resort)r   r   r   r   r   sepinitialr   ZtrailingZ	suffix_resuffixr   r   r    r   0  s:    

""r   )compat_namefnr3   c                    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r j|_n&t	 trt d	r jj|_nd |_ j|_tt|S )
N__func__rS   r4   c                    s    | g|R i |S r?   r   )rS   argskwargsr   r   r    _inners  s    z replaced_by_pep8.<locals>._innerc                     s    | i |S r?   r   )r   r   r   r   r    r   |  s    zDeprecated - use :class:``rT   )r   r*   inspect	signature
parametersr   r   r)   r+   r   rP   FunctionType__kwdefaults__typehasattrrT   r(   r   r
   )r   r   r   r   r   r    replaced_by_pep8h  s     
r   )T)r|   r4   )$r   	functoolsr   r   r   rp   rP   typingr   r   r   r   r   r   r   rj   r
   r   rv   r   r9   r;   r=   r>   rV   r[   dictrg   rl   rm   boolr   r*   r   r   r   r   r   r   r    <module>   sB   	(		 T 
8