+
    WBi)                     <   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^RIH	t	 R t
 ! R R4      tR tRR lt ! R	 R
4      t ! R R4      t ! R R]4      t ! R R4      t ! R R]4      t]P(                  ! R]P*                  4      tR tR tR tRR ltR tR# )    )parseN)importlib_metadata_getc                 4    Wn         VP                  V n        V # N)__wrapped____name__)	decoratedfns   &&./usr/lib/python3.14/site-packages/mako/util.pyupdate_wrapperr      s    I    c                   2   a  ] tR t^t o R tR tR tRtV tR# )PluginLoaderc                     Wn         / V n        R # r   groupimpls)selfr   s   &&r   __init__PluginLoader.__init__   s    

r   c                T   WP                   9   d   V P                   V,          ! 4       # \        V P                  4       F?  pVP                  V8X  g   K  VP                  V P                   V&   VP	                  4       u # 	  ^ RIHp VP                  RV P                  : RV: 24      h)r   )
exceptionszCan't load plugin  )r   r   r   nameloadmakor   RuntimeException)r   r   implr   s   &&  r   r   PluginLoader.load   s    ::::d#%%*4::6DyyD #'99

4 yy{" 7
 	$)))-T:
 	
r   c                4   aa VV3R  lpW@P                   V&   R# )c                     < \        S4      p SP                  R 4      R,           F  p\        W4      p K  	  \        V S4      # ).:   NN)
__import__splitgetattr)modtoken
modulepathobjnames     r   r   #PluginLoader.register.<locals>.load,   sA    Z(C#))#.r22c) 33((r   N)r   )r   r   r)   r*   r   s   &&ff r   registerPluginLoader.register+   s    	)  

4r   r   N)	r   
__module____qualname____firstlineno__r   r   r,   __static_attributes____classdictcell____classdict__s   @r   r   r      s     
   r   r   c                    ^ p\         P                  P                  V 4      '       g$    V^,          p\         P                  ! V R4       KH  R#    T^8  d   h  KW  ; i)z,create and/or verify a filesystem directory.i  N)ospathexistsmakedirs)dir_triess   & r   verify_directoryr<   5   sS     EggnnT""	QJEKKe$ #	qy s    A 
Ac                 P    V f   V# \        V \        \        34      '       g   V .# V # r   )
isinstancelisttuple)xdefaults   &&r   to_listrC   C   s)    ya$''s
r   c                   4   a  ] tR t^Lt o RtRR ltR tRtV tR# )memoized_propertyz2A read-only @property that is only evaluated once.Nc                j    Wn         T;'       g    VP                  V n        VP                  V n        R # r   fget__doc__r   r   rH   docs   &&&r   r   memoized_property.__init__P   %    	**dllr   c                f    Vf   V # V P                  V4      ;VP                  V P                  &   pV# r   )rH   __dict__r   )r   objclsresults   &&& r   __get__memoized_property.__get__U   s0    ;K/3yy~=T]]#fr   rI   r   rH   r   	r   r.   r/   r0   rI   r   rS   r1   r2   r3   s   @r   rE   rE   L   s     <&
 r   rE   c                   4   a  ] tR t^\t o RtRR ltR tRtV tR# )memoized_instancemethodzDecorate a method memoize its return value.

Best applied to no-arg methods: memoization is not sensitive to
argument values, and will always return the same value even when
called with different arguments.

Nc                j    Wn         T;'       g    VP                  V n        VP                  V n        R # r   rG   rJ   s   &&&r   r    memoized_instancemethod.__init__f   rM   r   c                h   a a Sf   S # VV 3R lpS P                   Vn         S P                  Vn        V# )Nc                     <a SP                   ! S.V O5/ VB oV3R  lpSP                  Vn        SP                  Vn        VSP                  SP                  &   S# )c                     < S# r    )akwrR   s   *,r   memo>memoized_instancemethod.__get__.<locals>.oneshot.<locals>.memor   s    r   )rH   r   rI   rO   )argsr`   ra   rR   rP   r   s   *, @r   oneshot0memoized_instancemethod.__get__.<locals>.oneshoto   sO    YYs0T0R0F !MMDM<<DL*.CLL'Mr   )r   rI   )r   rP   rQ   rd   s   ff& r   rS   memoized_instancemethod.__get__k   s0    ;K		  ==,,r   rU   r   rV   r3   s   @r   rX   rX   \   s     &
 r   rX   c                   *   a  ] tR t^t o RtR tRtV tR# )SetLikeDictz0a dictionary that has some setlike methods on itc                >    \        R/ V B pVP                  V4       V# )zproduce a 'union' of this dict and another (at the key level).

