Ë
    ^ãjð  ã                   ó�   — d Z ddlZddlmZ ddlmZ  G d„ d«      Z G d„ d«      Z G d	„ d
e«      Z G d„ d«      Z G d„ de«      Z	y)zjutilities for analyzing expressions and blocks of Python
code, as well as generating Python from AST nodesé    N)Ú
exceptions)Úpyparserc                   ó   — e Zd ZdZdd„Zy)Ú
PythonCodez<represents information about a string containing Python codec                 ól  — || _         t        «       | _        t        «       | _        t	        |t
        «      rV|j                  «       }||d t        |«      t        |«      z
   j                  d«      z  }t        j                  |dfd|i|¤Ž}n|}t        j                  | fi |¤Ž}|j                  |«       y )Nú
ÚexecÚlineno_offset)ÚcodeÚsetÚdeclared_identifiersÚundeclared_identifiersÚ
isinstanceÚstrÚlstripÚlenÚcountr   ÚparseÚFindIdentifiersÚvisit)Úselfr   r
   Úexception_kwargsÚstrippedÚexprÚfs          úJ/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/mako/ast.pyÚ__init__zPythonCode.__init__   s´   € ØˆŒ	ô %(£EˆÔ!ô '*£eˆÔ#ô �dœCÔ Ø—{‘{“}ˆHð
 ˜TÐ"=¤C¨£I´°H³Ñ$=Ð>×DÑDÀTÓJÑJˆMä—>‘>ØØñð ,ðð #ñ	‰Dð ˆDä×$Ñ$ TÑ>Ð-=Ñ>ˆØ	�‰��ó    N)r   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s
   „ ÙFô'r   r   c                   ó   — e Zd ZdZd„ Zy)ÚArgumentListzBparses a fragment of code as a comma-separated list of expressionsc                 ój  — g | _         g | _        t        «       | _        t        «       | _        t        |t        «      rIt        j                  d|«      rt        j                  d|«      s|dz  }t        j                  |dfi |¤Ž}n|}t        j                  | t        fi |¤Ž}|j                  |«       y )Nz\Sz,\s*$ú,r	   )ÚcodeargsÚargsr   r   r   r   r   ÚreÚmatchr   r   Ú	FindTupler   r   )r   r   r   r   r   s        r   r   zArgumentList.__init__@   s’   € ØˆŒØˆŒ	Ü$'£EˆÔ!Ü&)£eˆÔ#Ü�dœCÔ Ü�x‰x˜˜tÔ$¬R¯X©X°hÀÔ-Eð ˜‘�Ü—>‘> $¨ÑCÐ2BÑC‰DàˆDä×Ñ˜t¤ZÑDÐ3CÑDˆØ	�‰��r   Nr   r$   r   r   r&   r&   =   s
   „ ÙLór   r&   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚPythonFragmentz­extends PythonCode to provide identifier lookups in partial control
    statements

    e.g.::

        for x in 5:
        elif y==9:
        except (MyException, e):

    c                 óî  •— t        j                  d|j                  «       t         j                  «      }|st	        j
                  d|z  fi |¤Ž‚|j                  d«      r|d |j                  d«       }|j                  dd«      \  }}d}|dv r|dz   }nN|d	k(  r|d
z   }nC|dv rd|z   dz   }d}n4|dk(  rd|z   dz   }d}n$|dk(  r|dz   }nt	        j
                  d|z  fi |¤Ž‚t        ‰| �$  |fd|i|¤Ž y )Nz^(\w+)(?:\s+(.*?))?:\s*(#|$)z0Fragment '%s' is not a partial control statementé   é   é   r   )ÚforÚifÚwhileÚpassÚtryzpass
except:pass)ÚelifÚelsezif False:pass
éÿÿÿÿÚexceptz	try:pass
Úwithz!Unsupported control keyword: '%s'r
   )
