
    xi}>                        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%	 d9d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d/edefd0Z, ejZ                  d1      fdedefd2Z.	 d;d3d4d5eeef   d6ed7edefd8Z/y)<    N)	lru_cachewraps)CallableUnionIterableTypeVarcastAny   )PyparsingDeprecationWarningPyparsingDiagnosticWarning\   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                 H   || j                   v r^t        j                  | j                   d| d| j                   dt        t        | |            j                          dt        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   r   setattr
ValueError)clsdnamevalues      Z/var/www/html/chatbot/card-advisor-bot/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   r   
)lenrfind)r<   r=   ss      r(   colrD   +   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)r<   r=   s     r(   linenorG   <   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)rB   find)r<   r=   last_crnext_crs       r(   linerL   J   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 Nr9   _key	cache_getnot_in_caches     r(   getz%_UnboundedCache.__init__.<locals>.getZ       S,//r*   c                     ||<   y rQ   r9   )rS   rT   r'   caches      r(   set_z&_UnboundedCache.__init__.<locals>.set_]   s    E#Jr*   c                 &    j                          y rQ   clearrS   rZ   s    r(   r^   z'_UnboundedCache.__init__.<locals>.clear`       KKMr*   )rW   objectrV   sizetypes
MethodTypesetr^   )selfrW   r[   r^   rZ   rU   rV   s       @@@r(   __init__z_UnboundedCache.__init__U   st    II	+183L	0		 	##C.##D$/%%eT2
r*   Nr   r1   r2   rg   r9   r*   r(   rN   rN   T   s    3r*   rN   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 rQ   r9   rR   s     r(   rW   z _FifoCache.__init__.<locals>.getq   rX   r*   c                     ||<   t              kD  r* t        t                           t              kD  r)y y rQ   )rA   nextiter)rS   rT   r'   rZ   	cache_poprb   s      r(   r[   z!_FifoCache.__init__.<locals>.set_t   s7    E#Je*t#$tE{+, e*t#r*   c                 &    j                          y 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}    	+183LII	II		0	-	 ##C.##D$/%%eT2
r*   Nrh   r9   r*   r(   rj   rj   i   s    3r*   rj   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 rQ   )	_capacity_active_memory)rf   capacitys     r(   rg   zLRUMemo.__init__   s    !r*   c                     	 | j                   |   S # t        $ r: | j                  j                  |      | j                  |<   | j                  |   cY S w xY wrQ   )rw   KeyErrorrx   rr   rf   rT   s     r(   __getitem__zLRUMemo.__getitem__   sQ    	%<<$$ 	% $ 0 0 5DLL<<$$	%s    A AAc                 Z    | j                   j                  |d        || j                  |<   y rQ   )rx   rr   rw   )rf   rT   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   )rw   rr   r4   rx   rv   r{   )rf   rT   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 rQ   )rw   r^   rx   rf   s    r(   r^   zLRUMemo.clear   s"    r*   N)	r   r1   r2   r3   rg   r}   r   r   r^   r9   r*   r(   rt   rt      s     
%"	&r*   rt   c                       e Zd ZdZd Zy)UnboundedMemoz<
    A memoizing mapping that retains all deleted items
    c                      y 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 ]  }| j                  |t        |z         }  | j                  dd      } | j                  dd      } t        |       S )Nz\^-[]r@   z\n	z\t)replace_bslashr    )rC   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	itertoolsrF   counterr'   r   s    r(   rg   z_GroupConsecutive.__init__   s    	 (
r*   charc                     t        |      }|| j                  c| _        }||z
  dkD  rt        | j                        | _        | j                  S r   )ordr   rn   r   r'   )rf   r   c_intr   s       r(   __call__z_GroupConsecutive.__call__   sB    D		44<!dll+DJzzr*   )r>   N)r   r1   r2   r3   rg   r    intr   r9   r*   r(   r   r      s    .
