shell bypass 403
�
|��g� � � � d Z ddlZddlmZ ddlmZ G d� d� Z G d� d� Z G d � d
e� Z G d� d� Z G d
� de� Z y)zjutilities for analyzing expressions and blocks of Python
code, as well as generating Python from AST nodes� N)�
exceptions)�pyparserc � � e Zd ZdZd� Zy)�
PythonCodez<represents information about a string containing Python codec � � || _ t � | _ t � | _ t |t
� r&t
j |j � dfi |��}n|}t
j | fi |��}|j |� y )N�exec)�code�set�declared_identifiers�undeclared_identifiers�
isinstance�strr �parse�lstrip�FindIdentifiers�visit��selfr �exception_kwargs�expr�fs �7/opt/hc_python/lib/python3.12/site-packages/mako/ast.py�__init__zPythonCode.__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 Zd ZdZd� Zy)�ArgumentListzBparses a fragment of code as a comma-separated list of expressionsc �j � g | _ g | _ t � | _ t � | _ t |t � rIt j d|� rt j d|� s|dz
}t j |dfi |��}n|}t j | t fi |��}|j |� y )Nz\Sz,\s*$�,r )�codeargs�argsr
r r r
r �re�matchr r � FindTupler r r s r r zArgumentList.__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"