values in the second dict take precedence over that of the firstr^   )rh   update)r   otherrA   s   && r   unionSetLikeDict.union   s!     $	r   r^   N)r   r.   r/   r0   rI   rl   r1   r2   r3   s   @r   rh   rh      s     : r   rh   c                   :   a  ] tR t^t o RtRR ltR tR tRtV t	R# )FastEncodingBufferzRa very rudimentary buffer that is faster than StringIO,
and supports unicode data.Nc                    \         P                  ! 4       V n        Wn        R V n        W n        V P                  P                  V n        R# ) N)collectionsdequedataencodingdelimerrorsappendwrite)r   ru   rw   s   &&&r   r   FastEncodingBuffer.__init__   s4    %%'	 
YY%%
r   c                p    \         P                  ! 4       V n        V P                  P                  V n        R # r   )rr   rs   rt   rx   ry   r   s   &r   truncateFastEncodingBuffer.truncate   s#    %%'	YY%%
r   c                   V P                   '       dJ   V P                  P                  V P                  4      P	                  V P                   V P
                  4      # V P                  P                  V P                  4      # r   )ru   rv   joinrt   encoderw   r|   s   &r   getvalueFastEncodingBuffer.getvalue   sU    ===::??499-44t{{  ::??499--r   )rt   rv   ru   rw   ry   )Nstrict)
r   r.   r/   r0   rI   r   r}   r   r1   r2   r3   s   @r   ro   ro      s     "&&. .r   ro   c                   `   a  ] tR t^t o Rt ! R R4      tRR ltR tR tR t	R t
R	 tR
tV tR# )LRUCachea  A dictionary-like object that stores a limited number of items,
discarding lesser used items periodically.

this is a rewrite of LRUCache from Myghty to use a periodic timestamp-based
paradigm so that synchronization is not really needed.  the size management
is inexact.
c                   ,   a  ] tR t^t o R tR tRtV tR# )LRUCache._Itemc                R    Wn         W n        \        P                  ! 4       V n        R # r   )keyvaluetimeitdefault_timer	timestampr   r   r   s   &&&r   r   LRUCache._Item.__init__   s    HJ#113DNr   c                ,    \        V P                  4      # r   )reprr   r|   s   &r   __repr__LRUCache._Item.__repr__   s    

##r   )r   r   r   N)r   r.   r/   r0   r   r   r1   r2   r3   s   @r   _Itemr      s     	4
	$ 	$r   r   c                    Wn         W n        R # r   capacity	threshold)r   r   r   s   &&&r   r   LRUCache.__init__   s     "r   c                x    \         P                  W4      p\        P                  ! 4       Vn        VP
                  # r   )dict__getitem__r   r   r   r   )r   r   items   && r   r   LRUCache.__getitem__   s,    *--/zzr   c                h    \         P                  V 4       Uu. uF  qP                  NK  	  up# u upi r   )r   valuesr   )r   is   & r   r   LRUCache.values   s'    !%T!23!2A!2333s   /c                *    W9   d	   W,          # W V&   V# r   r^   r   s   &&&r   
