
    Pi}>                        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ddlmZm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!ee"fe#fdZ$d edefd!Z%	 d:de
eee         f         d#e&defd$Z'd%ede(fd&Z)dedefd'Z*	 d;d"dd)d*ee         d+ed,e&d-edef
d.Z+d/ed0edefd1Z, ej-        d2          fdedefd3Z.	 d<d4d5d6eeef         d7ed8edefd9Z/dS )=    N)	lru_cachewraps)CallableUnionIterableTypeVarcastAny   )PyparsingDeprecationWarningPyparsingDiagnosticWarning\   C)boundc                       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dS )	__config_flagsz=Internal class for defining compatibility and debugging flags
_all_names_fixed_namesconfigurationc                 B   || j         v rat          j        | j         d| d| j         dt          t          | |                                                     dt          d           d S || j	        v rt          | ||           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   r   setattr
ValueError)clsdnamevalues      b/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pyparsing/util.py_setz__config_flags._set   s    C$$$M< - -% - -#. - -c'#uBUBU>V>V>\>\>^>^ - - -*	    FCN""C&&&&&BBBBBCCC    c                 .    |                      |d          S )NTr)   r%   names     r(   <lambda>z__config_flags.<lambda>'   s    388D$+?+? r*   c                 .    |                      |d          S )NFr,   r-   s     r(   r/   z__config_flags.<lambda>(   s    CHHT5,A,A r*   N)r   
__module____qualname____doc__r   listr    __annotations__r   r   classmethodr)   enabledisable r*   r(   r   r      s         GGJS	 L$s)    JD D [D [??@@FkAABBGGGr*   r      )maxsizelocstrgreturnc                     |}d| cxk     rt          |          k     rn n|| dz
           dk    rdn| |                    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   r   
)lenrfind)r<   r=   ss      r(   colrD   +   sc     	AC    #a&&     QsQwZ4%7%711S1774QRTWCXCX=XXr*   c                 6    |                     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)r<   r=   s     r(   linenorG   <   s     ::dAs##a''r*   c                     |                     dd|           }|                    d|           }|dk    r||dz   |         n||dz   d         S )zh
    Returns the line of text containing loc within a string, counting newlines as line separators.
    r@   r   r   N)rB   find)r<   r=   last_crnext_crs       r(   linerL   J   sZ    
 jjq#&&Giic""G*1Q,,4!g%&&D1<OOr*   c                       e Zd Zd ZdS )_UnboundedCachec                    i j         t                      x| _        fd}fd}fd}d | _        t	          j        ||           | _         t	          j        ||           | _        t	          j        ||           | _        d S )Nc                      |          S Nr9   _key	cache_getnot_in_caches     r(   getz%_UnboundedCache.__init__.<locals>.getZ       9S,///r*   c                     ||<   d S rQ   r9   )rS   rT   r'   caches      r(   set_z&_UnboundedCache.__init__.<locals>.set_]   s    E#JJJr*   c                 0                                      d S rQ   clearrS   rZ   s    r(   r^   z'_UnboundedCache.__init__.<locals>.clear`       KKMMMMMr*   )rW   objectrV   sizetypes
MethodTypesetr^   )selfrW   r[   r^   rZ   rU   rV   s       @@@r(   __init__z_UnboundedCache.__init__U   s    I	+1883L	0 	0 	0 	0 	0 	0	 	 	 	 		 	 	 	 	 	#C..#D$//%eT22


r*   Nr   r1   r2   rg   r9   r*   r(   rN   rN   T   s#        3 3 3 3 3r*   rN   c                       e Zd Zd ZdS )
_FifoCachec                 (   i | _         t                      x| _        j        j        fd}fd}fd}t          j        ||           | _        t          j        ||           | _        t          j        ||           | _        d S )Nc                      |          S rQ   r9   rR   s     r(   rW   z _FifoCache.__init__.<locals>.getq   rX   r*   c                     ||<   t                    k    r: t          t                                         t                    k    8d S d S rQ   )rA   nextiter)rS   rT   r'   rZ   	cache_poprb   s      r(   r[   z!_FifoCache.__init__.<locals>.set_t   sZ    E#Je**t##	$tE{{++,,, e**t######r*   c                 0                                      d S rQ   r]   r_   s    r(   r^   z"_FifoCache.__init__.<locals>.clearz   r`   r*   )	rb   ra   rV   rW   poprc   rd   re   r^   )	rf   rb   rW   r[   r^   rZ   rU   rp   rV   s	    `   @@@@r(   rg   z_FifoCache.__init__j   s    	+1883LI	I		0 	0 	0 	0 	0 	0	- 	- 	- 	- 	- 	- 	-	 	 	 	 	 #C..#D$//%eT22


