� ���g���&�dZddlZddlZddlmZddlmZddlmZddlmZhd�Zej d��Z ej e��dd �Z Gd �d ej ��ZGd �dej ��ZGd�dej ��ZGd�d��ZdS)zyHandles parsing of Python code. Parsing to AST is done via _ast on Python > 2.5, otherwise the compiler module is used. �N)� _ast_util)�compat)� exceptions)�util>�None�True�False�print�arg�execc ��� tj|d|��S#t$rV}tjdt j��jj�dt j���d|dd��d�fi|��|�d}~wwxYw) zParse an expression into ASTz <unknown>�(z) z (r�2�)N) r�parse� Exceptionr�SyntaxExceptionr� exception_as� __class__�__name__)�code�mode�exception_kwargs�es �]/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/mako/pyparser.pyrr s��� ���t�[�$�7�7�7�� � � � ��(�(��#�%�%�/�8�8�8��#�%�%�%�%��Q�r�T� � � �  � � �� � �� ����� ���s�� A8�AA3�3A8c�p�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z e xZ Z d �Z d �Zd �Zd �Zd �Zd�Zd�ZdS)�FindIdentifiersc �d�d|_d|_t��|_||_||_dS�NF)� in_function�in_assign_targets�set�local_ident_stack�listenerr��selfr$rs r�__init__zFindIdentifiers.__init__2s3�� ���!&���!$����� �� � 0�����c��|js!|jj�|��dS|j�|��dS�N)r r$�declared_identifiers�addr#)r&�names r� _add_declaredzFindIdentifiers._add_declared9sI���� -� �M� .� 2� 2�4� 8� 8� 8� 8� 8� � "� &� &�t� ,� ,� ,� ,� ,r(c�:�|�|j��dSr*)r.r-�r&�nodes r�visit_ClassDefzFindIdentifiers.visit_ClassDef?s�� ���4�9�%�%�%�%�%r(c��|�|j��|j}d|_|jD]}|�|���||_dS�NT)�visit�valuer!�targets)r&r1�in_a�ns r� visit_AssignzFindIdentifiers.visit_AssignBsX�� � � �4�:�����%��!%����� � �A� �J�J�q�M�M�M�M�!%����r(c���|j�|�|j��|j�|�|j��|jD]}|�|���dSr*)r-r.�typer5�body�r&r1� statements r�visit_ExceptHandlerz#FindIdentifiers.visit_ExceptHandlerNsl�� �9� � � � �t�y� )� )� )� �9� � �J�J�t�y� !� !� !��� "� "�I� �J�J�y� !� !� !� !� "� "r(c�2�|�|d��dSr4)�_visit_function)r&r1�argss r� visit_LambdazFindIdentifiers.visit_LambdaVs�� ���T�4�(�(�(�(�(r(c�f�|�|j��|�|d��dSr)r.r-rBr0s r�visit_FunctionDefz!FindIdentifiers.visit_FunctionDefYs4�� ���4�9�%�%�%� ���T�5�)�)�)�)�)r(c��|jr@|jD]6}|�|j��|�|j���7dS|�|��dSr*�r � generatorsr5�target�iter� generic_visit�r&r1�comps r�visit_ListCompzFindIdentifiers.visit_ListComp]�o�� � � %��� &� &��� � �4�;�'�'�'�� � �4�9�%�%�%�%� &� &� � � �t� $� $� $� $� $r(c��|jr@|jD]6}|�|j��|�|j���7dS|�|��dSr*rHrMs r�visit_DictCompzFindIdentifiers.visit_DictCompgrPr(c#�lK�|D].}t|tj��r|jEd{V���*|V��/dSr*)� isinstance�_ast�Tuple�elts)r&rCr s r�_expand_tupleszFindIdentifiers._expand_tuplesos[����� � �C��#�t�z�*�*� ��8�#�#�#�#�#�#�#�#�� � � � �  � r(c�F�|j}d|_|j}|�d�|�|jj��D����|_|r|�|j��n|jD]}|�|���||_||_dS)NTc�,�g|]}t|����S���arg_id��.0r s r� <listcomp>z3FindIdentifiers._visit_function.<locals>.<listcomp>�s�� H� H� H�S�V�C�[�[� H� H� Hr()r r#�unionrXrCr5r=)r&r1�islambda�infr#r9s rrBzFindIdentifiers._visit_functionvs��������� �2��!2�!8�!8� H� H�D�$7�$7�� ��$G�$G� H� H� H�" �" ��� � � �J�J�t�y� !� !� !� !��Y� � ��� � �1� � � � ����!2����r(c���|�|j��|�|j��|jD]}|�|���|jD]}|�|���dSr*)r5rKrJr=�orelser>s r� visit_ForzFindIdentifiers.visit_For�s��� � � �4�9���� � � �4�;������ "� "�I� �J�J�y� !� !� !� !��� "� "�I� �J�J�y� !� !� !� !� "� "r(c�.�t|jtj��r|�|j��dS|jt vrG|j|jjvr6|j|j vr*|jj � |j��dSdSdSdSr*) rT�ctxrU�Storer.�id�reservedr$r+r#�undeclared_identifiersr,r0s r� visit_NamezFindIdentifiers.visit_Name�s��� �d�h�� � +� +� >� � � �t�w� '� '� '� '� '� �G�8� #� #���t�}�A�A�A���t�5�5�5� �M� 0� 4� 4�T�W� =� =� =� =� =� $� #�A�A�5�5r(c���|jD]W}|j�|�|j���$|�|j�d��d���XdS)N�.r)�names�asnamer.r-�split�r&r1r-s r� visit_ImportzFindIdentifiers.visit_Import�sh���J� <� <�D��{�&��"�"�4�;�/�/�/�/��"�"�4�9�?�?�3�#7�#7��#:�;�;�;�;�  <� <r(c���|jD]`}|j�|�|j���$|jdkrt j di|j���|�|j���adS)N�*��'import *' is not supported, since all identifier names must be explicitly declared. Please use the form 'from <modulename> import <name1>, <name2>, ...' instead.)rw)rprqr.r-r�CompileExceptionrrss r�visit_ImportFromz FindIdentifiers.visit_ImportFrom�s����J� .� .�D��{�&��"�"�4�;�/�/�/�/���c�!�!� �1�$��� �+� ����"�"�4�9�-�-�-�-� .� .r(N)r� __module__� __qualname__r'r.r2r:r@rDrFrO� visit_SetComp�visit_GeneratorExprRrXrBrfrmrtryr[r(rrr1s������1�1�1�-�-�-� &�&�&� &� &� &�"�"�"�)�)�)�*�*�*�%�%�%�*8�7�M�&�%�%�%����3�3�3�,"�"�"� >� >� >�<�<�<� .� .� .� .� .r(rc��eZdZd�Zd�ZdS)� FindTuplec �0�||_||_||_dSr*)r$r� code_factory)r&r$r�rs rr'zFindTuple.__init__�s�� �� � 0���(����r(c��|jD]�}|j|fi|j��}|jj�|��|jj�t|�������|jj }|� |j ��|j_ |jj }|� |j ��|j_ ��dSr*) rWr�rr$�codeargs�appendrC�ExpressionGeneratorr6r+rarl)r&r1r9�p�ldi�luis r� visit_TuplezFindTuple.visit_Tuple�s����� � �A�!��!�!�=�=�t�'<�=�=�A� �M� "� )� )�!� ,� ,� ,� �M� � %� %�&9�!�&<�&<�&B�&B�&D�&D� E� E� E��-�4�C�14����&�2�2�D�M� .��-�6�C�36�9�9��(�4�4�D�M� 0� 0� � r(N)rrzr{r'r�r[r(rrr�s2������)�)�)� � � � � r(rc��eZdZd�Zd�ZdS)� ParseFuncc �"�||_||_dSr*)r$rr%s rr'zParseFunc.__init__�s�� �� � 0����r(c� �|j|j_d�|jjD��}|jjr$|�|jjj��d�|jjD��}|jjr$|�|jjj��||j_ |jj |j_ ||j_ |jj |j_ |jj|j_|jj|j_dS)Nc�,�g|]}t|����Sr[r\r^s rr`z/ParseFunc.visit_FunctionDef.<locals>.<listcomp>�s��:�:�:�C�F�3�K�K�:�:�:r(c�,�g|]}t|����Sr[r\r^s rr`z/ParseFunc.visit_FunctionDef.<locals>.<listcomp>�s��B�B�B�c�f�S�k�k�B�B�Br()r-r$�funcnamerC�varargr�r � kwonlyargs�kwarg�argnames�defaults� kwargnames� kw_defaults� kwdefaults�varargs�kwargs)r&r1r�r�s rrFzParseFunc.visit_FunctionDef�s���!%��� ��:�:�4�9�>�:�:�:�� �9� � 2� �O�O�D�I�,�0� 1� 1� 1�B�B�T�Y�-A�B�B�B� � �9�?� 3� � � �d�i�o�1� 2� 2� 2�!)�� ��!%��!3�� ��#-�� � �#'�9�#8�� � � $� � 0�� ��#�y��� ���r(N)rrzr{r'rFr[r(rr�r��s2������1�1�1�/�/�/�/�/r(r�c��eZdZd�Zd�ZdS)r�c�l�tjd��|_|j�|��dS)Nz )r�SourceGenerator� generatorr5)r&�astnodes rr'zExpressionGenerator.__init__�s0��"�2�7�;�;��� ����W�%�%�%�%�%r(c�@�d�|jj��S)N�)�joinr��result)r&s rr6zExpressionGenerator.value�s���w�w�t�~�,�-�-�-r(N)rrzr{r'r6r[r(rr�r��s2������&�&�&�.�.�.�.�.r(r�)r )�__doc__�operatorrU�makorrrrrk� attrgetterr]� restore__astr� NodeVisitorrrr�r�r[r(r�<module>r�su���� ���� � � � ������������������������� .� -� -�� �� �U� #� #�����$��������"E.�E.�E.�E.�E.�i�+�E.�E.�E.�P����� �%����*/�/�/�/�/� �%�/�/�/�..�.�.�.�.�.�.�.�.�.r(
Memory