
    #h2                    t   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKr
S SKrS SKrS SKrS SKrS SKJrJrJr  S SKJr  S SKJr  S SKJr  \R4                  " S5      r\R9                  \R:                  5        \R<                  " 5       r\R@                  " S5      r!\RE                  \!5        \RG                  \5        \RH                  " S	\RJ                  \RL                  -  5      r' " S
 S5      r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S6S jr3S r4S7S jr5S r6S r7S r8S r9S r:S r;S8S jr<S9S  jr=S! r>S7S" jr?S# r@S7S$ jrA\B\C\D44S% jrES& rF " S' S(\R                  5      rHS) rIS* rJS+ rKS7S, jrLS:S- jrMS. rNS/ rOS0 rP S SKQrQS1 rRS3 rTS;S4 jrUS<S5 jrVg! \S a    S2 rR Nf = f)=    )annotationsN)IterableMappingMutableSequence)StringIO)zip_longest)Pathtatsuz%(message)sa0  
    ( \\U........      # 8-digit Unicode escapes
    | \\u....          # 4-digit Unicode escapes
    | \\x..            # 2-digit Unicode escapes
    | \\[0-7]{1,3}     # Octal character escapes
    | \\N\{[^}]+\}     # Unicode characters by name
    | \\[\\'"abfnrtv]  # Single-character escapes
    )c                  $    \ rS rSrSS jrS rSrg)AsJSONMixin+   Nc                `    S[        U 5      R                  0[        U R                  5       US9E$ )N	__class__seen)type__name__asjson_pubdict)selfr   s     R/Users/user/Downloads/htwk/venv/lib/python3.13/site-packages/tatsu/util/_common.py__json__AsJSONMixin.__json__,   s0    d,,
T]]_40
 	
    c                    [        U 5      R                  5        VVs0 s H  u  pUR                  S5      (       a  M  X_M!     snn$ s  snnf N_)varsitems
startswith)r   namevalues      r   r   AsJSONMixin._pubdict2   sH      $Dz//1
1??3' DK1
 	
 
s
   AA N)r   
__module____qualname____firstlineno__r   r   __static_attributes__r$   r   r   r   r   +   s    

r   r   c                 r    SS K n U R                  =n(       a  U$ [        U R                  5      R                  $ Nr   )__main____package__r	   __file__r!   )mainpackages     r   program_namer1   :   s0    """w"###r   c                 (    [         R                  S:H  $ )Nposix)osr!   r$   r   r   is_posixr5   A   s    77gr   c                     [        5        nX!S'   SUS'   [        U 0 UD6  UR                  5       sS S S 5        $ ! , (       d  f       g = f)Nfile end)r   printgetvalue)argskwargsfs      r   _printsr?   E   s9    	qvutvzz|	 
s	   $9
Ac                 @    [         R                  [        U 0 UD65        g r%   )loggerinfor?   r<   r=   s     r   rB   rB   M   s    
KK(()r   c                 @    [         R                  [        U 0 UD65        g r%   )rA   debugr?   rC   s     r   rE   rE   Q       
LL$)&)*r   c                 @    [         R                  [        U 0 UD65        g r%   )rA   warningr?   rC   s     r   rH   rH   U   s    
NN7D+F+,r   c                 @    [         R                  [        U 0 UD65        g r%   )rA   errorr?   rC   s     r   rJ   rJ   Y   rF   r   c                 .    [        U 5      S:X  a  U S   $ U $ N   r   )len)r<   s    r   identityrO   ]   s    
4yA~AwKr   c                $    [        U 5      [        L $ r%   )r   listos    r   is_listrT   c   s    7d?r   c                @    U c  / $ [        U [        5      (       a  U $ U /$ r%   )
isinstancerQ   rR   s    r   to_listrW   g   s%    y		At		s
r   c                   [        [        U 5      R                  5      S:H  =(       aZ    [        U [        5      =(       aC    [        U S5      =(       a0    [        U S5      =(       a    [        S [        U SS5       5       5      $ )NrM   _asdict_fieldsc              3  B   #    U  H  n[        U[        5      v   M     g 7fr%   )rV   str).0r>   s     r   	<genexpr> is_namedtuple.<locals>.<genexpr>v   s     H,Gq
1c"",Gs   r$   )rN   r   	__bases__rV   tuplehasattrallgetattrobjs    r   is_namedtuplerg   p   so    DI A% 	IsE"	IC#	I C#	I HGCB,GHHr   c                j    [        U [        5      (       a  [        U 5      S:X  a  [        U S   5      $ U $ rL   )rV   rQ   rN   simplify_list)xs    r   ri   ri   z   s-    !Ts1v{QqT""Hr   c                   ^ S nT=(       d    Um[        SSU-   [        U 5      -
  5      nU R                  U4S j[        U5       5       5        g )Nc                     g r%   r$   r$   r   r   _nullextend_list.<locals>._null   s    r   r   rM   c              3  2   >#    U  H  nT" 5       v   M     g 7fr%   r$   )r]   r   defaults     r   r^   extend_list.<locals>.<genexpr>   s     /1WYYs   )maxrN   extendrange)rj   nrp   rm   missings     `  r   extend_listrw      sB     G!QUSV^$GHH/g//r   c           	     |   ^ ^^ [        T5      m[        U UU4S j[        S[        T 5      -   T-
  5       5       5      $ )Nc              3  8   >#    U  H  nTTXT-    :H  v   M     g 7fr%   r$   )r]   ilstru   sublsts     r   r^   #contains_sublist.<locals>.<genexpr>   s      H0G1vQA&0Gs   rM   )rN   anyrt   )r{   r|   ru   s   ``@r   contains_sublistr      s/    FAHa#c(lQ6F0GHHHr   c                N    [         R                  " [        R                  U / 5      $ r%   )	functoolsreduceoperatoriadd)listss    r   