r*   Nrh   r9   r*   r(   rj   rj   i   s#        3 3 3 3 3r*   rj   c                   0    e Zd ZdZd Zd Zd Zd Z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                 0    || _         i | _        i | _        d S rQ   )	_capacity_active_memory)rf   capacitys     r(   rg   zLRUMemo.__init__   s    !r*   c                     	 | j         |         S # t          $ r2 | j                            |          | j        |<   | j        |         cY S w xY wrQ   )rw   KeyErrorrx   rr   rf   rT   s     r(   __getitem__zLRUMemo.__getitem__   s^    	%<$$ 	% 	% 	% $ 0 0 5 5DL<$$$$	%s    9A
Ac                 P    | j                             |d            || j        |<   d S rQ   )rx   rr   rw   )rf   rT   r'   s      r(   __setitem__zLRUMemo.__setitem__   s,    d###!Sr*   c                     	 | j                             |          }t          | j                  d | j        dz             }|D ]}| j                            |           || j        |<   d S # t
          $ r Y d S w xY wNr   )rw   rr   r4   rx   rv   r{   )rf   rT   r'   oldest_keyskey_to_deletes        r(   __delitem__zLRUMemo.__delitem__   s    	&L$$S))E t|,,-D!1C/D-DEK!, 0 0  //// %DL  	 	 	DD	s   A, ,
A:9A:c                 j    | j                                          | j                                         d S rQ   )rw   r^   rx   rf   s    r(   r^   zLRUMemo.clear   s0    r*   N)	r   r1   r2   r3   rg   r}   r   r   r^   r9   r*   r(   rt   rt      si           
% % %" " "	& 	& 	&    r*   rt   c                       e Zd ZdZd ZdS )UnboundedMemoz<
    A memoizing mapping that retains all deleted items
    c                     d S rQ   r9   r|   s     r(   r   zUnboundedMemo.__delitem__   s    r*   N)r   r1   r2   r3   r   r9   r*   r(   r   r      s-             r*   r   rC   c                     dD ] }|                      |t          |z             } !|                      dd          } |                      dd          } t          |           S )Nz\^-[]r@   z\n	z\t)replace_bslashr    )rC   cs     r(   _escape_regex_range_charsr      s[     & &IIa1%%			$A			$Aq66Mr*   c                   *    e Zd ZdZddZdedefdZdS )_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| _        d S )Nr   )prev	itertoolsrF   counterr'   r   s    r(   rg   z_GroupConsecutive.__init__   s#    	 ((


r*   charc                     t          |          }|| j        c| _        }||z
  dk    rt          | j                  | _        | j        S r   )ordr   rn   r   r'   )rf   r   c_intr   s       r(   __call__z_GroupConsecutive.__call__   sD    D			44<!dl++DJzr*   )r>   N)r   r1   r2   r3   rg   r    intr   r9   r*   r(   r   r      sT         .   
