
    ei;                     <   d dl Z 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mZ d dlZ ed      Z ede	      Z G d d      Z ed	
      dededefd       Z ed	
      dededefd       Z ed	
      dededefd       Z G d d      Z G d d      Z G d d      Z G d de      ZdedefdZ G d d      Z	 d2de
eee   f   de defdZ!d ede"fd!Z#	 d3dd"d#d$ee   d%ed&e d'edef
d(Z$d)ed*edefd+Z%	 d4d,d-d.eeef   d/ed0edefd1Z&y)5    N)	lru_cachewraps)CallableUnionIterableTypeVarcastAny\   C)boundc                   r    e Zd ZU dZg Zee   ed<   g Zee   ed<   dZ	e
d        Z e
d       Z e
d       Zy)	__config_flagsz=Internal class for defining compatibility and debugging flags
_all_names_fixed_namesconfigurationc                 >   || j                   v rYt        j                  | j                   d| d| j                   dt        t        | |            j                          dd       y || j                  v rt        | ||       y 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values      P/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/pyparsing/util.py_setz__config_flags._set   s    C$$$MM<<.%#..)9c'#uBU>V>\>\>^=_+-
 CNN"C&x'7q	BCC    c                 &    | j                  |d      S )NTr&   r"   names     r%   <lambda>z__config_flags.<lambda>$   s    388D$+? r'   c                 &    | j                  |d      S )NFr)   r*   s     r%   r,   z__config_flags.<lambda>%   s    CHHT5,A r'   N)r   
__module____qualname____doc__r   listr   __annotations__r   r   classmethodr&   enabledisable r'   r%   r   r      sR    GJS	 L$s)  JD D ?@FABGr'   r      )maxsizelocstrgreturnc                 z    |}d| cxk  rt        |      k  rn n|| dz
     dk(  rdS | |j                  dd|       z
  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
    :meth:`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)r9   r:   ss      r%   colrB   (   sG     	AC #a& QsQwZ4%71XS1774QRTWCX=XXr'   c                 .    |j                  dd|       dz   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 :meth:`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>   r   r=   )count)r9   r:   s     r%   linenorE   9   s     ::dAs#a''r'   c                 v    |j                  dd|       }|j                  d|       }|dk\  r||dz   | S ||dz   d S )zh
    Returns the line of text containing loc within a string, counting newlines as line separators.
    r>   r   r=   N)r@   find)r9   r:   last_crnext_crs       r%   linerJ   G   sM    
 jjq#&Giic"G*1Q,4!g&OD1<OOr'   c                       e Zd Zd Zy)_UnboundedCachec                    i j                   t               x| _        fd}fd}fd}d | _        t	        j
                  ||       | _         t	        j
                  ||       | _        t	        j
                  ||       | _        y )Nc                      |      S Nr6   _key	cache_getnot_in_caches     r%   getz%_UnboundedCache.__init__.<locals>.getW       S,//r'   c                     ||<   y rO   r6   )rQ   rR   r$   caches      r%   set_z&_UnboundedCache.__init__.<locals>.set_Z   s    E#Jr'   c                 &    j                          y rO   clearrQ   rX   s    r%   r\   z'_UnboundedCache.__init__.<locals>.clear]       KKMr'   )rU   objectrT   sizetypes
