§
    ÛóÉ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	dS )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dS )Ú
PythonCodez<represents information about a string containing Python coder   c                 óª  — || _         t          ¦   «         | _        t          ¦   «         | _        t	          |t
          ¦  «        rg|                     ¦   «         }||d t          |¦  «        t          |¦  «        z
  …                              d¦  «        z  }t          j
        |dfd|i|¤Ž}n|}t          j        | fi |¤Ž}|                     |¦  «         d S )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          úk/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/mako/ast.pyÚ__init__zPythonCode.__init__   sá   € ØˆŒ	õ %(¡E¤EˆÔ!õ '*¡e¤eˆÔ#õ �d�CÑ Ô ð 	Ø—{’{‘}”}ˆHð
 ˜TÐ"=¥C¨¡I¤Iµ°H±´Ñ$=Ð"=Ô>×DÒDÀTÑJÔJÑJˆMå”>ØØðð ð ,ðð #ð	ð ˆDˆDð ˆDåÔ$ TÐ>Ð>Ð-=Ð>Ð>ˆØ	�Š�‰Œˆˆˆó    N)r   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s.   € € € € € ØFÐFð'ð 'ð 'ð 'ð 'ð 'r   r   c                   ó   — e Zd ZdZd„ ZdS )ÚArgumentListzBparses a fragment of code as a comma-separated list of expressionsc                 ó|  — g | _         g | _        t          ¦   «         | _        t          ¦   «         | _        t          |t          ¦  «        rCt          j        d|¦  «        rt          j        d|¦  «        s|dz  }t          j
        |dfi |¤Ž}n|}t          j        | t          fi |¤Ž}|                     |¦  «         d S )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ˆÔ!Ý&)¡e¤eˆÔ#Ý�d�CÑ Ô ð 	ÝŒx˜˜tÑ$Ô$ð ­R¬X°hÀÑ-EÔ-Eð ð ˜‘�Ý”> $¨ÐCÐCÐ2BÐCÐCˆDˆDàˆDåÔ˜t¥ZÐDÐDÐ3CÐDÐDˆØ	�Š�‰Œˆˆˆr   Nr   r$   r   r   r&   r&   =   s)   € € € € € ØLÐ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|                     ¦   «         t           j        ¦  «        }|st	          j        d|z  fi |¤Ž‚|                     d¦  «        r|d |                     d¦  «        …         }|                     dd¦  «        \  }}d}|dv r|dz   }nM|d	k    r|d
