
    +h)                     6   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m	Z	 d Z
 G d d      Zd Zdd	Z G d
 d      Z G d d      Z G d de      Z G d d      Z G d de      Z ej(                  dej*                        Zd Zd Zd ZddZd Zy)    )parseN   )importlib_metadata_getc                 6    || _         |j                  | _        | S N)__wrapped____name__)	decoratedfns     </var/www/html/venv/lib/python3.12/site-packages/mako/util.pyupdate_wrapperr      s    II    c                       e Zd Zd Zd Zd Zy)PluginLoaderc                      || _         i | _        y r   )groupimpls)selfr   s     r   __init__zPluginLoader.__init__   s    

r   c                 <   || j                   v r | j                   |          S t        | j                        D ]<  }|j                  |k(  s|j                  | j                   |<   |j	                         c S  ddlm} |j                  d| j                  d|      )Nr   )
exceptionszCan't load plugin  )r   r   r   nameloadmakor   RuntimeException)r   r   implr   s       r   r   zPluginLoader.load   s    4::#4::d#%%*4::6 	#DyyD #'99

4 yy{"	#
 	$)))-T:
 	
r   c                 2    fd}|| j                   |<   y )Nc                  |    t              } j                  d      dd  D ]  }t        | |      }  t        |       S )N.r   )
__import__splitgetattr)modtoken
modulepathobjnames     r   r   z#PluginLoader.register.<locals>.load,   sG    Z(C#))#.qr2 *c5)*3((r   )r   )r   r   r&   r'   r   s     `` r   registerzPluginLoader.register+   s    	)  

4r   N)r	   
__module____qualname__r   r   r(    r   r   r   r      s    
 r   r   c                     d}t         j                  j                  |       s=	 |dz  }t        j                  | d       t         j                  j                  |       s<yy#  |dkD  r Y ,xY w)z,create and/or verify a filesystem directory.r   r   i     N)ospathexistsmakedirs)dir_triess     r   verify_directoryr4   5   s]     EggnnT"	QJEKKe$ ggnnT"	qy s   A   A*c                 @    | |S t        | t        t        f      s| gS | S r   )
isinstancelisttuple)xdefaults     r   to_listr;   C   s&    ya$'s
r   c                       e Zd ZdZddZd Zy)memoized_propertyz2A read-only @property that is only evaluated once.Nc                 ^    || _         |xs |j                  | _        |j                  | _        y r   fget__doc__r	   r   r@   docs      r   r   zmemoized_property.__init__P   $    	*dllr   c                 b    || S | j                  |      x|j                  | j                  <   }|S r   )r@   __dict__r	   )r   objclsresults       r   __get__zmemoized_property.__get__U   s0    ;K/3yy~=T]]#fr   r   r	   r)   r*   rA   r   rJ   r+   r   r   r=   r=   L   s    <&
r   r=   c                       e Zd ZdZddZd Zy)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                 ^    || _         |xs |j                  | _        |j                  | _        y r   r?   rB   s      r   r   z memoized_instancemethod.__init__f   rD   r   c                 b      S  fd} j                   |_          j                  |_        |S )Nc                       j                   g| i |fd}j                  |_        j                  |_        |j                  j                  <   S )Nc                      S r   r+   )akwrI   s     r   memoz>memoized_instancemethod.__get__.<locals>.oneshot.<locals>.memor   s    r   )r@   r	   rA   rF   )argsrS   rT   rI   rG   r   s      @r   oneshotz0memoized_instancemethod.__get__.<locals>.oneshoto   sQ    TYYs0T0R0F !MMDM<<DL*.CLL'Mr   )r	   rA   )r   rG   rH   rV   s   ``  r   rJ   zmemoized_instancemethod.__get__k   s0    ;K		  ==,,r   r   rK   r+   r   r   rM   rM   \   s    &
r   rM   c                       e Zd ZdZd Zy)SetLikeDictz0a dictionary that has some setlike methods on itc                 >    t        di | }|j                  |       |S )zproduce a 'union' of this dict and another (at the key level).

        values in the second dict take precedence over that of the firstr+   )rX   update)r   otherr9   s      r   unionzSetLikeDict.union   s!     $	r   N)r	   r)   r*   rA   r\   r+   r   r   rX   rX      s
    :r   rX   c                   $    e Zd ZdZddZd Zd Zy)FastEncodingBufferzVa very rudimentary buffer that is faster than StringIO,
    and supports unicode data.Nc                     t        j                         | _        || _        d| _        || _        | j                  j                  | _        y )N )collectionsdequedataencodingdelimerrorsappendwrite)r   rd   rf   s      r   r   zFastEncodingBuffer.__init__   s8    %%'	 
