
    }f3                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZ
d dlZd dlZd dlZd dlZd dlmZmZmZ d dlmZ d dlmZ d dlmZ  ej4                  d      Zej9                  ej:                          ej<                         Z ej@                  d      Z!ejE                  e!       ejG                  e        e$ ejJ                  d	            Z& ejJ                  d
ejN                  ejP                  z        Z) G d d      Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d7dZ5d Z6d8dZ7d Z8d Z9d Z:d Z;d Z<d Z=d9d Z>d:d!Z?d" Z@d8d#ZAd$ ZBd8d%ZCeDeEeFffd&ZGd' ZH G d( d)ej                        ZJd* ZKd+ ZLd, ZMd8d-ZNd;d.ZOd/ ZPd0 ZQd1 ZR	 d dlSZSd2 ZTd4 ZVd<d5ZWd=d6ZXy# eU$ r d3 ZTY w xY w)>    )annotationsN)IterableMappingMutableSequence)StringIO)zip_longest)Pathtatsuz%(message)s.a0  
    ( \\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                      e Zd ZddZd Zy)AsJSONMixinNc                f    dt        |       j                  it        | j                         |      S )N	__class__seen)type__name__asjson_pubdict)selfr   s     Q/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/util/_common.py__json__zAsJSONMixin.__json__/   s0    d,,
T]]_40
 	
    c                    t        |       j                         D ci c]  \  }}|j                  d      s|| c}}S c c}}w N_)varsitems
startswith)r   namevalues      r   r   zAsJSONMixin._pubdict5   sE      $Dz//1
e??3' %K
 	
 
s   ?N)r   
__module____qualname__r   r    r   r   r   r   .   s    