MethodTypesetr\   )selfrU   rY   r\   rX   rS   rT   s       @@@r%   __init__z_UnboundedCache.__init__R   st    II	+183L	0		 	##C.##D$/%%eT2
r'   Nr   r.   r/   re   r6   r'   r%   rL   rL   Q   s    3r'   rL   c                       e Zd Zd Zy)
_FifoCachec                 8   i | _         t               x| _        j                  j                  fd}fd}fd}t        j                  ||       | _        t        j                  ||       | _        t        j                  ||       | _        y )Nc                      |      S rO   r6   rP   s     r%   rU   z _FifoCache.__init__.<locals>.getn   rV   r'   c                     ||<   t              kD  r* t        t                           t              kD  r)y y rO   )r?   nextiter)rQ   rR   r$   rX   	cache_popr`   s      r%   rY   z!_FifoCache.__init__.<locals>.set_q   s7    E#Je*t#$tE{+, e*t#r'   c                 &    j                          y rO   r[   r]   s    r%   r\   z"_FifoCache.__init__.<locals>.clearw   r^   r'   )	r`   r_   rT   rU   popra   rb   rc   r\   )	rd   r`   rU   rY   r\   rX   rS   rn   rT   s	    `   @@@@r%   re   z_FifoCache.__init__g   s}    	+183LII	II		0	-	 ##C.##D$/%%eT2
r'   Nrf   r6   r'   r%   rh   rh   f   s    3r'   rh   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)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                 .    || _         i | _        i | _        y rO   )	_capacity_active_memory)rd   capacitys     r%   re   zLRUMemo.__init__   s    !r'   c                     	 | j                   |   S # t        $ r: | j                  j                  |      | j                  |<   | j                  |   cY S w xY wrO   )ru   KeyErrorrv   rp   rd   rR   s     r%   __getitem__zLRUMemo.__getitem__   sQ    	%<<$$ 	% $ 0 0 5DLL<<$$	%s    A AAc                 Z    | j                   j                  |d        || j                  |<   y rO   )rv   rp   ru   )rd   rR   r$   s      r%   __setitem__zLRUMemo.__setitem__   s$    d#!Sr'   c                    	 | j                   j                  |      }t        | j                        d | j                  dz     }|D ]  }| j                  j                  |        || j                  |<   y # t
        $ r Y y w xY wNr=   )ru   rp   r1   rv   rt   ry   )rd   rR   r$   oldest_keyskey_to_deletes        r%   __delitem__zLRUMemo.__delitem__   s    	&LL$$S)E t||,-D!1C/DEK!, 0  /0 %DLL  		s   A5 5	B Bc                 l    | j                   j                          | j                  j                          y rO   )ru   r\   rv   rd   s    r%   r\   zLRUMemo.clear   s"    r'   N)	r   r.   r/   r0   re   r{   r}   r   r\   r6   r'   r%   rr   rr      s     
%"	&r'   rr   c                       e Zd ZdZd Zy)UnboundedMemoz<
    A memoizing mapping that retains all deleted items
    c                      y rO   r6   rz   s     r%   r   zUnboundedMemo.__delitem__   s    r'   N)r   r.   r/   r0   r   r6   r'   r%   r   r      s    r'   r   rA   c                     dD ]  }| j                  |t        |z         }  | j                  dd      } | j                  dd      } t        |       S )Nz\^-[]r>   z\n	z\t)replace_bslashr   )rA   cs     r%   _escape_regex_range_charsr      sN     &IIa1%&			$A			$Aq6Mr'   c                   (    e Zd ZdZddZdedefdZy)_GroupConsecutivea  
    Used as a callable `key` for itertools.groupby to group
    characters that are consecutive:

    .. testcode::

       from itertools import groupby
       from pyparsing.util import _GroupConsecutive

       grouped = groupby("abcdejkmpqrs", key=_GroupConsecutive())
       for index, group in grouped:
           print(tuple([index, list(group)]))

    prints:

    .. testoutput::

       (0, ['a', 'b', 'c', 'd', 'e'])
       (1, ['j', 'k'])
       (2, ['m'])
       (3, ['p', 'q', 'r', 's'])
    r;   Nc                 R    d| _         t        j                         | _        d| _        y )Nr   )prev	itertoolsrD   counterr$   r   s    r%   re   z_GroupConsecutive.__init__   s    	 (
r'   charc                     t        |      }|| j                  c| _        }||z
  dkD  rt        | j                        | _        | j                  S r   )ordr   rl   r   r$   )rd   r   c_intr   s       r%   __call__z_GroupConsecutive.__call__   sB    D		44<!dll+DJzzr'   )r;   N)r   r.   r/   r0   re   r   intr   r6   r'   r%   r   r      s    .