YY%%
r   c                 l    t        j                         | _        | j                  j                  | _        y r   )ra   rb   rc   rg   rh   r   s    r   truncatezFastEncodingBuffer.truncate   s#    %%'	YY%%
r   c                     | j                   rI| j                  j                  | j                        j	                  | j                   | j
                        S | j                  j                  | j                        S r   )rd   re   joinrc   encoderf   rj   s    r   getvaluezFastEncodingBuffer.getvalue   sS    ==::??499-44t{{  ::??499--r   )Nstrict)r	   r)   r*   rA   r   rk   ro   r+   r   r   r^   r^      s    "&&.r   r^   c                   J    e Zd ZdZ G d d      ZddZd Zd Zd Zd Z	d	 Z
y
)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                       e Zd Zd Zd Zy)LRUCache._Itemc                 R    || _         || _        t        j                         | _        y r   )keyvaluetimeitdefault_timer	timestampr   rv   rw   s      r   r   zLRUCache._Item.__init__   s     DHDJ#113DNr   c                 ,    t        | j                        S r   )reprrw   rj   s    r   __repr__zLRUCache._Item.__repr__   s    

##r   N)r	   r)   r*   r   r~   r+   r   r   _Itemrt      s    	4
	$r   r   c                      || _         || _        y r   )capacity	threshold)r   r   r   s      r   r   zLRUCache.__init__   s     "r   c                 x    t         j                  | |      }t        j                         |_        |j
                  S r   )dict__getitem__rx   ry   rz   rw   )r   rv   items      r   r   zLRUCache.__getitem__   s.    c*--/zzr   c                 f    t         j                  |       D cg c]  }|j                   c}S c c}w r   )r   valuesrw   )r   is     r   r   zLRUCache.values   s#    !%T!23A333s   .c                 "    || v r| |   S || |<   |S r   r+   r{   s      r   
setdefaultzLRUCache.setdefault   s!    $;9S	r   c                     t         j                  | |      }|*| j                  ||      }t         j                  | ||       n||_        | j                          y r   )r   getr   __setitem__rw   _manage_size)r   rv   rw   r   s       r   r   zLRUCache.__setitem__   sL    xxc"<::c5)DT3-DJr   c                    t        |       | j                  | j                  | j                  z  z   kD  rt        t        j                  |       t        j                  d      d      }|| j                  d  D ]  }	 | |j                  =  t        |       | j                  | j                  | j                  z  z   kD  ry y # t        $ r Y  Aw xY w)Nrz   T)rv   reverse)
lenr   r   sortedr   r   operator
attrgetterrv   KeyError)r   bytimer   s      r   r   zLRUCache._manage_size   s    $i$--$--$..*HHHD!''4F
 t}}/ TXX $i$--$--$..*HHH    s   :B>>	C
CN)g      ?)r	   r)   r*   rA   r   r   r   r   r   r   r   r+   r   r   rr   rr      s/    $ $#
4r   rr   z([ \t\f]* \# .* coding[=:][ \t]*([-\w.]+)c                    | j                         }| j                  d       	 | j                         }|j                  t        j
                        }|r|t        t        j
                        d }t        j                  |j                  dd            }|sQ	 t        |j                  dd             | j                         }t        j                  |j                  dd            }|r |rt        d      	 | j                  |       y|r"|j                  d      | j                  |       S 	 | j                  |       y# t        t        f$ r Y jw xY w# | j                  |       w xY w)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.
    r   Nasciiignorez\python refuses to compile code with both a UTF8 byte-order-mark and a magic encoding commentutf_8r   )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 	s7   A4E E 3AE 