S S r*   r   c                 L    t        | |      ry	 t        |        y# |$ r Y yw xY w)NFT)
isinstancero   )obj	_str_type_iter_exceptions      r(   _is_iterabler      s4    #y!S	   s    ##r   c                     | dv rd|  S | S )Nz\^-][\r9   )r   s    r(   _escape_re_range_charr      s    H}as8+!+r*   T	re_escapec                 ~   |rt         }nd }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]'
    c                     | S rQ   r9   )sss    r(   r/   z,_collapse_string_to_ranges.<locals>.<lambda>  s    " r*      rT   Nr   - )r   sortedre   rA   r   groupbyr   rn   
contextlibsuppressr$   appendchrr   join)
rC   r   escape_re_range_charrets_charsrS   charsfirstlastr   s
             r(   _collapse_string_to_rangesr      sB   P 4,
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   <D.D:.D7	llc                     g }| D ]`  }t        |t              r|j                  |       %t        |t              r|j	                  t        |             P|j                  |       b |S rQ   )r   r    r   r   extend_flatten)r   r   is      r(   r   r   J  sY    
C 	 aJJqM8$JJx{#JJqM	 Jr*   c                     | dk(  ry| j                         r#t        |       dk(  rt        t        | d            S | j	                  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  sW    Cxyy{s1v{3q!9~	
j	!3qub>""Hr*   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   r9   r   s    r(   r/   zOmake_compressed_re.<locals>.get_suffixes_from_common_prefixes.<locals>.<lambda>t  s    aPRQRe r*   r   TrT   reverser   )rA   r   r   r   )r   prefixsuffixesrC   s       r(   !get_suffixes_from_common_prefixesz=make_compressed_re.<locals>.get_suffixes_from_common_prefixesr  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rA   .0wds     r(   	<genexpr>z%make_compressed_re.<locals>.<genexpr>  s     /rs2w{/   |Tr   [c              3   2   K   | ]  }t        |        y wrQ   r   r   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s     Q8<Q   ]z?:?c              3   8   K   | ]  }t        |      d k(    ywr   r   r   rC   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s     113q6Q;1r   c              3   2   K   | ]  }t        |        y wrQ   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rQ   r   r   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s     0`RS1J11M0`r   c              3   F   K   | ]  }t        j                  |        y wrQ   )reescaper   s     r(   r   z%make_compressed_re.<locals>.<genexpr>  s     :ZA299Q<:Zs   !)r4   r    r$   fromkeysanyr   r   r   r   rA   r   removeallmake_compressed_resort)r   r   r   r   r   r   r   sepncgroupinitialr   trailing	suffix_resuffixs                 r(   r   r   c  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__rf   r   c                 r    t        j                  dj                  t        d        | g|i |S Nz deprecated - use r   r   r   r   r   r   )rf   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
        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    s     
Z	$B 	x4))"-889"1==	r	- 
	- 
r	' 
	'} %	FN "FO//F"e(() " 1 1	B	'"j"9 " : : $//F6?r*   z([a-z])([A-Z])c                 F    |j                  d|       } | j                         S )Nz\1_\2)sublower)rC   _re_sub_patterns     r(   _to_pep8_namer    s     Ha(A779r*   r   )new_namer  arg_namer  c                    || v r5|xs t        |      }t        j                  |d|t        d       | |   S || |<   | |   S )Nz argument is deprecated, use r   )categoryr   )r  r   r   r   )r  r  default_valuer  s       r(   deprecate_argumentr    s`     66}X6l7|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$     si    	 &    @ @  M
b'Cx C C4 3YS Y Y Y Y  3
( 
(3 
(3 
( 
( 3Pc P P P P3 3*3 32% %PD   " "J "%ei 
,S ,S ,
 59US(3- U-1UUp d    \ "&\}\\ 	\
 \ 	\~*# *1 * *Z +5"**5F*G S C  :>RTcN&)LOr*   