r+   r,   ÚstripÚSr   ÚCompileExceptionÚgroupÚstartÚsuperr   )r   r   r   ÚmÚkeywordr   r
   Ú	__class__s          €r   r   zPythonFragment.__init__^   s-  ø€ Ü�H‰HÐ4°d·j±j³lÄBÇDÁDÓIˆÙÜ×-Ñ-ØBÀTÑIñà"ñð ð �7‰7�1Œ:Ø˜˜!Ÿ'™' !›*Ð%ˆDØŸ™  1›‰ˆ�ð
 ˆàÐ,Ñ,Ø˜&‘=‰DØ˜ÒØÐ-Ñ-‰DØÐ(Ñ(Ø$ tÑ+¨fÑ4ˆDØ‰MØ˜Ò Ø $Ñ&¨Ñ/ˆDØ‰MØ˜ÒØ˜&‘=‰Dä×-Ñ-Ø3°gÑ=ñà"ñð ô 	‰Ñ˜ÑO¨]ÐOÐ>NÓOr   ©r    r!   r"   r#   r   Ú__classcell__©rF   s   @r   r/   r/   R   s   ø„ ñ	÷!Pð !Pr   r/   c                   ó0   — e Zd ZdZdd„Zdd„Zed„ «       Zy)ÚFunctionDeclzfunction declarationc                 óB  — || _         t        j                  |dfi |¤Ž}t        j                  | fi |¤Ž}|j	                  |«       t        | d«      st        j                  d|z  fi |¤Ž‚|s3| j                  r&t        j                  d| j                  d   z  fi |¤Ž‚y y )Nr	   Úfuncnamez'Code '%s' is not a function declarationz('**%s' keyword argument not allowed herer;   )
r   r   r   Ú	ParseFuncr   Úhasattrr   r@   ÚkwargsÚ
kwargnames)r   r   Úallow_kwargsr   r   r   s         r   r   zFunctionDecl.__init__…   s°   € ØˆŒ	Ü�~‰~˜d FÑ?Ð.>Ñ?ˆä×Ñ˜tÑ8Ð'7Ñ8ˆØ	�‰�ŒÜ�t˜ZÔ(Ü×-Ñ-Ø9¸DÑ@ñà"ñð ñ  §¢Ü×-Ñ-Ø:Ø—/‘/ "Ñ%ñ&ñð #ñð ð !,ˆ|r   c                 ó`  — g }| j                   ddd…   }| j                  ddd…   }| j                  ddd…   }| j                  ddd…   }| j                  r#|j                  d|j                  d«      z   «       |D ]‹  }|r|j                  |›d|›�«       Œ|r]|j                  d«      }|€|j                  |«       ŒC|j                  |›dt        j                  |«      j                  «       ›�«       Œ{|j                  |«       Œ� | j                  r#|j                  d|j                  d«      z   «       |D ]`  }|s|s|j                  |«       Œ|j                  d«      }|j                  |›dt        j                  |«      j                  «       ›�«       Œb |j                  «        |S )aE  Return the argument declarations of this FunctionDecl as a printable
        list.

        By default the return value is appropriate for writing in a ``def``;
        set `as_call` to true to build arguments to be passed to the function
        instead (assuming locals with the same names as the arguments exist).
        Nr;   z**r   ú=Ú*)ÚargnamesrQ   ÚdefaultsÚ
kwdefaultsrP   ÚappendÚpopr   ÚExpressionGeneratorÚvalueÚvarargsÚreverse)	r   Úas_callÚ	namedeclsrV   rQ   rW   rX   ÚnameÚdefaults	            r   Úget_argument_expressionsz%FunctionDecl.get_argument_expressions—   s–  € ð ˆ	ð —=‘=¡ 2 Ñ&ˆØ—_‘_¡T r TÑ*ˆ
Ø—=‘=¡ 2 Ñ&ˆØ—_‘_¡T r TÑ*ˆ
ð �;Š;Ø×Ñ˜T J§N¡N°1Ó$5Ñ5Ô6àò 	'ˆDñ Ø× Ñ ªD±$Ð!7Õ8ÙØ$Ÿ.™.¨Ó+�Ø�?ð ×$Ñ$ TÕ*à×$Ñ$â¤×!=Ñ!=¸gÓ!F×!LÑ!LÔ!NðPõð
 × Ñ  Õ&ð#	'ð( �<Š<Ø×Ñ˜S 8§<¡<°£?Ñ2Ô3àò 	ˆDÙ™hØ× Ñ  Õ&à"Ÿ,™, q›/�Ø× Ñ âœX×9Ñ9¸'ÓB×HÑHÔJðLõð	ð 	×ÑÔØÐr   c                 óX   — t        | j                  «      t        | j                  «      z   S )N)ÚtuplerV   rQ   )r   s    r   ÚallargnameszFunctionDecl.allargnamesÐ   s   € ä�T—]‘]Ó#¤e¨D¯O©OÓ&<Ñ<Ð<r   N)T)F)r    r!   r"   r#   r   rc   Úpropertyrf   r$   r   r   rK   rK   ‚   s$   „ Ùóó$7ðr ñ=ó ñ=r   rK   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚFunctionArgsz.the argument portion of a function declarationc                 ó,   •— t        ‰| �  d|z  fi |¤Ž y )Nzdef ANON(%s):pass)rC   r   )r   r   rP   rF   s      €r   r   zFunctionArgs.__init__Ø   s   ø€ Ü‰ÑÐ,¨tÑ3Ñ>°vÓ>r   rG   rI   s   @r   ri   ri   Õ   s   ø„ Ù8÷?ð ?r   ri   )
r#   r+   Úmakor   r   r   r&   r/   rK   ri   r$   r   r   ú<module>rl      sR   ðñ5ó 
å Ý ÷*ñ *÷Zñ ô*-P�Zô -P÷`P=ñ P=ôf?�<õ ?r   