setdefaultLRUCache.setdefault   s    ;9S	r   c                    \         P                  W4      pVf)   V P                  W4      p\         P                  WV4       MW#n        V P                  4        R # r   )r   getr   __setitem__r   _manage_size)r   r   r   r   s   &&& r   r   LRUCache.__setitem__   sD    xx"<::c)DT-Jr   c                V   \        V 4      V P                  V P                  V P                  ,          ,           8  dZ   \        \        P                  V 4      \        P                  ! R 4      RR7      pWP                  R  F  p WP                   K  	  K  R#   \         d      K  i ; i)r   T)r   reverseN)
lenr   r   sortedr   r   operator
attrgetterr   KeyError)r   bytimer   s   &  r   r   LRUCache._manage_size   s    $i$--$--$..*HHHD!''4F
 }}/XX 0 I    s   BB('B(r   N)g      ?)r   r.   r/   r0   rI   r   r   r   r   r   r   r   r1   r2   r3   s   @r   r   r      s7     $ $#
4 r   r   z([ \t\f]* \# .* coding[=:][ \t]*([-\w.]+)c                   V P                  4       pV P                  ^ 4        V P                  4       pVP                  \        P
                  4      pV'       d   V\        \        P
                  4      R p\        P                  VP                  RR4      4      pV'       gR    \        VP                  RR4      4       V P                  4       p\        P                  VP                  RR4      4      pV'       d(   V'       d   \        R4      h V P                  V4       R# V'       d#   VP                  ^4      V P                  V4       #  V P                  V4       R#   \        \        3 d     Li ; i  T P                  T4       i ; i)a  Deduce the encoding of a Python source file (binary mode) from magic
comment.

It does this in the same way as the `Python interpreter`__

.. __: http://docs.python.org/ref/encodings.html

The ``fp`` argument should be a seekable file object in binary mode.
Nasciiignorez\python refuses to compile code with both a UTF8 byte-order-mark and a magic encoding commentutf_8)tellseekreadline
startswithcodecsBOM_UTF8r   _PYTHON_MAGIC_COMMENT_rematchdecoder   ImportErrorSyntaxErrorr   )fpposline1has_bommline2s   &     r   parse_encodingr      s;    '')CGGAJ"""6??3#foo.01E$**5<<+JKell7H56 ,22LL(3 !D   	 771: 	 
1  - 
 0 	sN   6E8 AE8 $E! ?<E8 <E8 E8 #E8 +E8 !E52E8 4E55E8 8Fc                   a  \        S P                  4       4      pVP                  4        RRP                  V 3R lV 4       4      ,           R,           # )zsrepr() a dictionary with the keys in order.

Used by the lexer unit test to compare parse trees based on strings.

{z, c              3   B   <"   T F  q: R SV,          : 2x  K  	  R# 5i)z: Nr^   ).0kds   & r   	<genexpr>#sorted_dict_repr.<locals>.<genexpr>"  s     >Aq!A$/s   })r?   keyssortr   )r   r   s   f r   sorted_dict_reprr     s<     >DIIK>>>>DDr   c                   \        V R4      '       d   R# RV n        \        RRRV P                  4      p\        V4      V n        V P                  P
                   F5  pVP                  R8X  d	   W n        K  VP                  R8X  g   K/  W n        K7  	  \        VP                  ^ ,          4      V n
        \        VP                  ^,          4      V n        \        VP                  ^,          4      V n        \        VP                  ^,          P                  ^ ,          4      V n        \        VP                  ^,          P                  ^ ,          P                  4      V n        \        VP                  ^,          P"                  4      V n        \        VP                  ^,          P"                  P&                  4      V n        \        VP                  ^,          P"                  P*                  P&                  4      V n        \        VP                  ^,          P"                  P.                  P&                  4      V n        \        VP                  ^,          P"                  P.                  P*                  P&                  4      V n        \        VP                  ^,          P"                  P&                  4      V n        \        VP                  ^,          P"                  P*                  P&                  4      V n        \        VP                  ^,          P"                  P*                  P*                  P&                  4      V n        \        VP                  ^,          P"                  P*                  P*                  P*                  P&                  4      V n        \        VP                  ^,          P"                  P&                  4      V n        \        VP                  ^,          P"                  P*                  P&                  4      V n        \        VP                  ^,          P"                  P*                  P*                  P&                  4      V n         \        VP                  ^,          P"                  P&                  4      V n!        \        VP                  ^,          P"                  PD                  ^ ,          P&                  4      V n#        \        VP                  ^,          P"                  P.                  P&                  4      V n$        \        VP                  ^,          P"                  P*                  P.                  P&                  4      V n%        \        VP                  ^,          P"                  P*                  P.                  PL                  P&                  4      V n'        \        VP                  ^,          P"                  P*                  P*                  P&                  4      V n(        \        VP                  ^	,          P"                  P&                  4      V n!        \        VP                  ^	,          P"                  PD                  ^ ,          P&                  4      V n#        \        VP                  ^
,          P"                  PR                  ^ ,          4      V n*        \        VP                  ^
,          P"                  PR                  ^,          4      V n+        \        VP                  ^
,          P"                  P*                  PR                  ^ ,          4      V n,        \        VP                  ^
,          P"                  P*                  PR                  ^,          4      V n-        \        VP                  ^,          P"                  PR                  ^ ,          4      V n.        \        VP                  ^,          P"                  PR                  ^,          4      V n/        \        VP                  ^,          P"                  PR                  ^,          4      V n0        \        VP                  ^,          P"                  PR                  ^,          4      V n1        \        VP                  ^,          P"                  PR                  ^ ,          4      V n2        \        VP                  ^,          P"                  PR                  ^,          4      V n3        R# )z\Attempt to restore the required classes to the _ast module if it
appears to be missing them
ASTNa  def foo(): pass
class Bar: pass
if False: pass
baz = 'mako'
1 + 2 - 3 * 4 / 5
6 // 7 % 8 << 9 >> 10
11 & 12 ^ 13 | 14
15 and 16 or 17
-baz + (not +18) - ~17
baz and 'foo' or 'bar'
(mako is baz == baz) is not baz != mako
mako > baz < mako >= baz <= mako
mako in baz not in makoz	<unknown>execr'   i   )4hasattrPyCF_ONLY_ASTcompiletypeModule__mro__r   r'   r   bodyFunctionDefClassDefIftargetsNamectxStorer   StropSubleftAddrightDivMultRShiftLShiftModFloorDivBitOrBitXorBitAndOrr   AndInvertNotoperandUAddUSubopsIsNotNotEqIsEqGtLtGtELtEInNotIn)_astr   rQ   s   &  r   restore__astr
  %  sc    tUD	 	#	A& q'DK{{""<<5 H\\U"H	 # AFF1IDODM166!9oDGQVVAY&&q)*DIaffQi''*../DJAFF1IOO$DHAFF1IOO&&'DHAFF1IOO((++,DHAFF1IOO)),,-DHQVVAY__**//223DIqvvay))*DKqvvay++../DKAFF1IOO((--001DH--2277::;DMaffQioo(()DJqvvay++../DKqvvay++00334DK166!9??%%&DGAFF1IOO**1-001DHqvvay,,//0DKAFF1IOO((..112DHQVVAY__))//77::;DIQVVAY__))..112DI166!9??%%&DGAFF1IOO**1-001DHaffRj&&**1-.DJaffRj&&**1-.DJ166":##((,,Q/0DG166":##((,,Q/0DG166":##''*+DG166":##''*+DGAFF2J$$((+,DHAFF2J$$((+,DH166":##''*+DGaffRj&&**1-.DJr   c                     \        W4      ;_uu_ 4       pVP                  4       uuR R R 4       #   + '       g   i     R # ; ir   )openread)r7   moder   s   && r   	read_filer  v  s'    	d		Rwwy 
			s	   /A 	c                     \        V R 4      p \        V4      pVP                  4       pV'       d   VP                  V4      pVVP	                  4        #   TP	                  4        i ; irb)r  r   r  r   close)r7   r   ru   rt   s   &   r   read_python_filer  {  sO    	dD	B!"%wwy;;x(D


s   5A A&r   r  )astr   r   rr   r   r6   rer   compatr   r   r   r<   rC   rE   rX   r   rh   ro   r   r   VERBOSEr   r   r   r
  r  r  r^   r   r   <module>r     s        	 	  *   <     F
$ 
. .2;t ;~ ::/ 
.bEN/b
	r   