z   }nA|dv rd|z   dz   }d}n2|dk    rd|z   dz   }d}n!|dk    r|dz   }nt	          j        d|z  fi |¤Ž‚ t          ¦   «         j	        |fd|i|¤Ž d S )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__^   sz  ø€ ÝŒHÐ4°d·j²j±l´lÅBÄDÑIÔIˆØð 	ÝÔ-ØBÀTÑIðð à"ðð ð ð �7Š7�1‰:Œ:ð 	&Ø˜˜!Ÿ'š' !™*œ*˜Ô%ˆDØŸš  1™œ‰ˆ�ð
 ˆàÐ,Ð,Ð,Ø˜&‘=ˆDˆDØ˜ÒÐØÐ-Ñ-ˆDˆDØÐ(Ð(Ð(Ø$ tÑ+¨fÑ4ˆDØˆMˆMØ˜Ò Ð Ø $Ñ&¨Ñ/ˆDØˆMˆMØ˜ÒÐØ˜&‘=ˆDˆDåÔ-Ø3°gÑ=ðð à"ðð ð ð 	�‰ŒÔ˜ÐOÐO¨]ÐOÐ>NÐOÐOÐOÐOÐOr   ©r    r!   r"   r#   r   Ú__classcell__©rF   s   @r   r/   r/   R   sK   ø€ € € € € ð	ð 	ð!Pð !Pð !Pð !Pð !Pð !Pð !Pð !Pð !Pr   r/   c                   ó8   — e Zd ZdZdd„Zd	d„Zed„ ¦   «         ZdS )
ÚFunctionDeclzfunction declarationTc                 ó(  — || _         t          j        |dfi |¤Ž}t          j        | fi |¤Ž}|                     |¦  «         t          | d¦  «        st          j        d|z  fi |¤Ž‚|s'| j        r"t          j        d| j	        d         z  fi |¤Ž‚d S d S )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Ð8Ð'7Ð8Ð8ˆØ	�Š�‰ŒˆÝ�t˜ZÑ(Ô(ð 	ÝÔ-Ø9¸DÑ@ðð à"ðð ð ð ð 	 ¤ð 	ÝÔ-Ø:Ø”/ "Ô%ñ&ðð ð #ðð ð ð	ð 	ð 	ð 	r   Fc                 ó¨  — g }| j         ddd…         }| j        ddd…         }| j        ddd…         }| j        ddd…         }| j        r+|                     d|                     d¦  «        z   ¦  «         |D ]¢}|r|                     |›d|›�¦  «         Œ|rl|                     d¦  «        }|€|                     |¦  «         ŒN|                     |›dt          j        |¦  «         	                    ¦   «         ›�¦  «         Œ�|                     |¦  «         Œ£| j
        r+|                     d|                     d¦  «        z   ¦  «         |D ]o}|s|s|                     |¦  «         Œ|                     d¦  «        }|                     |›dt          j        |¦  «         	                    ¦   «         ›�¦  «         Œp|                     ¦   «          |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 T r TÔ*ˆ
Ø”=   2 Ô&ˆØ”_ T T r TÔ*ˆ
ð Œ;ð 	7Ø×Ò˜T J§N¢N°1Ñ$5Ô$5Ñ5Ñ6Ô6Ð6àð 	'ð 	'ˆDð ð 'Ø× Ò ¨D¨D¨D°$°$Ð!7Ñ8Ô8Ð8Ð8Øð 'Ø$Ÿ.š.¨Ñ+Ô+�Ø�?ð ×$Ò$ TÑ*Ô*Ð*Ð*à×$Ò$à˜4˜4¥Ô!=¸gÑ!FÔ!F×!LÒ!LÑ!NÔ!NÐ!NðPñô ð ð ð
 × Ò  Ñ&Ô&Ð&Ð&ð Œ<ð 	4Ø×Ò˜S 8§<¢<°¡?¤?Ñ2Ñ3Ô3Ð3àð 	ð 	ˆDØð ˜hð Ø× Ò  Ñ&Ô&Ð&Ð&à"Ÿ,š, q™/œ/�Ø× Ò à�t�t�XÔ9¸'ÑBÔB×HÒHÑJÔJÐJðLñô ð ð ð
 	×ÒÑÔÐØÐr   c                 óT   — t          | j        ¦  «        t          | j        ¦  «        z   S )N)ÚtuplerV   rQ   )r   s    r   ÚallargnameszFunctionDecl.allargnamesÐ   s!   € å�T”]Ñ#Ô#¥e¨D¬OÑ&<Ô&<Ñ<Ð<r   N)T)F)r    r!   r"   r#   r   rc   Úpropertyrf   r$   r   r   rK   rK   ‚   s^   € € € € € ØÐðð ð ð ð$7ð 7ð 7ð 7ðr ð=ð =ñ „Xð=ð =ð =r   rK   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚFunctionArgsz.the argument portion of a function declarationc                 óB   •—  t          ¦   «         j        d|z  fi |¤Ž d S )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Ð8ð?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?r   ri   )
r#   r+   Úmakor   r   r   r&   r/   rK   ri   r$   r   r   ú<module>rl      s'  ðð5ð 5ð 
€	€	€	à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð*ð *ð *ð *ð *ñ *ô *ð *ðZð ð ð ð ñ ô ð ð*-Pð -Pð -Pð -Pð -P�Zñ -Pô -Pð -Pð`P=ð P=ð P=ð P=ð P=ñ P=ô P=ð P=ðf?ð ?ð ?ð ?ð ?�<ñ ?ô ?ð ?ð ?ð ?r   