S S r'   r   T	re_escapec                    dt         dt         fd}dt         dt         fd}|s|}g }t        t        |             }t        |      dkD  rt	        j
                  |t                     D ]  \  }}t        |      x}}	t        j                  t              5  |^ }}	ddd       ||	k(  r|j                   ||             W|	t        t        |      dz         k(  r"|j                   ||        ||	              |j                   ||       d	 ||	               n|D 
cg c]
  }
 ||
       }}
d
j                  |      S # 1 sw Y   xY wc c}
w )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]'
    r   r;   c                     | dv rd| z   S | S )Nz\^-][\r6   r   s    r%   escape_re_range_charz8_collapse_string_to_ranges.<locals>.escape_re_range_char  s    =tax/a/r'   c                     | S rO   r6   r   s    r%   no_escape_re_range_charz;_collapse_string_to_ranges.<locals>.no_escape_re_range_char  s    r'      rR   Nr=   - )r   sortedrc   r?   r   groupbyr   rl   
contextlibsuppressr!   appendchrr   join)rA   r   r   r   rets_charsrQ   charsfirstlastr   s              r%   _collapse_string_to_rangesr      sb   N0 0 03 3  6
C  AG
7|a "))'7H7JK 	HAu  ;&ED$$Z0 ! D! }

/67SZ!^,, 

259:;OPT;U:VWX
 

+E2315I$5O4PQ)	< 1881#A&88773<7! !2 9s   E$EE	llc                     g }| D ]`  }t        |t              r|j                  |       %t        |t              r|j	                  t        |             P|j                  |       b |S rO   )
isinstancer   r   r   extend_flatten)r   r   is      r%   r   r   9  sY    
C 	 aJJqM8$JJx{#JJqM	 Jr'   r=   non_capturing_groups_level	word_list	max_levelr   r   c          
         dt         t           fd}|dk(  r| st        d      d| v rt        d      | syt        i j                  |             } |dk(  rpt	        d | D              rBd	j                  t        | D cg c]  }t        j                  |       c}t        d
            S ddj                  d | D               dS g }d}|rdnd} |t        |             D ]  \  }	}
|j                  |       d	}t        j                  |	      }	d}d|
v rd}|
j                  d       t        |
      dkD  rt        d |
D              r0|j                  |	 ddj                  d |
D               d|        ||k  r7t        t        |
      |||dz         }|j                  |	 d| | d|        t        d |
D              r1|j                  |	 ddj                  d |
D               d|        |
j                  t        d
       |j                  |	 d| d	j                  d |
D               d|        b|
r^t        j                  |
d         }t        |      dkD  r|r|j                  |	 d| | d|        |j                  |	 | |        |j                  |	        dj                  |      S c c}w )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           
   3      K   t        |       dkD  rHt        j                  | d       D ],  \  }}|t        |D cg c]  }|dd  	 c}t         d      f . y | d   d   | d   dd  gf y c c}w w)Nr=   c                     | d d S r   r6   )rA   s    r%   r,   zOmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<lambda>Y  s    aPRQRe r'   r   TrR   reverser   )r?   r   r   r   )r   prefixsuffixesrA   s       r%   !get_suffixes_from_common_prefixesz=make_compressed_re.<locals>.get_suffixes_from_common_prefixesW  s     x=1$-$5$5hO$T W fX%>ae%>CQUVVVW 1+a.8A;qr?"333 &?s   7A2A--A2r=   z&no words given to make_compressed_re()r   z%word list cannot contain empty stringr   c              3   8   K   | ]  }t        |      d kD    ywr=   Nr?   .0wds     r%   	<genexpr>z%make_compressed_re.<locals>.<genexpr>m  s     /rs2w{/   |Tr   [c              3   2   K   | ]  }t        |        y wrO   r   r   s     r%   r   z%make_compressed_re.<locals>.<genexpr>r  s     Q8<Q   ]z?:?c              3   8   K   | ]  }t        |      d k(    ywr   r   r   rA   s     r%   r   z%make_compressed_re.<locals>.<genexpr>  s     113q6Q;1r   c              3   2   K   | ]  }t        |        y wrO   r   r   s     r%   r   z%make_compressed_re.<locals>.<genexpr>  s     (X!)B1)E(Xr   r   ()c              3   8   K   | ]  }t        |      d k(    ywr   r   r   s     r%   r   z%make_compressed_re.<locals>.<genexpr>  s     913q6Q;9r   c              3   2   K   | ]  }t        |        y wrO   r   r   s     r%   r   z%make_compressed_re.<locals>.<genexpr>  s     0`RS1J11M0`r   c              3   F   K   | ]  }t        j                  |        y wrO   )reescaper   s     r%   r   z%make_compressed_re.<locals>.<genexpr>  s     :ZA299Q<:Zs   !)r1   r   r!   fromkeysanyr   r   r   r   r?   r   removeallmake_compressed_resort)r   r   r   r   r   r   r   sepncgroupinitialr   trailing	suffix_resuffixs                 r%   r   r   H  s   4DI 4 {EFF?DEE  R[[+,IA~/Y//88	:"		":TR  rwwQyQQRRSTT
