Ë
    øÿæiò  ã                   ó�   — 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„ Zy)Ú
PythonCodez<represents information about a string containing Python codec                 ó  — || _         t        «       | _        t        «       | _        t	        |t
        «      r&t        j                  |j                  «       dfi |¤Ž}n|}t        j                  | fi |¤Ž}|j                  |«       y )NÚexec)ÚcodeÚsetÚdeclared_identifiersÚundeclared_identifiersÚ
isinstanceÚstrr   ÚparseÚlstripÚFindIdentifiersÚvisit©Úselfr	   Úexception_kwargsÚexprÚfs        ú]/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mako/ast.pyÚ__init__zPythonCode.__init__   so   € ØˆŒ	ô %(£EˆÔ!ô '*£eˆÔ#ô �dœCÔ Ü—>‘> $§+¡+£-°ÑLÐ;KÑL‰DàˆDä×$Ñ$ TÑ>Ð-=Ñ>ˆØ	�‰��ó    N©Ú__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   s        r   r   zArgumentList.__init__6   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"   2   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v r|dz   }nJ|dk(  r|d	z   }n?|d
v r	d|z   dz   }n2|dk(  r	d|z   dz   }n$|dk(  r|dz   }nt	        j
                  d|z  fi |¤Ž‚t        ‰| �$  |fi |¤Ž y )Nz^(\w+)(?:\s+(.*?))?:\s*(#|$)z0Fragment '%s' is not a partial control statementé   é   é   )ÚforÚifÚwhileÚpassÚtryzpass
except:pass)ÚelifÚelsezif False:pass
Úexceptz	try:pass
Úwithz!Unsupported control keyword: '%s')
r'   r(   ÚstripÚSr   ÚCompileExceptionÚgroupÚstartÚsuperr   )r   r	   r   ÚmÚkeywordr   Ú	__class__s         €r   r   zPythonFragment.__init__U   s  ø€ Ü�H‰HÐ4°d·j±j³lÄBÇDÁDÓIˆÙÜ×-Ñ-ØBÀTÑIñà"ñð ð �7‰7�1Œ:Ø˜˜!Ÿ'™' !›*Ð%ˆDØŸ'™' ! Q›-‰ˆ�$ØÐ,Ñ,Ø˜&‘=‰DØ˜ÒØÐ-Ñ-‰DØÐ(Ñ(Ø$ tÑ+¨fÑ4‰DØ˜Ò Ø $Ñ&¨Ñ/‰DØ˜ÒØ˜&‘=‰Dä×-Ñ-Ø3°gÑ=ñà"ñð ô 	‰Ñ˜Ñ2Ð!1Ó2r   ©r   r   r   r   r   Ú__classcell__©rA   s   @r   r+   r+   H   s   ø„ ñ	÷3ð 3r   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 hereéÿÿÿÿ)
r	   r   r   Ú	ParseFuncr   Úhasattrr   r;   ÚkwargsÚ
kwargnames)r   r	   Úallow_kwargsr   r   r   s         r   r   zFunctionDecl.__init__u   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).
        NrI   z**r   Ú=Ú*)ÚargnamesrM   ÚdefaultsÚ
kwdefaultsrL   ÚappendÚpopr   ÚExpressionGeneratorÚvalueÚvarargsÚreverse)	r   Úas_callÚ	namedeclsrR   rM   rS   rT   Ú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)ÚtuplerR   rM   )r   s    r   ÚallargnameszFunctionDecl.allargnamesÀ   s   € ä�T—]‘]Ó#¤e¨D¯O©OÓ&<Ñ<Ð<r   N)T)F)r   r   r   r   r   r_   Úpropertyrb   r    r   r   rF   rF   q   s$   „ áóó$7ðr ñ=ó ñ=r   rF   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)r>   r   )r   r	   rL   rA   s      €r   r   zFunctionArgs.__init__É   s   ø€ Ü‰ÑÐ,¨tÑ3Ñ>°vÓ>r   rB   rD   s   @r   re   re   Å   s   ø„ á8÷?ð ?r   re   )
r   r'   Úmakor   r   r   r"   r+   rF   re   r    r   r   Ú<module>rh      sP   ðñ5ó 
å Ý ÷ñ ÷Dñ ô,&3�Zô &3÷RQ=ñ Q=ôh?�<õ ?r   