join_listsr      s    HMM5"55r   c              #  |   #    [        U [        5      (       d  U v   g U  H  n[        U5       S h  vN   M     g  N	7fr%   )rV   r   flatten)rS   items     r   r   r      s4     a))4=    s   .<:
<c                    [        5       n/ nU  H,  nX1;  d  M
  UR                  U5        UR                  U5        M.     U$ r%   )setappendadd)seqr   resultrj   s       r   compress_seqr      s;    5DF=MM!HHQK  Mr   c                2    S n[         R                  X5      $ )a  
Given a string, evaluate escape sequences starting with backslashes as
they would be evaluated in Python source code. For a list of these
sequences, see: https://docs.python.org/3/reference/lexical_analysis.html

This is not the same as decoding the whole string with the 'unicode-escape'
codec, because that provides no way to handle non-ASCII characters that are
literally present in the string.
c                N    [         R                  " U R                  S5      S5      $ )Nr   zunicode-escape)codecsdecodegroupmatchs    r   decode_match"eval_escapes.<locals>.decode_match   s    }}U[[^-=>>r   )ESCAPE_SEQUENCE_REsub)sr   s     r   eval_escapesr      s    ? !!,22r   c                v    [        U [        5      =(       a#    [        U [        [        -  [        -  5      (       + $ r%   )rV   r   r\   bytes	bytearray)r"   s    r   isiterr      s0    eX& zsU{Y&0 , r   c                   U (       d  gU R                  U5      R                  5       n[        U 5      nUnUSS  H=  nUR                  5       nU(       d  M  [	        U[        U5      [        U5      -
  5      nM?     US   R                  5       /USS  Vs/ s H  oUUS R                  5       PM     sn-   nSnU[        U5      :  a(  Xx   (       d  US-  nU[        U5      :  a  Xx   (       d  M  SR                  XxS 5      $ s  snf )z
Trim text of common, leading whitespace.

Based on the trim algorithm of PEP 257:
    http://www.python.org/dev/peps/pep-0257/
r8   rM   Nr   
)
expandtabs
splitlinesrN   lstripminstriprstripjoin)	texttabwidthlines	maxindentindentlinestrippedtrimmedrz   s	            r   trimr      s     OOH%002ED	IFab	;;=8TS]!:;F  Qx~~ +09$+44VW9$ G 	
A
c'l
7:	Q c'l
7::99WR[!!$s   Dc                   ^ U c  g[        U 5      n US:  a1  SU-  U-  mSR                  U4S jU R                  5        5       5      n U $ )z1Indent the given block of text by indent*4 spacesr8   r    r   c              3  J   >#    U  H  nTU-   R                  5       v   M     g 7fr%   )r   )r]   tsindents     r   r^   indent.<locals>.<genexpr>   s#     K9JA'A+--//9Js    #)r\   r   r   )r   r   
multiplierr   s      @r   r   r      sJ    |t9D{
"V+yyK9JKKKr   c                    U(       a  X-  $ S$ )Nr8   r$   )fmtvaluess     r   	format_ifr      s    !3<)r)r   c                    U b  U $ U$ r%   r$   )r"   rp   s     r   notnoner      s    %5272r   c                     SR                  S [        R                  R                  5       R                  5       S S  5       5      $ )N.c              3  ,   #    U  H
  nS U-  v   M     g7f)z%2.2dNr$   )r]   r   s     r   r^   timestamp.<locals>.<genexpr>   s      K!Ks   )r   datetimeutcnowutctimetupler$   r   r   	timestampr      s?    88 %..557DDFsK  r   c           	        U b*  [        U [        [        -  [        -  [        -  5      (       a  U $ Uc  [        5       nO2[        U 5      U;   a#  [        U 5      R                   S[        U 5       3$ [        U [        [        -  5      (       d  [        U 5      (       a  UR                  [        U 5      5         [        U [        R                  [        R                  -  5      (       aM  U R                   R                   S[#        [        U 5      5      R%                  5       SS   3U[        U 5      1-  n$ ['        U S5      (       a  U R)                  US9U[        U 5      1-  n$ [+        U 5      (       a'  [-        U R/                  5       US9U[        U 5      1-  n$ [        U [        5      (       a8  0 nU R1                  5        H  u  p4 [-        XAS9X#'   M     UU[        U 5      1-  n$ [        U 5      (       a)  U  Vs/ s H  n[-        XQS9PM     snU[        U 5      1-  n$ [        U [6        R8                  5      (       a$  [-        U R:                  5      U[        U 5      1-  n$ [=        U 5      U[        U 5      1-  n$ ! [2         a!    [5        S[        U5      [        U5      5        e f = fs  snf ! U[        U 5      1-  nf = f)N@z@0x   r   r   zUnhashable key?)rV   intfloatr\   boolr   idr   r   r   r   r   r   weakrefReferenceType	ProxyTyper   hexupperrb   r   rg   r   rY   r   	TypeErrorrE   enumEnumr"   repr)rf   r   r   kves         r   r   r      s[   
{jcEkC&7$&>??
|u	CDs)$$%Qr#wi00#w,--Cc70073D3DDEEmm,,-SRW1C1C1Eab1I0JK. 	C	- S*%%<<T<** 	C	) 3#++-d3& 	C	% W%%F		 &q 4FI $  	C	 C[[256#QF1(#6 	C	 TYY''#))$ 	C		 9 	C	 ! +T!Wc!f=
 7 	C	sU   7A-J0 4J0 #'J0 ,J0 I=J0 'J0 ;J+J0  3J0 #
J0 =+J((J0 0Kc                h   [        U [        5      (       ae  U R                  5        VVs0 s HG  u  p#UR                  S5      (       a  M  Uc  M"  U(       d  [        X15      (       a  M;  U[	        U5      _MI     snn$ [        U 5      (       a  U  Vs/ s H  n[	        U5      PM     sn$ U $ s  snnf s  snf r   )rV   r   r   r    minjsonr   )rf   typesfilteredr!   r"   r   s        r   r   r     s    #w  #yy{
*OOC( ! 	 !
 *U"B !D'%. *
 	
 
$'(Cq
C((

 )s   B)	B)B)'B)B/c                   [        U [        5      (       a7  U R                  5        VVs0 s H  u  pUS;  d  M  U[        U5      _M     snn$ [        U [        R
                  [        R                  -  5      (       a  g[        U [        5      (       a  U R                  S5      (       a  g[        U 5      (       a  U  Vs/ s H  n[        U5      PM     sn$ U $ s  snnf s  snf )N>   r   	parseinfoz@refr   )
rV   r   r   	plainjsonr   r   r   r\   r    r   )rf   r!   r"   r   s       r   r   r   )  s    #w  #yy{
*55 #D)E""*
 	

 
C..1B1BB	C	C	C		#.."5"5	&)*c	!c**

 +s   CC>Cc                      \ rS rSrSrS rSrg)FallbackJSONEncoderi:  zDA JSON Encoder that falls back to repr() for non-JSON-aware objects.c                    [        U5      $ r%   )r   )r   rS   s     r   rp   FallbackJSONEncoder.default=  s    Awr   r$   N)r   r&   r'   r(   __doc__rp   r)   r$   r   r   r   r   :  s
    Nr   r   c                H    [         R                  " [        U 5      S[        S9$ )Nr   )r   cls)jsondumpsr   r   re   s    r   asjsonsr   A  s    ::fSk!1DEEr   c                    U R                  5        VVs/ s H  u  p#U" X#5      (       d  M  UPM     nnnU H  nX	 M     gs  snnf )z+Remove all items x where predicate(x, d[x])N)r   )d	predicater   r   keyss        r   
prune_dictr   E  s:     '')7)$!yA)D7D  8s
   A A c                F    [         R                  " U 5      (       a  U S-   $ U $ r   )keyword	iskeyword)r!   s    r   	safe_namer   M  s"    czKr   c                2    [        [        U 5      /U-  SU06$ )N	fillvalue)r   iter)iterablesizer   s      r   chunksr   S  s    h(4/E9EEr   c           	       ^ SS K n " U4S jSUR                  5      nUR                  SU S3S9nUR                  nU" SSS	S
S9  U" SSUSSS9  U" SSS
SSS9  U" SSS
SS9  U" SS[        S SS9  U" SSSS S!S"9  U" S#S$S S%S S&9  UR                  5       n U " UR                  UR                  UR                  UR                  UR                  (       + UR                  S'9$ ! [         a     g f = f)(Nr   c                  &   > \ rS rSrSU 4S jjrSrg)generic_main.<locals>.ListRulesiZ  Nc                   > [        S5        TR                  5        H  n[        U5        M     [        5         [        R                  " S5        g )NzRules:r   )r:   	rule_listsysexit)r   parser	namespacer   option_stringrparser_classs         r   __call__(generic_main.<locals>.ListRules.__call__[  s4    (O!++-a .GHHQKr   r$   r%   )r   r&   r'   r(   r  r)   )r  s   r   	ListRulesr   Z  s    	 	r   r
  zSimple parser for r   )descriptionz-cz--colorz3use color in traces (requires the colorama library)
store_true)helpactionz-lz--listzlist all rules and exit)r  nargsr  z-nz--no-nameguardno_nameguardzdisable the 'nameguard' feature)r  destr  z-tz--tracezoutput trace information)r  r  z-wz--whitespacezwhitespace specification)r   rp   r  r7   FILEz1the input file to parse or '-' for standard input?-)metavarr  r  rp   	startrule	STARTRULEzthe start rule for parsing)r  r  r  rp   )starttrace
whitespace	nameguardcolorize)argparseActionArgumentParseradd_argumentr\   
parse_argsr7   r  r  r  r  colorKeyboardInterrupt)custom_mainr  r!   r  r
  argpaddargr<   s    `      r   generic_mainr'  W  sH   HOO  ""1CD6/K"LDF
B	 & . i3M ' @ ) ??D
II..**+++ZZ
 	
  s   AC" "
C/.C/c                F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                    > [         R                  " S[        S9  Sn[         R                  " UR	                  TR
                  5      [        SS9  T" U 0 UD6$ )Nrp   )categoryzCall to deprecated function {}.r   )r*  
stacklevel)warningsfilterwarningsDeprecationWarningwarnformatr   )r<   r=   msgfuns      r   wrapperdeprecated.<locals>.wrapper  sL    	4FG/JJs||$/Aa	
 D#F##r   )r   wraps)r2  r3  s   ` r   
deprecatedr6    s%    __S$ $ Nr   c                r    U (       d  g[        U 5      n[        U5      nU H  nUnXB[        U5      4nM     U$ )Nr$   )r   next)elementsitexprer   ops        r   
left_assocr=    s>    	hBHEDH%  Lr   c                B   ^ U (       d  gU4S jmT" [        U 5      5      $ )Nr$   c                j   > [        U 5      n [        U 5      nX!T" U 5      4$ ! [         a    Us $ f = fr%   )r8  StopIteration)r:  leftr<  assocs      r   rB  right_assoc.<locals>.assoc  sA    Bx	)bB eBi((  	K	s   # 22)r   )r9  rB  s    @r   right_assocrD    s    ) h  r   c                     [         R                  " [        R                  " 5       5      n U R	                  5       R
                  $ r%   )psutilProcessr4   getpidmemory_inforss)processs    r   
memory_userL    s+    ..-""$(((r   c                     gr+   r$   r$   r   r   rL  rL    s    r   c                   [        U [        5      (       a  [        U 5      n S H6  n [        U 5      R                  US9 nUR	                  5       sS S S 5        s  $    [        SU  S35      e! , (       d  f       MX  = f! [
         a     Mh  f = f)N)zutf-16zutf-8zlatin-1cp1252ascii)encodingzcannot find the encoding for '')rV   r	   r\   openreadUnicodeErrorUnicodeDecodeError)filenamer   r>   s      r   try_readrX    s    (D!!x=>	h$$a$0Avvx 10 ? =hZqI
JJ	 10 		s.   A>A,	A>,
A;	6A>;A>>
BBc                  ^ [        U=(       d    S5      R                  5       n[        5       nU =(       d    /  H  nX%-  nUR                  5       (       a  UR	                  U5        M/  UR                  5       (       a  US-  nUR                  5       (       a  UR                  SS  OUR                  n[        [        5       R                  " U6 5      nUR                  S [        UR                  5      R                  U5       5       5        M     [        U5      nU4S jn	T(       a   U Vs/ s H  oi" U5      (       a  M  UPM     nnU(       a  UR                  S S9  U$ s  snf )Nr   z/*rM   c              3  R   #    U  H  oR                  5       (       a  M  Uv   M     g 7fr%   )is_dir)r]   ps     r   r^   )filelist_from_patterns.<locals>.<genexpr>  s      
;!88:AA;s   '	'c                z   >^  [        U 4S jT 5       5      (       a  g[        U4S jT R                   5       5      $ )Nc              3  F   >#    U  H  nTR                  U5      v   M     g 7fr%   r   )r]   expaths     r   r^   ;filelist_from_patterns.<locals>.excluded.<locals>.<genexpr>  s     /"tzz"~~s   !Tc              3  P   >^#    U  H  m[        U4S  jT 5       5      v   M     g7f)c              3  X   >#    U  H  n[        T5      R                  U5      v   M!     g 7fr%   )r	   r   )r]   r`  parts     r   r^   Efilelist_from_patterns.<locals>.excluded.<locals>.<genexpr>.<genexpr>  s#     6vT
  $$vs   '*N)r~   )r]   re  ignores    @r   r^   rb    s"      
CM4C6v666:s   "&)r~   parts)ra  rg  s   `r   excluded(filelist_from_patterns.<locals>.excluded  s5    //// 
CG::
 
 	
r   c                6    U R                  5       R                  $ r%   )statst_size)r>   s    r   <lambda>(filelist_from_patterns.<locals>.<lambda>  s    QVVX%5%5r   )key)r	   
expanduserr   is_filer   r[  is_absoluterh  r\   joinpathupdaterootglobrQ   sort)
patternsrg  basesizesort	filenamespatternra  rh  joined_patternri  s
    `        r   filelist_from_patternsr    s   '')DI>r>~<<>>MM$;;==DLD"&"2"2"4"4

12$**TV__e45 
DII++N;
 	
 " YI
 &/Fidx~Ti	F56	 Gs   ,E! E!c                h   [        U 5      n [        U5      n[        [        R                  R                  UR	                  5       U R	                  5       /5      5      nX R
                  :X  a  U $ U[         R                  " 5       :X  a  [        S5      nOIX!:X  a  [        5       nO9[        UR                  5      [        UR                  5      -
  n[        SU-  5      n[        X0R	                  5       R                  U5      -  5      n[        U5      [        [        U 5      5      :  a  U$ [        U 5      $ )N~z../)r	   r4   ra  
commonpathresolverv  homerN   rh  r\   relative_to)ra  rz  commonupru   rels         r   short_relative_pathr  	  s    :D:D"''$$dllndlln%EFGF	499;	#Y	V

Oc&,,//%!)_
b<<>--f55
6C
3x#c$i. 
4yr   )returnr   r%   )   )rM   r  )Unknown)Nr   F)r   )W
__future__r   r   r   r   r   r   r   loggingr   r4   os.pathrer  r,  r   collections.abcr   r   r   ior   	itertoolsr   pathlibr	   	getLoggerrA   setLevelDEBUGStreamHandlerch	Formatter	formattersetFormatter
addHandlercompileUNICODEVERBOSEr   r   r1   r5   r?   rB   rE   rH   rJ   rO   rT   rW   rg   ri   rw   r   r   r   r   r   r   r   r   r   r   r   r   r\   rQ   dictr   r   JSONEncoderr   r   r   r   r   r'  r6  r=  rD  rF  rL  ImportErrorrX  r  r  r$   r   r   <module>r     s   "         	  	 
   > >  ! 			7	#  m,	 	    "  ZZ	 JJ
 
 
$*+-+0I
6!3$"2*3%P !$T40 ""$** FFFT
	! ))
	K"J{  s   F+ +	F76F7