S S      r*   r   c                 b    t          | |          rdS 	 t          |            dS # |$ r Y dS w xY w)NFT)
isinstancero   )obj	_str_type_iter_exceptions      r(   _is_iterabler      sT    #y!! uS			 t    uus   % ..r   c                     | dv rd|  n| S )Nz\^-][\r9   )r   s    r(   _escape_re_range_charr      s    H}}8888!+r*   T	re_escapec                    |rt           nd g }t          t          |                     }t          |          dk    rt	          j        |t                                D ]\  }}t          |          x}}t          j	        t                    5  |^ }}ddd           n# 1 swxY w Y   ||k    r|                     |                     q|t          t          |          dz             k    r,|                     |            |                      |                     |           d |                      nf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]'
    c                     | S rQ   r9   )sss    r(   r/   z,_collapse_string_to_ranges.<locals>.<lambda>  s    " r*      rT   Nr   -c                 &    g | ]} |          S r9   r9   ).0r   escape_re_range_chars     r(   
<listcomp>z._collapse_string_to_ranges.<locals>.<listcomp>E  s%    8881##A&&888r*    )r   sortedre   rA   r   groupbyr   rn   
contextlibsuppressr$   appendchrr   join)	rC   r   rets_charsrS   charsfirstlastr   s	           @r(   _collapse_string_to_rangesr      s   P  -4,}
C  AG
7||a ")'7H7J7JKKK 	 	HAu  ;;&ED$Z00 ! ! D! ! ! ! ! ! ! ! ! ! ! ! ! ! ! }}

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

22599W;O;OPT;U;UWWXXXX
 

++E22QQ5I5I$5O5OQQ   )	< 9888888773<<s   B$$B(	+B(	llc                    g }| D ]z}t          |t                    r|                    |           -t          |t                    r#|                    t          |                     e|                    |           {|S rQ   )r   r    r   r   extend_flatten)r   r   is      r(   r   r   J  s~    
C 	 	 a 	JJqMMMM8$$ 	JJx{{####JJqMMMMJr*   c                    | dk    rdS |                                  r0t          |           dk    rt          t          | d                    S |                     d          r%t          t          | dd          d                    S | S )N0 r      )uxr      )isdigitrA   r   r   
startswithrC   s    r(   !_convert_escaped_numerics_to_charr   Y  sy    Cxxtyy{{ #s1vv{{3q!99~~	
j	!	! #3qub>>"""Hr*   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          n| sdS t          i                     |                     } |dk    rpt	          d | D                       r4d	                    t          d
 | D             t          d                    S dd                    d | D                        dS g }d}|rdnd} |t          |                     D ]2\  }}	|                    |           d	}t          j
        |          }d}
d|	v rd}
|	                    d           t          |	          dk    rLt          d |	D                       r;|                    | dd                    d |	D                        d|
            ||k     rCt          t          |	          |||dz             }|                    | d| | d|
            t          d |	D                       r<|                    | dd                    d |	D                        d|
            T|	                    t          d           |                    | d| d	                    d |	D                        d|
            |	rmt          j
        |	d                   }t          |          dk    r#|