C
C*dG>vi?PQ +$

3))G$>HOOBx=1111

iq(Xx(X!X YYZ[cZde I% 2x(!-A%z	!I JJ'!G9YKq
KL999

&iq0`W_0`)`(aabckblm !#t<

&iq	#((:ZQY:Z2Z1[[\]e\fg 8A;/v;?xJJ'!G9VHAhZHIJJ'6(8*=>

7#W+$X 773<k ;s   ;Kcompat_namefnc                 B    t        d      dgt        t        j                        j                        d d k(  rt               fd       }nt               f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__rd   r=   c                 r    t        j                  dj                  t        d        | g|i |S Nz deprecated - use r   r   r   r   r   DeprecationWarning)rd   argskwargsr   r   s      r%   _innerz replaced_by_pep8.<locals>._inner  s?    MM/!3BKK?C"
 d,T,V,,r'   c                  j    t        j                  dj                  t        d        | i |S r   r   )r   r   r   r   s     r%   r   z replaced_by_pep8.<locals>._inner  s:    MM/!3BKK?C"
 t&v&&r'   z6
        .. deprecated:: 3.0.0
           Use :class:`z` instead
        re   )r   r1   inspect	signature
parametersr   r   r0   r2   r   ra   FunctionType__kwdefaults__typehasattrre   r/   r	   r   )r   r   r   s   `` r%   replaced_by_pep8r     s     
Z	$B 	x4))"-889"1==	r	- 
	- 
r	' 
	'} %	FN "FO//F"e(() " 1 1	B	'"j"9 " : : $//F6?r'   r   )new_namer   arg_namer  c                    t        j                  d      fdt        dt        fd}|| v r2|xs  ||      }t        j                  |d|t
        d       | |   S || |<   | |   S )Nz([a-z])([A-Z])rA   r;   c                 F    |j                  d|       } | j                         S )Nz\1_\2)sublower)rA   _re_sub_patterns     r%   to_pep8_namez(deprecate_argument.<locals>.to_pep8_name  s     !,wwyr'   z argument is deprecated, use r   )categoryr   )r   compiler   r   r   r   )r   r  default_valuer  r  s        r%   deprecate_argumentr    s     .0ZZ8I-J  s  65|H5l7|D'	
 ( )x(r'   )T)r   rO   )'r   r   	functoolsr   r   r   r   ra   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   rB   rE   rJ   rL   rh   rr   dictr   r   r   boolr   r1   r   r   r   r  r6   r'   r%   <module>r     s    	 &    @ @ 
b'Cx C C2 3YS Y Y Y Y  3
( 
(3 
(3 
( 
( 3Pc P P P P3 3*3 32% %PD   " "L 59XS(3- X-1XXv d " \ "&\}\\ 	\
 \ 	\~*# *1 * *\ :>RTcN&)LOr'   