E EE EE E)c                      t         j                               }|j                          ddj                   fd|D              z   dz   S )z{repr() a dictionary with the keys in order.

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

    {z, c              3   2   K   | ]  }|d |     yw)z: Nr+   ).0kds     r   	<genexpr>z#sorted_dict_repr.<locals>.<genexpr>"  s     >Aq!A$/>s   })r7   keyssortrm   )r   r   s   ` r   sorted_dict_reprr     s<     >DIIK>>>>DDr   c                    t        | d      ryd| _        t        ddd| j                        }t        |      | _        | j                  j
                  D ]0  }|j                  dk(  r|| _        |j                  dk(  s*|| _        2 t        |j                  d         | _
        t        |j                  d	         | _        t        |j                  d
         | _        t        |j                  d   j                  d         | _        t        |j                  d   j                  d   j                        | _        t        |j                  d   j"                        | _        t        |j                  d   j"                  j&                        | _        t        |j                  d   j"                  j*                  j&                        | _        t        |j                  d   j"                  j.                  j&                        | _        t        |j                  d   j"                  j.                  j*                  j&                        | _        t        |j                  d   j"                  j&                        | _        t        |j                  d   j"                  j*                  j&                        | _        t        |j                  d   j"                  j*                  j*                  j&                        | _        t        |j                  d   j"                  j*                  j*                  j*                  j&                        | _        t        |j                  d   j"                  j&                        | _        t        |j                  d   j"                  j*                  j&                        | _        t        |j                  d   j"                  j*                  j*                  j&                        | _         t        |j                  d   j"                  j&                        | _!        t        |j                  d   j"                  jD                  d   j&                        | _#        t        |j                  d   j"                  j.                  j&                        | _$        t        |j                  d   j"                  j*                  j.                  j&                        | _%        t        |j                  d   j"                  j*                  j.                  jL                  j&                        | _'        t        |j                  d   j"                  j*                  j*                  j&                        | _(        t        |j                  d   j"                  j&                        | _!        t        |j                  d   j"                  jD                  d   j&                        | _#        t        |j                  d   j"                  jR                  d         | _*        t        |j                  d   j"                  jR                  d	         | _+        t        |j                  d   j"                  j*                  jR                  d         | _,        t        |j                  d   j"                  j*                  jR                  d	         | _-        t        |j                  d   j"                  jR                  d         | _.        t        |j                  d   j"                  jR                  d	         | _/        t        |j                  d   j"                  jR                  d
         | _0        t        |j                  d   j"                  jR                  d         | _1        t        |j                  d   j"                  jR                  d         | _2        t        |j                  d   j"                  jR                  d	         | _3        y)zdAttempt to restore the required classes to the _ast module if it
    appears to be missing them
    ASTNi   a  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$   r   r            r-            	   
         )4hasattrPyCF_ONLY_ASTcompiletypeModule__mro__r	   r$   r   bodyFunctionDefClassDefIftargetsNamectxStorerw   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   rH   s      r   restore__astr   %  si    tUD	 	#	A& q'DK{{"" <<5 DH\\U"DH	 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                 f    t        | |      5 }|j                         cd d d        S # 1 sw Y   y xY wr   )openread)r/   moder   s      r   	read_filer   v  s,    	dD	 Rwwy  s   '0c                     t        | d      }	 t        |      }|j                         }|r|j                  |      }||j	                          S # |j	                          w xY w)Nrb)r   r   r   r   close)r/   r   rd   rc   s       r   read_python_filer   {  sO    	dD	B!"%wwy;;x(D


s   /A A r   )r   )astr   r   ra   r   r.   rerx   compatr   r   r   r4   r;   r=   rM   r   rX   r^   rr   r   VERBOSEr   r   r   r   r   r   r+   r   r   <module>r     s        	 	  *   <     F
$ 
. .2;t ;~ &2::/ 
.bEN/b
	r   