r!|                    | d| | d|
             |                    | | |
            |                    |           4d                    |          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              3      K   t          |           dk    rDt          j        | d           D ]*\  }}|t          d |D             t           d          fV  +d S | d         d         | d         dd          gfV  d S )Nr   c                     | d d         S r   r9   r   s    r(   r/   zOmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<lambda>t  s    aPRQRPRe r*   r   c                 "    g | ]}|d d         S r   Nr9   r   rC   s     r(   r   zQmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<listcomp>u  s     %>%>%>ae%>%>%>r*   TrT   reverser   )rA   r   r   r   )r   prefixsuffixess      r(   !get_suffixes_from_common_prefixesz=make_compressed_re.<locals>.get_suffixes_from_common_prefixesr  s      x==1$-$5hOO$T$T$T W W f%>%>X%>%>%>CQUVVVVVVVVW W 1+a.8A;qrr?"3333333r*   r   z&no words given to make_compressed_re()r   z%word list cannot contain empty stringr   c              3   <   K   | ]}t          |          d k    V  dS r   rA   r   wds     r(   	<genexpr>z%make_compressed_re.<locals>.<genexpr>  s,      //rs2ww{//////r*   |c                 6    g | ]}t          j        |          S r9   reescaper   s     r(   r   z&make_compressed_re.<locals>.<listcomp>  s     :::"	":::r*   Tr   [c              3   4   K   | ]}t          |          V  d S rQ   r   r   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s+      QQ8<<QQQQQQr*   ]z?:?c              3   <   K   | ]}t          |          d k    V  dS r   r   r   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s,      1113q66Q;111111r*   c              3   4   K   | ]}t          |          V  d S rQ   r   r   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s+      (X(X!)B1)E)E(X(X(X(X(X(Xr*   r   ()c              3   <   K   | ]}t          |          d k    V  dS r   r   r   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s,      9913q66Q;999999r*   c              3   4   K   | ]}t          |          V  d S rQ   r   r   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s,      0`0`RS1J11M1M0`0`0`0`0`0`r*   c              3   >   K   | ]}t          j        |          V  d S rQ   r   r   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s*      :Z:ZA29Q<<:Z:Z:Z:Z:Z:Zr*   )r4   r    r$   fromkeysanyr   r   rA   r   r   r   removeallmake_compressed_resort)r   r   r   r   r   r   sepncgroupinitialr   trailing	suffix_resuffixs                r(   r   r   c  s   4DI 4 4 4 4 {{ 	GEFFF??DEEE   	2 R[[++,,IA~~//Y///// 	U88::	:::TRRR   UrwwQQyQQQQQTTTT
C
C*2ddG>>vi?P?PQQ +$ +$

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

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

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

&ggg#((:Z:ZQY:Z:Z:Z2Z2Zgg]egg     $8A;//v;;??x?JJ'HHGHVHHhHHIIIIJJ'=6=8==>>>>

7####773<<r*   compat_namefnc                 N    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__rf   r   c                 h    t          j        dj        t          d            | g|R i |S Nz deprecated - use r   r   r   r   r   r   )rf   argskwargsr  r  s      r(   _innerz replaced_by_pep8.<locals>._inner  sW    MCCBKCC+   
 2d,T,,,V,,,r*   c                  `    t          j        dj        t          d            | i |S r  r  )r	  r
  r  r  s     r(   r  z replaced_by_pep8.<locals>._inner  sL    MCCBKCC+   
 2t&v&&&r*   z6
        .. deprecated:: 3.0.0
           Use :class:`z` instead
        rg   )r!   r4   inspect	signature
parametersr   r   r3   r5   r   rc   FunctionType__kwdefaults__typehasattrrg   r2   r	   r   )r  r  r  s   `` r(   replaced_by_pep8r    sO    
Z	$	$B 	x4)"--899"1"===	r	- 	- 	- 	- 	- 
	- 	- 
r	' 	' 	' 	' 	' 
	'  FN "FO/F"e()) % " 1	B		 %'"j"9"9 % " : $/F6??r*   z([a-z])([A-Z])c                 V    |                     d|           } |                                 S )Nz\1_\2)sublower)rC   _re_sub_patterns     r(   _to_pep8_namer    s%    Ha((A7799r*   r   )new_namer
  arg_namer  c                    || v r3|pt          |          }t          j        |d|t          d           n|| |<   | |         S )Nz argument is deprecated, use r   )categoryr   )r  r   r   r   )r
  r  default_valuer  s       r(   deprecate_argumentr    sm     66}X66DDDD0	
 	
 	
 	
 	
 )x(r*   )T)r   rQ   )0r   r   	functoolsr   r   r  r   rc   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r    rD   rG   rL   rN   rj   rt   dictr   r   r   bytes	Exceptionr   r   boolr   r4   r   r   r   r  compiler  r  r9   r*   r(   <module>r'     s       				 & & & & & & & &       @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  M M M M M M M M
#b''GCx   C C C C C C C C4 3YS Y Y Y Y Y Y  3
( 
(3 
(3 
( 
( 
( 
( 3Pc P P P P P P3 3 3 3 3 3 3 3*3 3 3 3 3 3 3 32% % % % % % % %P    D        " " " " " " " "J "%ei 
 
 
 
,S ,S , , , ,
 59U US(3- U-1UU U U Up d          \ "&\ \ \}\\ 	\
 \ 	\ \ \ \~*# *1 * * * * *Z +5"*5F*G*G  S C     :>RT  cN&)LO     r*   