r   r   c                 h    dd l } | j                  x}r|S t        | j                        j                  S Nr   )__main____package__r	   __file__r    )mainpackages     r   program_namer-   =   s0    """w"###r   c                 (    t         j                  dk(  S )Nposix)osr    r%   r   r   is_posixr1   D   s    77gr   c                     t               5 }||d<   d|d<   t        | i | |j                         cd d d        S # 1 sw Y   y xY w)Nfile end)r   printgetvalue)argskwargsfs      r   _printsr;   H   sF    	 qvutvzz|	  s	   %:Ac                 @    t         j                  t        | i |       y r"   )loggerinfor;   r8   r9   s     r   r>   r>   P   s    
KK(()r   c                 @    t         j                  t        | i |       y r"   )r=   debugr;   r?   s     r   rA   rA   T       
LL$)&)*r   c                 @    t         j                  t        | i |       y r"   )r=   warningr;   r?   s     r   rD   rD   X   s    
NN7D+F+,r   c                 @    t         j                  t        | i |       y r"   )r=   errorr;   r?   s     r   rF   rF   \   rB   r   c                 ,    t        |       dk(  r| d   S | S N   r   )len)r8   s    r   identityrK   `   s    
4yA~AwKr   c                $    t        |       t        u S r"   )r   listos    r   is_listrP   f   s    7d?r   c                4    | g S t        | t              r| S | gS r"   )
isinstancerM   rN   s    r   to_listrS   j   s"    y		At	s
r   c                    t        t        |       j                        dk(  xrK t        | t              xr9 t        | d      xr+ t        | d      xr t        d t        | dd      D              S )NrI   _asdict_fieldsc              3  <   K   | ]  }t        |t                y wr"   )rR   str).0r:   s     r   	<genexpr>z is_namedtuple.<locals>.<genexpr>y   s     Hq
1c"Hs   r%   )rJ   r   	__bases__rR   tuplehasattrallgetattrobjs    r   is_namedtuplerb   s   so    DI A% 	IsE"	IC#	I C#	I HGCB,GHHr   c                ^    t        | t              rt        |       dk(  rt        | d         S | S rH   )rR   rM   rJ   simplify_list)xs    r   rd   rd   }   s*    !Ts1v{QqT""Hr   c                    d }xs |t        dd|z   t        |       z
        }| j                  fdt        |      D               y )Nc                      y r"   r%   r%   r   r   _nullzextend_list.<locals>._null   s    r   r   rI   c              3  ,   K   | ]  }          y wr"   r%   )rY   r   defaults     r   rZ   zextend_list.<locals>.<genexpr>   s     /1WY/s   )maxrJ   extendrange)re   nrj   rh   missings     `  r   extend_listrp      sB     G!QUSV^$GHH/g//r   c           	     z     t              t         fdt        dt               z   z
        D              S )Nc              3  4   K   | ]  }||z    k(    y wr"   r%   )rY   ilstrn   sublsts     r   rZ   z#contains_sublist.<locals>.<genexpr>   s      H1vQA&Hs   rI   )rJ   anyrm   )rt   ru   rn   s   ``@r   contains_sublistrw      s/    FAHa#c(lQ6F0GHHHr   c                L    t        j                  t        j                  | g       S r"   )	functoolsreduceoperatoriadd)listss    r   
join_listsr~      s    HMM5"55r   c              #  n   K   t        | t              s|  y | D ]  }t        |      E d {     y 7 wr"   )rR   r   flatten)rO   items     r   r   r      s7     a) !4=  ! s   )535c                z    t               }g }| D ])  }||vs|j                  |       |j                  |       + |S r"   )setappendadd)seqr   resultre   s       r   compress_seqr      sB    5DF D=MM!HHQK Mr   c                4    d }t         j                  ||       S )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                L    t        j                  | j                  d      d      S )Nr   zunicode-escape)codecsdecodegroupmatchs    r   decode_matchz"eval_escapes.<locals>.decode_match   s    }}U[[^-=>>r   )ESCAPE_SEQUENCE_REsub)sr   s     r   eval_escapesr      s    ? !!,22r   c                d    t        | t              xr t        | t        t        z  t        z         S r"   )rR   r   rX   bytes	bytearray)r!   s    r   isiterr      s0    eX& zsU{Y&0 , r   c                   | sy| j                  |      j                         }t        |       }|}|dd D ]6  }|j                         }|st	        |t        |      t        |      z
        }8 |d   j                         g|dd D cg c]  }||d j                          c}z   }d}|t        |      k  r||   s|dz  }|t        |      k  r||   sdj                  ||d       S c c}w )z
    Trim text of common, leading whitespace.

    Based on the trim algorithm of PEP 257:
        http://www.python.org/dev/peps/pep-0257/
    r4   rI   Nr   
)
expandtabs
splitlinesrJ   lstripminstriprstripjoin)	texttabwidthlines	maxindentindentlinestrippedtrimmedrs   s	            r   trimr      s     OOH%002ED	IFab	 <;;=TS]!:;F< Qx~~ +09$#'VW$ G 	
A
c'l
71:	Q c'l
71:99WQR[!!$s   C)c                    | yt        |       } |dk\  r0d|z  |z  dj                  fd| j                         D              } | S )z1Indent the given block of text by indent*4 spacesr4   r    r   c              3  D   K   | ]  }|z   j                           y wr"   )r   )rY   tsindents     r   rZ   zindent.<locals>.<genexpr>   s     KA'A+--/Ks    )rX   r   r   )r   r   
multiplierr   s      @r   r   r      sJ    |t9D{
"V+yyK9JKKKr   c                    |r| |z  S dS )Nr4   r%   )fmtvaluess     r   	format_ifr      s    !3<)r)r   c                    | | S |S r"   r%   )r!   rj   s     r   notnoner      s    %5272r   c                     dj                  d t        j                  j                         j                         d d D              S )Nr   c              3  &   K   | ]	  }d |z    yw)z%2.2dNr%   )rY   r   s     r   rZ   ztimestamp.<locals>.<genexpr>   s      !s   )r   datetimeutcnowutctimetupler%   r   r   	timestampr      s?    88 %..557DDFsK  r   c           	     :   | %t        | t        t        z  t        z  t        z        r| S |t               }n0t        |       |v r#t        |       j                   dt        |        S t        | t        t        z        st        |       r|j                  t        |              	 t        | t        j                  t        j                  z        rM| j                   j                   dt#        t        |             j%                         dd   |t        |       hz  }S t'        | d      r!| j)                  |      |t        |       hz  }S t+        |       r*t-        | j/                         |      |t        |       hz  }S t        | t              r<i }| j1                         D ]  \  }}	 t-        ||      ||<    ||t        |       hz  }S t        |       r*| D cg c]  }t-        ||       c}|t        |       hz  }S t        | t6        j8                        r$t-        | j:                        |t        |       hz  }S t=        |       |t        |       hz  }S # t2        $ r! t5        dt        |      t        |              w xY wc c}w # |t        |       hz  }w xY w)N@z@0x   r   r   zUnhashable key?)rR   intfloatrX   boolr   idr   r   r   r   r   r   weakrefReferenceType	ProxyTyper   hexupperr]   r   rb   r   rU   r   	TypeErrorrA   enumEnumr!   repr)ra   r   r   kves         r   r   r      sK   
{jcEkC&7$&>?
|u	CDs)$$%Qr#wi00#w,-Cc70073D3DDEmm,,-SRW1C1C1Eab1I0JK. 	C	- S*%<<T<** 	C	) 3#++-d3& 	C	% W%F		 1 &qt 4F1I  	C	 C[256QF14(6 	C	 TYY'#))$ 	C		 9 	C	 ! +T!Wc!f=
 7 	C	sU   $A(J	 J	 	%J	 >(J	 'I7J	 
J	 J-J	 ?.J	 =
J	 *JJ	 	Jc                    t        | t              rN| j                         D ci c]2  \  }}|j                  d      s||st        ||      s|t	        |      4 c}}S t        |       r| D cg c]  }t	        |       c}S | S c c}}w c c}w r   )rR   r   r   r   minjsonr   )ra   typesfilteredr    r!   r   s        r   r   r     s    #w  #yy{
eOOC(%*UM"B '%. 
 	
 
$'(q
((

 )s   7B.Bc                   t        | t              r1| j                         D ci c]  \  }}|dvr|t        |       c}}S t        | t        j
                  t        j                  z        ryt        | t              r| j                  d      ryt        |       r| D cg c]  }t        |       c}S | S c c}}w c c}w )N>   r   	parseinfoz@refr   )
rR   r   r   	plainjsonr   r   r   rX   r   r   )ra   r    r!   r   s       r   r   r   ,  s    #w  #yy{
e55 )E""
 	

 
C..1B1BB	C	C	#.."5	&)*	!**

 +s   B6B<c                      e Zd ZdZd Zy)FallbackJSONEncoderzDA JSON Encoder that falls back to repr() for non-JSON-aware objects.c                    t        |      S r"   )r   )r   rO   s     r   rj   zFallbackJSONEncoder.default@  s    Awr   N)r   r#   r$   __doc__rj   r%   r   r   r   r   =  s
    Nr   r   c                L    t        j                  t        |       dt              S )Nr   )r   cls)jsondumpsr   r   r`   s    r   asjsonsr   D  s    ::fSk!1DEEr   c                |    | j                         D cg c]  \  }} |||      s| }}}|D ]  }| |=  yc c}}w )z+Remove all items x where predicate(x, d[x])N)r   )d	predicater   r   keyss        r   
prune_dictr   H  sD     '')7$!QyAA7D7 aD 8s   88c                :    t        j                  |       r| dz   S | S r   )keyword	iskeyword)r    s    r   	safe_namer   P  s    czKr   c                2    t        t        |       g|z  d|iS )N	fillvalue)r   iter)iterablesizer   s      r   chunksr   V  s    h(4/E9EEr   c                   dd l } G fdd|j                        }|j                  d| d      }|j                  } |ddd	d
        |dd|dd        |ddd
dd        |ddd
d        |ddt        d d        |dddd d!"        |d#d$d d%d &       |j                         }	  | |j                  |j                  |j                  |j                  |j                   |j                  '      S # t        $ r Y y w xY w)(Nr   c                      e Zd Zd fd	Zy)generic_main.<locals>.ListRulesNc                    t        d       j                         D ]  }t        |        t                t        j                  d       y )NzRules:r   )r6   	rule_listsysexit)r   parser	namespacer   option_stringrparser_classs         r   __call__z(generic_main.<locals>.ListRules.__call__^  s9    (O!++- aGHHQKr   r"   )r   r#   r$   r   )r   s   r   	ListRulesr   ]  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   rj   r   r3   FILEz1the input file to parse or '-' for standard input?-)metavarr   r  rj   	startrule	STARTRULEzthe start rule for parsing)r  r  r   rj   )starttrace
whitespace	nameguardcolorize)argparseActionArgumentParseradd_argumentrX   
parse_argsr3   r  r  r  r  colorKeyboardInterrupt)custom_mainr   r    r  r   argpaddargr8   s    `      r   generic_mainr  Z  sH   HOO  ""1CD6/K"LDF
B	 & . i3M ' @ ) ??D
II..**+++ZZ
 	
  s   -A
C8 8	DDc                B     t        j                          fd       }|S )Nc                     t        j                  dt               d}t        j                  |j	                  j
                        t        d        | i |S )Nrj   )categoryzCall to deprecated function {}.r   )r  
stacklevel)warningsfilterwarningsDeprecationWarningwarnformatr   )r8   r9   msgfuns      r   wrapperzdeprecated.<locals>.wrapper  sL    	4FG/JJs||$/Aa	
 D#F##r   )ry   wraps)r$  r%  s   ` r   
deprecatedr'    s%    __S$ $ Nr   c                f    | syt        |       }t        |      }|D ]  }|}||t        |      f} |S )Nr%   )r   next)elementsitexprer   ops        r   
left_assocr.    sE    	hBHE &UDH%& Lr   c                6    | syfd t        |             S )Nr%   c                j    t        |       }	 t        |       }|| |       fS # t        $ r |cY S w xY wr"   )r)  StopIteration)r+  leftr-  assocs      r   r3  zright_assoc.<locals>.assoc  sC    Bx	)bB eBi((  	K	s   $ 22)r   )r*  r3  s    @r   right_assocr4    s    ) h  r   c                     t        j                  t        j                               } | j	                         j
                  S r"   )psutilProcessr0   getpidmemory_inforss)processs    r   
memory_user<    s+    ..-""$(((r   c                      yr'   r%   r%   r   r   r<  r<    s    r   c                
   t        | t              rt        |       } dD ]9  }	 t        |       j                  |      5 }|j	                         cd d d        c S  t        d|  d      # 1 sw Y   nxY wX# t
        $ r Y cw xY w)N)zutf-16zutf-8zlatin-1cp1252ascii)encodingzcannot find the encoding for '')rR   r	   rX   openreadUnicodeErrorUnicodeDecodeError)filenamer   r:   s      r   try_readrH    s    (D!x=> 	h$$a$0  Avvx    =hZqI
JJ	      		s(   A6A)	A6)A2	.A66	BBc                v   t        |xs d      j                         }t               }| xs g D ]  }||z  }|j                         r|j	                  |       *|j                         r|dz  }|j                         r|j                  dd  n|j                  }t         t               j                  |       }|j                  d t        |j                        j                  |      D                t        |      }fd}	r|D cg c]  } |	|      r| }}|r|j                  d        |S c c}w )Nr   z/*rI   c              3  B   K   | ]  }|j                         r|  y wr"   )is_dir)rY   ps     r   rZ   z)filelist_from_patterns.<locals>.<genexpr>  s      
188:A
s   c                l     t         fdD              ryt        fd j                  D              S )Nc              3  @   K   | ]  }j                  |        y wr"   r   )rY   expaths     r   rZ   z;filelist_from_patterns.<locals>.excluded.<locals>.<genexpr>  s     /"tzz"~/s   Tc              3  H   K   | ]  t        fd D                yw)c              3  R   K   | ]  }t              j                  |         y wr"   )r	   r   )rY   rO  parts     r   rZ   zEfilelist_from_patterns.<locals>.excluded.<locals>.<genexpr>.<genexpr>  s      6T
  $6s   $'N)rv   )rY   rS  ignores    @r   rZ   z;filelist_from_patterns.<locals>.excluded.<locals>.<genexpr>   s!      
;?C6v66
s   ")rv   parts)rP  rT  s   `r   excludedz(filelist_from_patterns.<locals>.excluded  s2    /// 
CG::
 
 	
r   c                6    | j                         j                  S r"   )statst_size)r:   s    r   <lambda>z(filelist_from_patterns.<locals>.<lambda>  s    QVVX%5%5 r   )key)r	   
expanduserr   is_filer   rK  is_absoluterU  rX   joinpathupdaterootglobrM   sort)
patternsrT  basesizesort	filenamespatternrP  rU  joined_patternrV  s
    `        r   filelist_from_patternsrj    s   '')DI>r 
g~<<>MM$;;=DLD"&"2"2"4

12$**_TV__e45 
DII++N;
 	

 YI
 &/Fdx~TF	F56	 Gs   D6D6c                d   t        |       } t        |      }t        t        j                  j                  |j	                         | j	                         g            }|| j
                  k(  r| S |t        j                         k(  rt        d      }nI||k(  rt               }n9t        |j                        t        |j                        z
  }t        d|z        }t        || j	                         j                  |      z        }t        |      t        t        |             k  r|S t        |       S )N~z../)r	   r0   rP  
commonpathresolvera  homerJ   rU  rX   relative_to)rP  re  commonuprn   rels         r   short_relative_pathrt    s    :D:D"''$$dllndlln%EFGF	499;	#Y	4V

Oc&,,//%!)_
b4<<>--f55
6C
3x#c$i. 
4yr   )returnr   r"   )   )rI   rv  )Unknown)Nr   F)r   )Y
__future__r   r   r   r   ry   r   r   loggingr{   r0   os.pathrer   r  r   collections.abcr   r   r   ior   	itertoolsr   pathlibr	   	getLoggerr=   setLevelDEBUGStreamHandlerch	Formatter	formattersetFormatter
addHandlerr   compileRETYPEUNICODEVERBOSEr   r   r-   r1   r;   r>   rA   rD   rF   rK   rP   rS   rb   rd   rp   rw   r~   r   r   r   r   r   r   r   r   r   r   rX   rM   dictr   r   JSONEncoderr   r   r   r   r   r  r'  r.  r4  r6  r<  ImportErrorrH  rj  rt  r%   r   r   <module>r     s   "         	  	 
   > >  ! 			7	#  WGm,	 	    "  
jbjjo	  RZZ	 JJ
 
 
$*+-+0I
6!3$"2*3%P !$T40 ""$** FFFT
	! ))
	K"J{  s   %F8 8GG